公主的朋友

Description

Problem

由于\(Wulala\)在上个问题中的精彩表现,公主认为\(Wulala\)是一个很棒的人,就把\(Wulala\)留在 了\(X\)国。这时正好公主的一位传教士朋友来拜访公主,于是想找\(wulala\)帮忙。

\(X\)国如同一条直线,其中有\(n\)个城市,从东向西分别编号为\(1\)到\(n\)。而他的国家中有\(m\)种宗教, 每个城市一定会有一种信仰的宗教。 有时候有些城市为了获得更多的认可,会派出信仰本城市宗教的传教士前往其他国家。

\(X\)国的传教士都十分厉害,只要是他途经的地方都会改信他所传播的宗教。 传教士们在路上碰到自己宗教的城市自然就不用传教了,所以每 一个传教士在旅行前都会计算自己可以在多少城市停下来(不包括起始的城市)。

而传教士们都是文科僧,数学是很差的,所以他希望\(Wulala\)能帮他计算。可\(Wulala\)数学也不好,但他又不想在公主面前丢脸,你能帮帮他吗?

Input Data

第一行两个整数\(n\),\(m\);
第二行\(n\)个整数第\(i\)个整数代表第ii个城市信仰的宗教;
第三行一个整数 \(T\) 代表传教士的个数;
接下来 \(T\) 行每行两个整数 \(x\),\(y\)代表 \(x\) 城向 \(y\) 城派遣了一个传教士(保证 \(x<y\))

Output Data

输出\(T\)行,第\(i\)行代表第\(i\)个传教士询问的答案

Input / Output Sample

2 2
1 2
2
1 2
1 2
0
1

Data Limit

对于 30%的数据 \(n \le 100000, m \le 10, T \le100\);
对于 60%的数据 \(n \le 100000, m \le 10, T \le 100000\);
对于 100%的数据 \(n \le 100000, m \le 300, T \le 100000\)。

Problem Source

湖南师大附中模拟赛


这又和\(数列分块入门8\)蜜汁相似QAQ

\(^双_经\) $^倍_验 $泛滥成灾啊

这里也不多提,参照\(数列分块入门8\)

代码

#include<bits/stdc++.h>
using namespace std;
#define MAXN 100005int n, m, d, T;
int a[MAXN], b[MAXN], f[500];
bool v[500];int FF( int x ){return v[b[x]] ? f[b[x]] : a[x];
}int fun( int l, int r, int c ){int ans(0);for ( int i = l; i <= r && i <= n; ++i ) ans += FF(i) == c, a[i] = c;return ans;
}int Get( int l, int r, int c ){int ans(0);if ( b[l] == b[r] ){if ( v[b[l]] && f[b[l]] == c ) return r - l + 1;if ( v[b[l]] ){fun( ( b[l] - 1 ) * d + 1, l - 1, f[b[l]] );fun( r + 1, b[l] * d, f[b[l]] );}ans = fun( l, r, c );v[b[l]] = 0;return ans;}if ( v[b[l]] ) fun( ( b[l] - 1 ) * d + 1, l - 1, f[b[l]] );ans += fun( l, b[l] * d, c );v[b[l]] = 0;if ( v[b[r]] ) fun( r + 1, min( b[r] * d, n ), f[b[r]] );ans += fun( ( b[r] - 1 ) * d + 1, r, c );v[b[r]] = 0;for ( int i = b[l] + 1; i <= b[r] - 1; ++i ){if ( !v[i] ){for ( int j = ( i - 1 ) * d + 1; b[j] == i; ++j ) ans += a[j] == c, a[j] = c;v[i] = 1; f[i] = c;} else{if ( f[i] == c ) ans += d;else f[i] = c;}}return ans;
}int main(){scanf( "%d%d", &n, &m );d = (int)sqrt(n);for ( int i = 1; i <= n; ++i ){scanf( "%d", &a[i] );b[i] = ( i - 1 ) / d + 1;}scanf( "%d", &T );while ( T-- ){int l, r;scanf( "%d%d", &l ,&r );printf( "%d\n", Get( l, r, FF(l) ) - 1 );}return 0;
}

数列分块系列目录

数列分块入门1

数列分块入门2

数列分块入门3

数列分块入门4

数列分块入门5

数列分块入门6

数列分块入门7

数列分块入门8

数列分块入门9

蒲公英

公主的朋友 <-

转载于:https://www.cnblogs.com/louhancheng/p/10051228.html

