码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces 474(#270) 解题报告

时间:2014-10-07 20:30:23      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   ar   for   sp   

A:直接贴过来装换

解题代码

bubuko.com,布布扣
 1 // File Name: a.cpp
 2 // Author: darkdream
 3 // Created Time: 2014年10月06日 星期一 23时28分57秒
 4 
 5 #include<vector>
 6 #include<list>
 7 #include<map>
 8 #include<set>
 9 #include<deque>
10 #include<stack>
11 #include<bitset>
12 #include<algorithm>
13 #include<functional>
14 #include<numeric>
15 #include<utility>
16 #include<sstream>
17 #include<iostream>
18 #include<iomanip>
19 #include<cstdio>
20 #include<cmath>
21 #include<cstdlib>
22 #include<cstring>
23 #include<ctime>
24 #define LL long long
25 
26 using namespace std;
27 char  str[102];
28 char  tp[4][100] = {"qwertyuiop",
29 "asdfghjkl;",
30 "zxcvbnm,./",
31 };
32 int main(){
33     scanf("%s",str);
34     if(str[0] == L)
35     {
36        scanf("%s",str);
37        for(int i = 0;i < strlen(str);i ++)
38        {
39             for(int j = 0;j <= 2;j ++)
40             {
41                if(strchr(tp[j],str[i]))
42                {
43                  printf("%c",tp[j][strchr(tp[j],str[i]) - tp[j] +1]);
44                }
45             }
46        }
47     }
48   else{
49        scanf("%s",str);
50        for(int i = 0;i < strlen(str);i ++)
51        {
52             for(int j = 0;j <= 2;j ++)
53             {
54                if(strchr(tp[j],str[i]))
55                {
56                  printf("%c",tp[j][strchr(tp[j],str[i]) - tp[j] - 1]);
57                }
58             }
59        
60        }
61   }
62 return 0;
63 }
View Code

B:一个标记或者二分就行,最大1e6的复杂度

解题代码:

bubuko.com,布布扣
 1 // File Name: b.cpp
 2 // Author: darkdream
 3 // Created Time: 2014年10月06日 星期一 23时39分31秒
 4 
 5 #include<vector>
 6 #include<list>
 7 #include<map>
 8 #include<set>
 9 #include<deque>
10 #include<stack>
11 #include<bitset>
12 #include<algorithm>
13 #include<functional>
14 #include<numeric>
15 #include<utility>
16 #include<sstream>
17 #include<iostream>
18 #include<iomanip>
19 #include<cstdio>
20 #include<cmath>
21 #include<cstdlib>
22 #include<cstring>
23 #include<ctime>
24 #define LL long long
25 
26 using namespace std;
27 int a[100005];
28 int b[100005];
29 int n , m ; 
30 int find(int x)
31 {
32     int l = 1; 
33     int r = n;
34     while(l <= r)
35     {
36       int mid = (l + r)/2;
37       if(a[mid] < x)
38       {
39         l = mid + 1;
40       }else {
41         r = mid - 1;
42       }
43     }
44     return l;
45 }
46 int main(){
47   scanf("%d",&n);
48   for(int i =1 ;i <= n;i ++)
49   {      scanf("%d",&a[i]);
50       a[i] = a[i-1] + a[i];
51   }
52   scanf("%d",&m);
53   for(int i =1 ;i <= m;i ++)
54   {
55       scanf("%d",&b[i]);
56       printf("%d\n",find(b[i]));
57   }
58 return 0;
59 }
View Code

C:知道转换公式以后就是一个手速题

bubuko.com,布布扣
  1 // File Name: c.cpp
  2 // Author: darkdream
  3 // Created Time: 2014年10月07日 星期二 00时41分28秒
  4 
  5 #include<vector>
  6 #include<list>
  7 #include<map>
  8 #include<set>
  9 #include<deque>
 10 #include<stack>
 11 #include<bitset>
 12 #include<algorithm>
 13 #include<functional>
 14 #include<numeric>
 15 #include<utility>
 16 #include<sstream>
 17 #include<iostream>
 18 #include<iomanip>
 19 #include<cstdio>
 20 #include<cmath>
 21 #include<cstdlib>
 22 #include<cstring>
 23 #include<ctime>
 24 #define LL long long
 25 #define eps 1e-8
 26 using namespace std;
 27 struct node{
 28     double x,y,a,b;
 29 };
 30 node a[5][5];
 31 node  change(node tp)
 32 {
 33    node ans;
 34    ans.a = tp.a;
 35    ans.b = tp.b;
 36    ans.x = tp.a - (tp.y - tp.b);
 37    ans.y = tp.b + (tp.x - tp.a);
 38    return ans;
 39 }
 40 int ans[0];
 41 double dis[5][5];
 42 double thedis(double x1, double y1, double x2,double y2)
 43 {
 44   return sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)) ;
 45 }
 46 int mi; 
 47 bool ok()
 48 {
 49    node tt[5];
 50    for(int i = 1;i <= 4;i ++)
 51    {
 52       tt[i] = a[i][ans[i]];
 53    }
 54    for(int i = 1;i <= 4;i ++)
 55    {
 56        for(int j= 1;j <= 4 ; j ++)
 57        {
 58             dis[i][j] = thedis(tt[i].x,tt[i].y,tt[j].x,tt[j].y);
 59        }
 60      sort(dis[i] + 1,dis[i] + 1 + 4);
 61    }
 62    for(int i = 2;i <= 4;i ++)
 63        for(int j = 1;j <= 4; j ++)
 64        {
 65           if(fabs(dis[i][j] - dis[i-1][j]) > eps)
 66               return 0 ; 
 67        }
 68    if(fabs(dis[1][4]-0 ) <eps)
 69        return 0 ; 
 70    if(fabs(dis[1][3] - dis[1][2]) > eps)
 71        return 0 ;
 72    if(fabs(dis[1][3] * sqrt(2) - dis[1][4]) > eps)
 73        return 0 ;
 74    if(fabs(dis[1][3] - 0 ) < eps)
 75        return 0 ;
 76    if(fabs(dis[1][2] - 0 ) < eps)
 77        return 0 ;
 78    /*for(int i = 1;i <= 4;i ++)
 79    {
 80        for(int j = 1;j <= 4; j ++)
 81            printf("%lf ",dis[i][j]);
 82        printf("\n");
 83    }
 84    for(int i = 1;i<= 4;i ++)
 85        printf("%lf %lf\n",tt[i].x,tt[i].y);
 86    
 87        */
 88    return 1;
 89 }
 90 void dfs(int k)
 91 {
 92    if(k == 5)
 93    {
 94       if(ok())
 95       {
 96         if(ans[1] + ans[2] + ans[3] + ans[4]  - 4< mi)
 97            mi = ans[1] + ans[2] + ans[3] + ans[4] -4;
 98         //printf("%d %d %d %d\n",ans[1],ans[2],ans[3],ans[4]);
 99       }
100       return;
101    }
102    for(int i = 1;i <= 4;i ++)
103    {
104       ans[k] = i ;
105       dfs(k+1);
106    }
107 }
108 int main(){
109    int n; 
110    scanf("%d",&n);
111    while(n--)
112    {
113        for(int i= 1;i <= 4;i ++)
114           scanf("%lf %lf %lf %lf",&a[i][1].x,&a[i][1].y,&a[i][1].a,&a[i][1].b);
115        for(int i = 1;i<= 4;i ++ ) 
116        {
117           for(int j = 2;j <= 4;j ++)
118               a[i][j] = change(a[i][j-1]);
119        }
120       /* for(int i = 1;i<= 4;i ++ ) 
121        {
122           for(int j = 1;j <= 4;j ++)
123               printf("%lf %lf ** ",a[i][j].x,a[i][j].y);
124           printf("\n");
125        }*/
126       mi = 1000; 
127       dfs(1);
128       if(mi == 1000)
129           printf("-1\n");
130       else printf("%d\n",mi);
131    }
132 return 0;
133 }
View Code

