总目录详见https://blog.csdn.net/mrcrack/article/details/84471041
做题原则,找不到测评地址的题不做。2018-11-28
重走长征路---OI每周刷题记录---5月3日 2014
本周共计32题+题
测评地址:
二分+分块:
1.「bzoj2453」维护队列
2.「bzoj2120」数颜色 //在线测评地址https://www.luogu.org/problemnew/show/P1903
容斥原理:
3.「bzoj2393」Cirno的完美算数教室
4.「bzoj1853」[Scoi2010]幸运数字
费用流/zkw费用流:
5.「bzoj2245」[SDOI2011]工作安排
6.「bzoj1070」[SCOI2007]修车
费用流:
7.「bzoj2879」[Noi2012]美食节
裴蜀定理:
8.「bzoj2257」[Jsoi2009]瓶子和燃料
bfs+期望:
9.NOI2005聪聪和可可
贪心:
10.「cf425A」Sereja and Swaps
二分+暴力:
11.「cf425D」Sereja and Squares
dp+矩阵乘法:
12.「bzoj2326」[HNOI2011]数学作业
kruskal+树上倍增:
13.「bzoj1977」[BeiJing2010组队]次小生成树 Tree
树状数组+主席树:
14.「bzoj1901」Zju2112 Dynamic Rankings
期望:
15.「bzoj3450」JoyOI1952 Easy
16.「bzoj1426」收集邮票
splay:
17.NOI2005维修数列
树链剖分:
18.「bzoj1984」月下“毛景树”
随机化:
19.「bzoj2396」神奇的矩阵
线段树:
20.「bzoj1858」[Scoi2010]序列操作
21.「bzoj3212」Pku3468 A Simple Problem with Integers
最小割:
22.「bzoj2768」[JLOI2010]冠军调查
23.「bzoj3275」Number
背包dp:
24.「bzoj2748」[HAOI2012]音量调节
链表启发式合并:
25.「bzoj1483」[HNOI2009]梦幻布丁
二分:
26.「bzoj1863」[Zjoi2006]trouble 皇帝的烦恼
欧拉图:
27.一笔画成
dp:
28.[HNOI2004]打鼹鼠
规律:
29.「bzoj1432」[ZJOI2009]Function
模拟:
30.「cf427A」Police Recruits
31.「cf427B」Prison Transfer
强连通分量:
32.「cf427C」Checkposts
题解:
二分+分块:
1.「bzoj2453」维护队列
2.「bzoj2120」数颜色
//P1903 [国家集训队]数颜色 / 维护队列
//在线测评地址https://www.luogu.org/problemnew/show/P1903
//带修莫队(可持久化莫队),详见https://www.cnblogs.com/Paul-Guderian/p/6933799.html
//样例通过,提交Compile Error,Dev-C++4.9.9.2真不可信,这种情况在比赛中是要爆0的
//发现 #include <cstring>未加
//添加头文件,提交10分,测试点2-10WA。
//静态排查代码,发现char cmd[5];//此处写成 char cmd[5],n,m;笔误
//修改,提交AC。一处小小的笔误,造成如此严重的失分。
//以下为AC代码。2019-2-15 10:57
//该题数据核心是颜色,cnt[x]统计的是tag时间戳,[left,right]区间内x颜色的数量
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
using namespace std;
#define maxn 50100
struct Query{
int left,right,id,tag;//tag 时间戳
}q[maxn];
struct Replace{
int pos,New,Old;
}r[maxn];
int color[maxn],cnt[maxn*20],ans[maxn],now[maxn],block[maxn];//color[x] x位置的颜色 cnt[x] x颜色的数量 ans[i]序号为i的答案。now[x]当前x位置的颜色
int ANS=0,left=1,right=0,tag=0,qc=0,rt=0;//qc 即q_count q的数量 rt 即r_time r对应的时间
int x,y;
char cmd[5];//此处写成 char cmd[5],n,m;笔误
int n,m;
int cmp(Query a,Query b){
return block[a.left]==block[b.left]?(block[a.right]==block[b.right]?a.tag<b.tag:block[a.right]<block[b.right]):block[a.left]<block[b.left];
}
void modify(int clr,int delta){//clr颜色,delta变化量
cnt[clr]+=delta;
if(delta>0)ANS+=cnt[clr]==1;
else if(delta<0)ANS-=cnt[clr]==0;
}
void time(int pos,int clr){//时间处理,要么处理昨天,要么处理明天 pos位置,clr颜色
if(left<=pos&&pos<=right)modify(clr,1),modify(color[pos],-1);
color[pos]=clr;
}
int main(){
int i,unit;
memset(cnt,0,sizeof(cnt));
scanf("%d%d",&n,&m);
unit=(int)pow(n,2.0/3);
for(i=1;i<=n;i++)scanf("%d",&color[i]),now[i]=color[i],block[i]=i/unit;
for(i=1;i<=m;i++){
scanf("%s%d%d",cmd,&x,&y);
if(cmd[0]=='Q')q[++qc]=(Query){x,y,qc,rt};
else if(cmd[0]=='R')r[++rt]=(Replace){x,y,now[x]},now[x]=y;
}
sort(q+1,q+1+qc,cmp);
for(i=1;i<=qc;i++){
while(tag<q[i].tag)time(r[tag+1].pos,r[tag+1].New),tag++;
while(tag>q[i].tag)time(r[tag].pos,r[tag].Old),tag--;
while(left<q[i].left)modify(color[left],-1),left++;
while(left>q[i].left)modify(color[left-1],1),left--;
while(right<q[i].right)modify(color[right+1],1),right++;
while(right>q[i].right)modify(color[right],-1),right--;
ans[q[i].id]=ANS;
}
for(i=1;i<=qc;i++)printf("%d\n",ans[i]);
return 0;
}
容斥原理:
3.「bzoj2393」Cirno的完美算数教室
4.「bzoj1853」[Scoi2010]幸运数字
费用流/zkw费用流:
5.「bzoj2245」[SDOI2011]工作安排
6.「bzoj1070」[SCOI2007]修车
费用流:
7.「bzoj2879」[Noi2012]美食节
裴蜀定理:
8.「bzoj2257」[Jsoi2009]瓶子和燃料
bfs+期望:
9.NOI2005聪聪和可可
贪心:
10.「cf425A」Sereja and Swaps
二分+暴力:
11.「cf425D」Sereja and Squares
dp+矩阵乘法:
12.「bzoj2326」[HNOI2011]数学作业
kruskal+树上倍增:
13.「bzoj1977」[BeiJing2010组队]次小生成树 Tree
树状数组+主席树:
14.「bzoj1901」Zju2112 Dynamic Rankings
期望:
15.「bzoj3450」JoyOI1952 Easy
16.「bzoj1426」收集邮票
splay:
17.NOI2005维修数列
树链剖分:
18.「bzoj1984」月下“毛景树”
随机化:
19.「bzoj2396」神奇的矩阵
线段树:
20.「bzoj1858」[Scoi2010]序列操作
21.「bzoj3212」Pku3468 A Simple Problem with Integers
最小割:
22.「bzoj2768」[JLOI2010]冠军调查
23.「bzoj3275」Number
背包dp:
24.「bzoj2748」[HAOI2012]音量调节
链表启发式合并:
25.「bzoj1483」[HNOI2009]梦幻布丁
二分:
26.「bzoj1863」[Zjoi2006]trouble 皇帝的烦恼
欧拉图:
27.一笔画成
dp:
28.[HNOI2004]打鼹鼠
规律:
29.「bzoj1432」[ZJOI2009]Function
模拟:
30.「cf427A」Police Recruits
31.「cf427B」Prison Transfer
强连通分量:
32.「cf427C」Checkposts