重走长征路---OI每周刷题记录---5月3日 2014

总目录详见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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值