标签:style blog http color os io
Vigenère 密码
这个名字实在打不来...
题解:模拟
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 }
同余方程
题解:我只会用扩展欧几里得解...
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 }
借教室
题解:二分。开始没加读入优化,在vijos上TLE了...
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 }
标签:style blog http color os io
原文地址:http://www.cnblogs.com/cjhahaha/p/3860014.html