D: dp,考虑最后这一位是R还是W即可

bubuko.com,布布扣
 1 // File Name: d.cpp
 2 // Author: darkdream
 3 // Created Time: 2014年10月07日 星期二 00时21分01秒
 4 
 5 #include<vector>
 6 #include<list>
 7 #include<map>
 8 #include<set>
 9 #include<deque>
10 #include<stack>
11 #include<bitset>
12 #include<algorithm>
13 #include<functional>
14 #include<numeric>
15 #include<utility>
16 #include<sstream>
17 #include<iostream>
18 #include<iomanip>
19 #include<cstdio>
20 #include<cmath>
21 #include<cstdlib>
22 #include<cstring>
23 #include<ctime>
24 #define LL long long
25 #define maxn 100004
26 #define M 1000000007
27 using namespace std;
28 int t, k ;
29 
30 LL ans[maxn][2];
31 LL sum[maxn];
32 int main(){
33   while(scanf("%d %d",&t,&k) != EOF)
34   {
35      ans[1][1] = 1;
36      ans[0][2] = 1; 
37      
38      if(k == 1 )
39        ans[1][2] = 1;
40      else ans[1][2] = 0 ; 
41      sum[0] = 0 ;
42      sum[1] = ans[1][1] + ans[1][2];
43      for(int i = 2; i <= 100000;i ++)
44      {
45          ans[i][1] = (ans[i-1][1] + ans[i-1][2])%M ;
46          if(i >= k )
47            ans[i][2] = (ans[i-k][1] + ans[i-k][2])%M;
48          else{
49            ans[i][2] = 0 ; 
50          }
51          sum[i] = (sum[i-1] + ans[i][1] + ans[i][2])%M;
52     //    printf("%I64d\n",sum[i]);
53      }
54      int a, b; 
55      for(int i =1 ;i <= t;i ++)
56      {
57        scanf("%d %d",&a,&b);
58        printf("%I64d\n",((sum[b] - sum[a-1])+ M)%M );
59      }
60      
61   }
62 return 0;
63 }
View Code

 

Codeforces 474(#270) 解题报告

标签:style   blog   http   color   io   os   ar   for   sp   

原文地址:http://www.cnblogs.com/zyue/p/4009555.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!