重走长征路---OI每周刷题记录---11月4日 2013

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

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

重走长征路---OI每周刷题记录---11月4日  2013

本周共计22题

测评地址:

dp

1.免费馅饼

2.石子合并

3.拦截导弹

4.能量项链

5.找雷

并查集

6.亲戚

贪心

7.观光公交

heap

8.合并果子

模拟

9.寻宝

hash

10.方程的解数

数论

11.数列

12.同余方程

13.多项式系数

dfs

14.选数

高精度

15.回文数

模拟

16.现在几点钟

17.选择客栈

18.机器翻译

19.计算器的改良

20.分数线划定

进制转换

21.进制

枚举

22.一元三次方程求解
 

题解:

dp

1.免费馅饼

2.石子合并

3.拦截导弹

//1407: 拦截导弹
//在线测评地址http://218.5.5.242:9018/JudgeOnline/problem.php?id=1407 
//该题的难点在于,n<=100000,O(n^2)算法无法AC 
//只能采用O(nlogn)算法 
//二分。
//样例通过,提交83%,答案错误,翻看之前的编码https://blog.csdn.net/mrcrack/article/details/84928209
//中的//P1020 导弹拦截
//仔细想想,原来的写法确实有问题,修改,提交AC。2019-1-17 21:02
//原来的写法,极端情况,二分在f[1],f[2]结束
//现在的写法,极端情况,在f[0],f[1]结束。 
#include <stdio.h>
#define maxn 100100
int f[maxn],ans=0;//f[]是一个递减序列 
int main(){
    int n,h,i,left,right,mid;
    scanf("%d",&n);
    f[0]=100100;//飞行高度不高于10^5
    for(i=1;i<=n;i++){
        scanf("%d",&h);
        if(f[ans]>=h)ans++,f[ans]=h;//漏了此句 f[ans]=h
        else{
            left=0,right=ans;//此处写成left=1//此处left赋值很关键 
            while(left+1<right){
                mid=(left+right)/2;
                if(f[mid]<h)right=mid;
                else left=mid;
            }
            f[right]=h;//此处写成f[left]=h; 
        }
    }
    printf("%d\n",ans);
    return 0;
}

4.能量项链

5.找雷

并查集

6.亲戚

//1073 家族
//在线测评地址http://codevs.cn/problem/1073/
//该题就是一个裸的并查集
//样例很快通过,提交AC. 2019-1-18
#include <stdio.h>
#define maxn 5100
int n,m,p,f[maxn];
int getf(int u){
    if(f[u]==u)return u;
    return f[u]=getf(f[u]);
}
void merge(int u,int v){
    int f1=getf(u),f2=getf(v);
    if(f1!=f2)//左靠
        f[f2]=f1;
}
int main(){
    int i,x,y,f1,f2;
    scanf("%d%d%d",&n,&m,&p);
    for(i=1;i<=n;i++)f[i]=i;
    while(m--){
        scanf("%d%d",&x,&y);
        merge(x,y);
    }
    while(p--){
        scanf("%d%d",&x,&y);
        f1=getf(x),f2=getf(y);
        if(f1==f2)printf("Yes\n");
        else printf("No\n");
    }
    return 0;
}

贪心

7.观光公交

heap

8.合并果子

模拟

9.寻宝

hash

10.方程的解数

数论

11.数列

12.同余方程

13.多项式系数

dfs

14.选数

高精度

15.回文数

模拟

16.现在几点钟

17.选择客栈

18.机器翻译

19.计算器的改良

20.分数线划定

进制转换

21.进制

枚举

22.一元三次方程求解

猜你喜欢

转载自blog.csdn.net/mrcrack/article/details/86503000
今日推荐