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

总目录详见https://blog.csdn.net/mrcrack/article/details/84471041

做题原则,找不到测评地址的题不做。2018-11-28

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

本周共计19题+题

测评地址:

网络流:

1.「JoyOI1517」飘飘乎居士的乌龟 

2.「bzoj1458」士兵占领

后缀数组:

3.「bzoj1031」[JSOI2007]字符加密Cipher

线段树

4.「bzoj1593」[Usaco2008 Feb]Hotel 旅馆

dp:

5.「bzoj1037」 [ZJOI2008]生日聚会Party

heap+贪心+链表:

6.「bzoj2288」「POJ Challenge」生日礼物

7.「bzoj1150」[CTSC2007]数据备份Backup

抽屉原理:

8.「poj2356」Find a multiple

lca:

9.「bzoj1787」[Ahoi2008]Meet 紧急集合

贪心:

10.「bzoj2697」特技飞行

中位数:

11.「bzoj3293」 [Cqoi2011]分金币

费用流:

12.「bzoj3280」小R的烦恼

暴力:

13.「bzoj1800」[Ahoi2009]fly 飞行棋

并查集:

14.「bzoj1854」[Scoi2010]游戏   //在线测评地址https://www.luogu.org/problemnew/show/P1640

二分+后缀数组:

15.「poj1743」Musical Theme

kmp+dp+矩阵乘法:

16.「bzoj1009」[HNOI2008]GT考试

模拟:

17.「NOIP模拟赛」机器人

spfa:

18.「NOIP模拟赛」虫洞

dp+矩阵乘法:

19.「NOIP模拟赛」数列

题解:

网络流:

1.「JoyOI1517」飘飘乎居士的乌龟 

2.「bzoj1458」士兵占领

后缀数组:

3.「bzoj1031」[JSOI2007]字符加密Cipher

线段树

4.「bzoj1593」[Usaco2008 Feb]Hotel 旅馆

dp:

5.「bzoj1037」 [ZJOI2008]生日聚会Party

heap+贪心+链表:

6.「bzoj2288」「POJ Challenge」生日礼物

7.「bzoj1150」[CTSC2007]数据备份Backup

抽屉原理:

8.「poj2356」Find a multiple

lca:

9.「bzoj1787」[Ahoi2008]Meet 紧急集合

贪心:

10.「bzoj2697」特技飞行

中位数:

11.「bzoj3293」 [Cqoi2011]分金币

费用流:

12.「bzoj3280」小R的烦恼

暴力:

13.「bzoj1800」[Ahoi2009]fly 飞行棋

并查集:

14.「bzoj1854」[Scoi2010]游戏

//P1640 [SCOI2010]连续攻击游戏
//在线测评地址https://www.luogu.org/problemnew/show/P1640
//感觉很难与并差集联系在一起
//https://blog.csdn.net/QTY2001/article/details/78042179此文思路写得不错,代码也够短,思路摘抄如下
//我们来考虑把属性做边,武器做便。
//如果一个联通块n是树,则能满足n-1个,
//如果有环,则能满足n个。
//我们要把小值并到大值下面,因为优先满足小值,才能满足大值。
//如果能构成一个环,整个联通快就一定满足。
//看了代码,跟踪了数据,弄懂了。
//样例通过,提交AC。2019-4-3
#include <stdio.h>
#include <string.h>
#define maxn 10100
int n,m,f[maxn],vis[maxn];
int min(int a,int b){
    return a<b?a:b;
}
int getf(int u){
    return f[u]==u?u:f[u]=getf(f[u]);
}
int main(){
    int x,y,i,f1,f2;
    memset(vis,0,sizeof(vis));
    scanf("%d",&n),m=min(n,10000),m++;//m++是为了处理环的情况。
    for(i=1;i<=m;i++)f[i]=i;
    for(i=1;i<=n;i++){
        scanf("%d%d",&x,&y);
        f1=getf(x),f2=getf(y);
        if(f1==f2)vis[f1]=1;
        else if(f1<f2)f[f1]=f2,vis[f1]=1;//大的放上面,小的挂下面
        else f[f2]=f1,vis[f2]=1;
    }
    for(i=1;i<=m;i++)
        if(!vis[i]){
            printf("%d\n",i-1);
            break;
        }
    return 0;
}

二分+后缀数组:

15.「poj1743」Musical Theme

kmp+dp+矩阵乘法:

16.「bzoj1009」[HNOI2008]GT考试

模拟:

17.「NOIP模拟赛」机器人

spfa:

18.「NOIP模拟赛」虫洞

dp+矩阵乘法:

19.「NOIP模拟赛」数列
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值