AC日记——大爷的字符串题 洛谷 P3709
思路:
莫队,需开O2,不开50;
代码:
- #include <bits/stdc++.h>
- using namespace std;
- #define maxn 200005
- int bel[maxn],blo;
- struct QueryType {
- int l,r,id;
- bool operator<(const QueryType pos)const
- {
- if(bel[l]==bel[pos.l]) return r<pos.r;
- else return bel[l]<bel[pos.l];
- }
- };
- struct QueryType qu[maxn];
- int num[maxn],cnt[maxn],ai[maxn],n,m;
- int bi[maxn],size,ans[maxn],now;
- inline void in(int &now)
- {
- char Cget=getchar();now=;
- while(Cget>''||Cget<'') Cget=getchar();
- while(Cget>=''&&Cget<='')
- {
- now=now*+Cget-'';
- Cget=getchar();
- }
- }
- inline void updata(int x,bool di)
- {
- x=ai[x];
- if(di)
- {
- if(num[x]==now) now++;
- cnt[num[x]]--,num[x]++,cnt[num[x]]++;
- }
- else
- {
- if(num[x]==now&&cnt[num[x]]==) now--;
- cnt[num[x]]--,num[x]--,cnt[num[x]]++;
- }
- }
- int main()
- {
- in(n),in(m),blo=sqrt(n);
- for(int i=;i<=n;i++)
- {
- in(ai[i]);
- bi[i]=ai[i];
- bel[i]=(i+)/blo;
- }
- sort(bi+,bi+n+);
- size=unique(bi+,bi+n+)-bi-;
- for(int i=;i<=n;i++)ai[i]=lower_bound(bi+,bi+size+,ai[i])-bi;
- for(int i=;i<=m;i++)in(qu[i].l),in(qu[i].r),qu[i].id=i;
- sort(qu+,qu++m);int l=,r=;
- for(int no=;no<=m;no++)
- {
- while(r<qu[no].r) updata(++r,true);
- while(r>qu[no].r) updata(r--,false);
- while(l>qu[no].l) updata(--l,true);
- while(l<qu[no].l) updata(l++,false);
- ans[qu[no].id]=now;
- }
- for(int i=;i<=m;i++) printf("%d\n",-ans[i]);
- return ;
- }
AC日记——大爷的字符串题 洛谷 P3709的更多相关文章
- AC日记——校门外的树 洛谷 P1047
题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0,1,2,……,L,都种 ...
- AC日记——妖梦拼木棒 洛谷 P3799
妖梦拼木棒 思路: 神特么题: 代码: #include <bits/stdc++.h> using namespace std; #define mod 1000000007LL int ...
- AC日记——小B的询问 洛谷 P2709
小B的询问 思路: 水题: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 50005 #define ll ...
- AC日记——Car的旅行路线 洛谷 P1027
Car的旅行路线 思路: 这题不难,就是有点恶心: 而且,请认真读题目(就是题目卡死劳资): 来,上代码: #include <cmath> #include <cstdio> ...
- AC日记——最小路径覆盖问题 洛谷 P2764
题目描述 «问题描述: 给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V 中每个顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖.P 中路径可以从V 的任何一个顶点开 ...
- AC日记——飞行员配对方案问题 洛谷 P2756
题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其中1 名是英国飞行员,另1名是外 ...
- AC日记——无线网络发射器选址 洛谷 P2038
题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129 条东西向街道和129 条南北向街道所形成的网格状,并且相邻 ...
- AC日记——小A的糖果 洛谷七月月赛
小A的糖果 思路: for循环贪心: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 #defi ...
- AC日记——矩阵取数游戏 洛谷 P1005
矩阵取数游戏 思路: dp+高精: 代码: #include <bits/stdc++.h> using namespace std; #define ll long long struc ...
随机推荐
- ubuntu16.04装chrome
--更简单的方法是先下载chromium浏览器,这是不禁止的,然后打开chromium搜索chrome,chrome的官网下载即可 //安装好后,终端输入google-chrome即可打开 另一种 ...
- Service学习
一.采用startService方式开启服务 1.写一个服务类 public class PhoneService extends Service { private static final Str ...
- [net tools]nethogs
nethogs 按照从大到小排列占用网络流量的进程 还可以用jnettop察看,总的流量
- IAR ------ 扩展关键字__weak
__weak作用:允许多个同名函数同时存在,但是最多只有一个没有__weak修饰.如果有non-weak函数(没__weak修饰),则此函数被使用,否则从__weak修饰的函数中选择其中一个. 下图来 ...
- ExecuteNonQuery,ExecuteReader,ExecuteScalar 区别
ExecuteNonQuery方法 :执行非查询SQL操作,包括增insert.删delete.改update ExcuteReader方法 :执行查询,返回DataReader,通过DataRead ...
- ListView - SimpleAdapter 行间颜色交替(转)
一.概述 通过扩展SimpleAdapter,来改变显示外观.因为要每行的显示颜色,首先要获得每行的View实例,然后调用setBackgroundColor函数设置. 二.实例 [效果] [代码片段 ...
- linux包安装,解压,压缩,包管理,环境变量
linux 包安装,解压,压缩,包管理 centoscentos上有系统包管理器yum yum的配置一般有两种方式,一种是直接配置/etc目录下的yum.conf文件,另外一种是在/etc/yum.r ...
- PAT (Advanced level) 1003. Emergency (25) Dijkstra
As an emergency rescue team leader of a city, you are given a special map of your country. The map s ...
- 元类编程--__getattr__, __getattribute__
#__getattr__, __getattribute__ #__getattr__ 就是在查找不到属性的时候调用 from datetime import date class User: def ...
- Windows、Linux及Mac查看端口和杀死进程
本文介绍如何在Windows.Linux及Mac下查看端口和杀死进程. Windows下查看端口和杀死进程 查看占用端口号的进程号:netstat –ano | findstr "指定端口号 ...