首页 > 其他 > 详细

P4310 绝世好题

时间:2019-10-09 23:43:47      阅读:96      评论:0      收藏:0      [点我收藏+]

这题貌似在某叶姓教练员的网站上做过。。

好吧实际上正解是位运算的DP,不是很好做,但是!!骗分大法好啊,暴力枚举,每一次至多比当前处理出来的答案多1,如果已经有答案是当前答案+1,break跳出循环,就可以实实在在地卡过100啦

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<queue>
 6 #include<stack>
 7 #include<deque>
 8 #include<algorithm>
 9 #define ll long long
10 using namespace std;
11 const int oo=0x3f3f3f3f;
12 const int N=100005;
13 
14 int n,maxn=1;
15 int a[N],f[N];
16 
17 int Min(int a,int b){return a<b?a:b;}
18 int Max(int a,int b){return a>b?a:b;}
19 int Abs(int a){return a>0?a:-a;}
20 
21 int get(){
22     char zy=getchar();
23     int z=1,y=0;
24     while(zy>9||zy<0){
25         if(zy==-) z=-1;
26         zy=getchar();
27     }
28     while(zy>=0&&zy<=9){
29         y=(y<<1)+(y<<3)+zy-0;
30         zy=getchar();
31     }
32     return z*y;
33 }
34 
35 int main(){
36     n=get();
37     for(int i=1;i<=n;i++){
38         a[i]=get();
39         f[i]=1;
40     }
41     for(int i=2;i<=n;i++){
42         for(int j=i-1;j>=1;j--){
43             if(f[i]>maxn) break;
44             if(a[i]&a[j]){
45                 f[i]=Max(f[i],f[j]+1);
46             }
47         }
48         maxn=Max(maxn,f[i]);
49     }
50     printf("%d\n",maxn);
51     return 0;
52 }

 

P4310 绝世好题

原文:https://www.cnblogs.com/hahaha2124652975/p/11644835.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!