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

NOIP2012 题解

时间:2014-07-22 22:43:15      阅读:309      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   io   

Vigenère 密码

  这个名字实在打不来...

  题解:模拟

bubuko.com,布布扣
 1 #include <cstdio>
 2 #include <cstring>
 3 
 4 const int MAXL = 1000+10;
 5 
 6 bool cj;
 7 int cl, kl;
 8 char c[MAXL], k[MAXL], an;
 9 
10 int main(){
11     gets(k), gets(c);
12     kl = strlen(k), cl = strlen(c);
13     for (int i=0; i<kl; i++) 
14         if (k[i]<97) k[i] += 32;
15 
16     for (int i=0; i<cl; i++){
17         if (c[i]<97) c[i] += 32, cj = true; 
18         else cj = false;
19         an = (c[i]-a-(k[i%kl]-a)+26)%26+a;
20         if (cj) an -= 32;
21         printf("%c", an);
22     }
23 }
vigenere.cpp

 

同余方程

  题解:我只会用扩展欧几里得解...

bubuko.com,布布扣
 1 #include <cstdio>
 2 
 3 int a, b, x, y, t;
 4 
 5 inline void ExGcd(int a, int b){
 6     if (b==0) return;
 7     ExGcd(b, a%b);
 8     t = x, x = y, y = t-(a/b)*x;
 9 }
10 
11 int main(){
12     scanf("%d %d", &a, &b), x = 1, y = 0;
13     ExGcd(a, b);
14     while (x<=0) x += b;
15     printf("%d", x);
16 }
mod.cpp

 

借教室

  题解:二分。开始没加读入优化,在vijos上TLE了...

bubuko.com,布布扣
 1 #include <cstdio>
 2 #include <cstring>
 3 
 4 const int MAXN = 1e6+10;
 5 
 6 struct Indent{
 7     int l, r, n;    
 8 }d[MAXN];
 9 
10 int n, m, mid, temp[MAXN], lim[MAXN];
11 char c;
12 
13 inline int NextInt(){
14     int ret = 0;
15     do
16         c = getchar();
17     while (!(48<=c && c<=57));
18     
19     do
20         ret *= 10, ret += c-48, c = getchar();
21     while (48<=c && c<=57);
22 
23     return ret;
24 }
25 
26 inline bool Check(int x){
27     memset(temp, 0, sizeof(temp));
28 
29     int sum = 0;
30     for (register int i=1; i<=x; i++)
31         temp[d[i].l] += d[i].n, temp[d[i].r+1] -= d[i].n;
32     for (register int i=1; i<=n; i++){
33         sum += temp[i];
34         if (sum>lim[i]) return false;
35     }
36     return true;
37 }
38 
39 int main(){
40     n = NextInt(), m = NextInt();
41     for (register int i=1; i<=n; i++)
42         lim[i] = NextInt();
43     for (register int i=1; i<=m; i++)
44         d[i].n = NextInt(), d[i].l = NextInt(), d[i].r = NextInt();
45             
46     int l = 1, r = m+1, mid;
47     while (l<r){
48         mid = (l+r)>>1;
49         if (Check(mid)) l = mid+1;
50         else r = mid;
51     }
52     if (l<m) printf("-1\n%d", l);
53     else printf("0");
54 }
classroom.cpp

NOIP2012 题解,布布扣,bubuko.com

NOIP2012 题解

标签:style   blog   http   color   os   io   

原文地址:http://www.cnblogs.com/cjhahaha/p/3860014.html

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