「分块系列」公主的朋友 解题报告相关推荐

  1. 「分块系列」数列分块入门3 解题报告

    数列分块入门3 题意概括 区间加法,区间求前驱. 写在前面 这题的方法与分块2方法极其类似,建议自行解决. 正题 和上一题类似,但是二分不是用来计数的,而是用来求小于c的最大值的.然后对于不完整快,将 ...

  2. 「CTS2019 | CTSC2019」氪金手游 解题报告

    「CTS2019 | CTSC2019」氪金手游 降 智 好 题 ... 考场上签到失败了,没想容斥就只打了20分暴力... 考虑一个事情,你抽中一个度为0的点,相当于把这个点删掉了(当然你也只能抽中 ...

  3. java8 lambda maplist排序_「java8系列」流式编程Stream

    前言 「Java8系列」神秘的Lambda 「Java8系列」神奇的函数式接口 继上两篇之后,本文已经java8系列的第三篇了.本篇文章比较长,但我希望大家都能认真读完.读不完可以先收藏,在找时间读. ...

  4. 「Hudi系列」Hudi查询写入常见问题汇总

    点击上方蓝色字体,选择"设为星标" 回复"面试"获取更多惊喜 八股文教给我,你们专心刷题和面试 阅读本文前必读: 1. 「Apache Hudi系列」核心概念与 ...

  5. android 微信朋友圈图文编辑器,做朋友圈的「集赞机」:微信朋友圈生存手册 Android 篇...

    一年几度的「朋友圈杯旅游.美食.自拍大赛」已接近尾声,这一次你有没有再创佳绩呢?作为一项我国人们「喜闻乐见」的装逼活动,朋友圈状态已经成了判定一个人逼格的重要依据,然而根据我多年的研(zhuang)究 ...

  6. java8堆内存模型_「GC系列」JVM堆内存分代模型及常见的垃圾回收器

    1. 内存分代模型 为什么要说JVM的内存分代模型呢,因为内存分代和垃圾回收器的运行是有关系的. 现在大部分用到的垃圾回收器在逻辑上是分代的,除了G1之外的其他垃圾回收器在逻辑上和物理上都是分代的. ...

  7. hdu 2049 不容易系列之(4)——考新郎 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2049 写这篇解题报告时 我真的很气愤 对自己又一次犯下低级错误改了两个小时 int型的数据居然用%I6 ...

  8. 「NOI2016」循环之美 解题报告

    「NOI2016」循环之美 对于小数\(\frac{a}{b}\),如果它在\(k\)进制下被统计,需要满足要求并且不重复. 不重复我们确保这个分数是最简分数即\((a,b)=1\) 满足要求需要满足 ...

  9. dispatch作用 react_「React系列」手把手带你撸后台系统(Redux与路由鉴权)

    [React系列]手把手带你撸后台系统(Redux与路由鉴权) 来源:https://juejin.im/post/5d9b5ddee51d45781b63b8f7 上一篇我们介绍了系统架构,这一篇将 ...

最新文章

  1. msicuu.exe (msizap.exe),程序的作用
  2. 空间谱专题11:子阵平滑与秩亏缺
  3. android外置sd大小,android 读取外置和内置存储卡路径和大小
  4. 波士顿动力放出新视频:谁都挡不住机器狗开你的门
  5. imap服务器appleimap.163.com没有响应,163smtp
  6. bdf比特数字基金_第四届世界数字经济大会,比特元BTY作为协办方参与
  7. 测试AS3的性能9800粒子
  8. [Android]Log打印
  9. 游戏素材网站推荐!!!
  10. 徐思201771010132《面向对象程序设计(java)》第十周学习总结
  11. 中文论文检索证明怎么开_论文检索证明在哪里弄
  12. Java小白 学习笔记(三)——面向对象
  13. Spring -> Spring中Bean是线程安全的吗
  14. Mybatis - <choose> 标签的用法
  15. 什么是运算计算机科学的基础概念,【软件设计师】笔记一:计算机科学基础知识...
  16. 正则表达式:邮箱匹配
  17. https 被redirect成了http
  18. 如何获取屏幕DPI/PPI并计算A4纸在屏幕的大小
  19. IP数据报中如果不分片,分片标志值是什么?
  20. 【Kotlin】Android-使用WebDAV协议云存储文件(详细)—附demo源码

热门文章

  1. startActivityForResult方法过时
  2. burnintest linux,BURNINTEST-FOR-LINUX-CLI
  3. centos web 访问mysql_centos7 ---搭建mysql主从并用zabbix监控主从状态web实现报警(
  4. 关于Linux虚拟机联网问题
  5. react 打包遇到的问题记录
  6. Python数据分析——Matplotlib数据可视化基础(二)
  7. 今夜では一人で雛祭り    001
  8. 125l放射性同位素标记药物小分子/生物蛋白/抗体/多肽/纳米颗粒材料的应用
  9. Codeforces Round #801 (Div. 2)A~C
  10. QFP PQFP LQFP TQFP封装形式及PCB详解