CF #253 div2

2014-06-20 12:07:33

A,hash水过。B的话看到这么小的数据量,必然是暴搜,为了节约时间连剪枝都去了。C,数学公式推导,赛后才A,郁闷(QAQ)。(这场round比较诡异的是,到最后才发现是用小号登的,第一次比赛rank270+让小号rating一下+了159,- -!)

A:

 1 #include <stdio.h>
 2 #include <iostream>
 3 #include <cstring>
 4 #include <cmath>
 5 using namespace std;
 6 
 7 int main(){
 8     int hash[130];
 9     char s[1005];
10     gets(s);
11     memset(hash,0,sizeof(hash));
12     int len = strlen(s);
13     for(int i = 0 ; i < len; ++i){
14         if(s[i] >= 'a' && s[i] <= 'z'){
15             hash[(int)(s[i] - 'a')] = 1;
16         }
17     }
18     int sum = 0;
19     for(int i = 0; i < 130; ++i){
20         if(hash[i] == 1)
21             ++sum;
22     }
23     printf("%d\n",sum);
24     return 0;
25 }

B:

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <cstring>
 4 using namespace std;
 5 
 6 int main(){
 7     char s[1005];
 8     int k,len,maxn = 0,p;
 9     scanf("%s",s);
10     len = strlen(s);
11     scanf("%d",&k);
12     for(int i = len; i <= len + k - 1; ++i){
13         s[i] = 'A';
14     }
15     len += k;
16     for(int i = 0; i < len; ++i){
17         for(int j = len - 1; j >= i + 1; --j){
18             if((j - i + 1) % 2) continue;
19             int n = (j - i + 1) / 2;
20             for(p = i; p < i + n; ++p){
21                 if(s[p + n] != 'A' && s[p] != s[p + n])
22                     break;
23             }
24             if(p >= i + n){
25                 maxn = max(maxn,j - i + 1);
26             }
27         }
28     }
29     printf("%d\n",maxn);
30     return 0;
31 }

C:

 1 #include <cstdio>
 2 #include <algorithm>
 3 #include <iostream>
 4 using namespace std;
 5 const double eps = 1e-10;
 6 int main(){
 7     int n;
 8     double p1,p0,p[105];
 9     scanf("%d",&n);
10     for(int i = 0; i < n; ++i){
11         scanf("%lf",&p[i]);
12     }
13     sort(p,p + n);
14     if(p[n - 1] - 0.5 > eps){
15         printf("%.12lf\n",p[n - 1]);
16     }
17     else{
18         p1 = p[n - 1];
19         p0 = 1.0 - p[n - 1];
20         for(int i = n - 2; i >= 0; --i){
21             double tem = (1.0 - p[i]) * p1 + p0 * p[i];
22             if(tem < p1)
23                 break;
24             p1 = tem;
25             p0 *= (1.0 - p[i]);
26         }
27         printf("%.12lf\n",p1);
28     }
29     return 0;
30 }

 

posted @ 2014-06-20 12:09  Naturain  阅读(122)  评论(0编辑  收藏  举报