luogu 水题记
P2077 红绿灯
#include <bits/stdc++.h> using namespace std; const int N = 1e5 + 10; int dis[N]; int n, m; int r[N]; int g[N]; int answer; inline int read() { char c=getchar(); int x=0; while(c<'0'||c>'9')c=getchar(); while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar(); return x; } int main() { cin >> n >> m; for(int i = 1; i <= n - 1; i ++) cin >> dis[i]; for(int i = 1; i <= n; i ++) r[i] = read(); for(int i = 1; i <= n; i ++) g[i] = read(); answer += m; for(int i = 1; i < n; i ++) { int lgj = answer % (g[i] + r[i]); if(lgj > g[i]) answer += (r[i] + g[i] - lgj); printf("%d\n", answer); answer += dis[i]; } int lgj = answer % (g[n] + r[n]); if(lgj > g[n]) answer += (r[n] + g[n] - lgj); printf("%d\n", answer); return 0; }
P1888 三角函数
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <string> using namespace std; int GCD(int a, int b){ return b == 0 ? a : GCD(b, a % b); } int main(){ int n, m, b; cin >> n >> m >> b; int fz = min(min(n, m), b); int fm = max(max(n, m), b); int gcd = GCD(fz, fm); printf("%d/%d", fz / gcd, fm / gcd); }
P2181 对角线
#include<cstdio> #include<iostream> using namespace std; unsigned long long n; int main() { for(int i = 1; i <= -1; i ++) cout << "lgjsb"; cin>>n; cout<<(n*(n-1)/2*(n-2)/3*(n-3)/4)<<endl; return 0; }
P1976 鸡蛋饼
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; long long f[100001]; int main() { int n; scanf("%d",&n); f[0]=1; f[1]=1; for(int i=2;i<=n;i++) for(int j=1;j<=i;j++) f[i]=(f[i]+f[j-1]*f[i-j])%100000007; printf("%lld",f[n]); }
P3150 pb的游戏(1)
#include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; for(int i = 1; i <= n; i ++) { int m; cin >> m; if(m % 2) printf("zs wins\n"); else printf("pb wins\n"); } return 0; }
P1838 三子棋I
#include<cstdio> #include<algorithm> #include<cstring> #include<string> using namespace std; int vis[4][4];//模拟棋盘 char s[10];//棋谱 int main() { scanf("%s",s+1);//输入字符串 int len=strlen(s+1); int flag=1; for(int i=1;i<=len;i++) { flag=-flag;//每次将flag变成相反数,代表更换执棋者 if(s[i]=='1') vis[1][1]=flag; if(s[i]=='2') vis[1][2]=flag; if(s[i]=='3') vis[1][3]=flag; if(s[i]=='4') vis[2][1]=flag; if(s[i]=='5') vis[2][2]=flag; if(s[i]=='6') vis[2][3]=flag; if(s[i]=='7') vis[3][1]=flag; if(s[i]=='8') vis[3][2]=flag; if(s[i]=='9') vis[3][3]=flag; } if((vis[1][1]==1&&vis[1][2]==1&&vis[1][3]==1)||(vis[2][1]==1&&vis[2][2]==1&&vis[2][3]==1)||(vis[3][1]==1&&vis[3][2]==1&&vis[3][3]==1)||(vis[3][3]==1&&vis[1][1]==1&&vis[2][2]==1)||(vis[3][1]==1&&vis[2][2]==1&&vis[1][3]==1)||(vis[1][1]==1&&vis[2][1]==1&&vis[3][1]==1)||(vis[1][1]==1&&vis[1][2]==1&&vis[1][3]==1)||(vis[1][2]==1&&vis[2][2]==1&&vis[3][2]==1)||(vis[1][3]==1&&vis[2][3]==1&&vis[3][3]==1))//枚举8种情况 printf("uim wins."); else if((vis[1][1]==-1&&vis[1][2]==-1&&vis[1][3]==-1)||(vis[2][1]==-1&&vis[2][2]==-1&&vis[2][3]==-1)||(vis[3][1]==-1&&vis[3][2]==-1&&vis[3][3]==-1)||(vis[3][3]==-1&&vis[1][1]==-1&&vis[2][2]==-1)||(vis[3][1]==-1&&vis[2][2]==-1&&vis[1][3]==-1)||(vis[1][1]==-1&&vis[2][1]==-1&&vis[3][1]==-1)||(vis[1][1]==-1&&vis[1][2]==-1&&vis[1][3]==-1)||(vis[1][2]==-1&&vis[2][2]==-1&&vis[3][2]==-1)||(vis[1][3]==-1&&vis[2][3]==-1&&vis[3][3]==-1))////枚举8种情况 printf("xiaoa wins."); else printf("drew."); }
P2043 质因子分解
#include<iostream> #include<cstdio> #include<cmath> using namespace std; int sum[10001]; void fenjie(int x); bool pz(int x); int main() { int a,b,c,d,e; int l,m,n,s,q; cin>>n; for (a=2;a<=n;a++) if (!pz(a)) fenjie(a); else sum[a]++; for (a=2;a<=n;a++) if (sum[a]) cout<<a<<' '<<sum[a]<<endl; return 0; } bool pz(int x) { int a,b=sqrt(x)+1; for (a=2;a<=b;a++) if (x%a==0) return 0; return 1; } void fenjie(int x) { int a; for (a=2;;a++) { if (x%a==0) { sum[a]++; x/=a; a--; } if (x<=1) break; } }
P1424 小鱼的航程(改进版)
#include <bits/stdc++.h> #define LL long long using namespace std; int main() { LL n, m, answer = 0; cin >> n >> m; if(n < 6) answer += 5 - n + 1; m -= (7 - n + 1); answer += (m / 7) * 5; if(m % 7 < 6 && m % 7 != 0) answer += m % 7; else if(m % 7 != 0 && m % 7 >= 6) answer += 5; cout << answer * 250; return 0; }
P1909 买铅笔
#include <bits/stdc++.h> using namespace std; struct Node{ int baoshuliang; int baojiage; int xvyaomaijibao; }jiegouti[4]; int yigongxvyaomaijizhi; int main() { int answer = 999999999; cin >> yigongxvyaomaijizhi; for(int i = 1; i <= 3; i ++) { cin >> jiegouti[i].baoshuliang >> jiegouti[i].baojiage; jiegouti[i].xvyaomaijibao = yigongxvyaomaijizhi % jiegouti[i].baoshuliang == 0 ? yigongxvyaomaijizhi / jiegouti[i].baoshuliang : yigongxvyaomaijizhi / jiegouti[i].baoshuliang + 1; answer = min(answer, jiegouti[i].xvyaomaijibao * jiegouti[i].baojiage); } printf("%d", answer); return 0; }
P1319 压缩技术
#include <bits/stdc++.h> using namespace std; int a[40010]; int main() { int n; cin >> n; int sb; int js = 0; int how = 0; while(scanf("%d", &sb) == 1) { how ++; if(how % 2)//1 { for(int i = js + 1; i <= js + sb; i ++) a[i] = 0; js += sb; } else { for(int i = js + 1; i <= js + sb; i ++) a[i] = 1; js += sb; } } int tot = 0; for(int i = 1; i <= n * n; i ++) { cout<<a[i]; tot ++; if(!(tot % n)) { tot = 0; cout << endl; } } return 0; }
P1320 压缩技术(续集版)
#include <bits/stdc++.h> using namespace std; string s; int main() { cin >> s; int len = s.length(); for(int i = 1; i < len; i ++) { string ss; cin >> ss; s +=ss; } cout << len << " "; int lenn = len * len; if(s[0] != '0') cout << 0 << " "; for(int i = 0; i < lenn; i ++) { int js = 0; while(s[i + 1] == s[i]) js ++, i ++; cout << js + 1 << " "; } return 0; }
P2907 [USACO08OPEN]农场周围的道路Roads Around The Farm
#include<bits/stdc++.h> using namespace std; long long ans,sum; long long n,k; void dfs(int x) { if(x-k<=0) { sum++;return;//这条路走到头了,结果++ } if((x+k)%2==0) { dfs((x+k)/2); dfs(x-(x+k)/2);//继续走,分两半递归 } else sum++; } int main() { cin>>n>>k; dfs(n); cout<<sum; }
P1496 火烧赤壁
#include<iostream> #include<cstdio> #include<algorithm> #define maxn 20010 using namespace std; int n; int xx, yy, answer; struct node { int x, y; } a[maxn]; struct Node { inline int read() { int x = 0, f = 1; char c = getchar(); while(c < '0' || c > '9') { if(c == '-') f = -1; c = getchar(); } while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar(); return x * f; } }r; int cmp(node u, node v) { return u.x < v.x; } int main() { n = r.read(); for(int i = 1; i <= n; i ++) a[i].x = r.read(), a[i].y = r.read(); sort(a + 1, a + n + 1, cmp); xx = a[1].x; yy = a[1].y; answer += a[1].y - a[1].x; for(int i = 2; i <= n; i ++) { if(a[i].x <= yy) { if(a[i].y < yy) continue; else { xx = yy; yy = a[i].y; answer += yy - xx; } } if(a[i].x > yy) { xx = a[i].x; yy = a[i].y; answer += yy - xx; } } printf("%d", answer); return 0; }
P1789 【Mc生存】插火把
#include <bits/stdc++.h> using namespace std; const int N = 1000; int n, m, k; bool a[N][N]; inline int read() { int x = 0; char c = getchar(); while(c < '0' || c > '9') c = getchar(); while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar(); return x; } int main() { n = read(); m = read(); k = read(); for(int i = 1; i <= m; i ++) { int x = read(); int y = read(); x += 2; y += 2; a[x][y] = a[x][y - 1] = a[x][y - 2] = a[x - 1][y] = a[x - 2][y] = a[x][y + 1] = a[x][y + 2] = a[x + 1][y] = a[x + 2][y] = 1; a[x - 1][y - 1] = a[x - 1][y + 1] = a[x + 1][y - 1] = a[x + 1][y + 1] = 1; } for(int i = 1; i <= k; i ++) { int x = read(); int y = read(); for(int l = x; l <= x + 4; l ++) for(int r = y; r <= y + 4; r ++) a[l][r] = 1; } int answer = 0; for(int i = 3; i <= n + 2; i ++) for(int j = 3; j <= n + 2; j ++) if(!a[i][j]) answer ++; printf("%d", answer); return 0; }
P1138 第k小整数
#include <bits/stdc++.h> int n, k; bool tong[300001]; inline int read() { int x = 0; char c = getchar(); while(c < '0' || c > '9') c = getchar(); while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar(); return x; } int main() { n = read(); k = read(); for(int i = 1; i <= n; i ++) tong[read()] = 1; int js = 0; for(int i = 0; i <= 300000; i ++) { if(tong[i]) js ++; if(js == k) { printf("%d", i); return 0; } } printf("NO RESULT"); return 0; }
P2550 [AHOI2001]彩票摇奖
#include <bits/stdc++.h> bool tong[40]; int jl[8]; inline int read() { int x = 0; char c = getchar(); while(c < '0' || c > '9') c = getchar(); while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar(); return x; } int main() { int n = read(); for(int i = 1; i <= 7; i ++) tong[read()] = 1; for(int i = 1; i <= n; i ++) { int js = 0; for(int j = 1; j <= 7; j ++) if(tong[read()]) js ++; jl[7 - js] ++; } for(int i = 0; i < 7; i ++) printf("%d ", jl[i]); return 0; }
P1597 语句解析
#include <bits/stdc++.h> using namespace std; string ss; char s[250]; int main() { int a = 0, b = 0, c = 0; cin >> ss; int len = ss.length(); for(int i = 0; i < len; i ++) s[i + 1] = ss[i]; for(int i = 1; i <= len; i += 5) { if(s[i] >= 'a' && s[i] <= 'z' && s[i + 3] >= '0' && s[i + 3] <= '9')//zi mu shu zi { if(s[i] == 'a') a = s[i + 3] - '0'; if(s[i] == 'b') b = s[i + 3] - '0'; if(s[i] == 'c') c = s[i + 3] - '0'; } else { if(s[i] == 'a' && s[i + 3] == 'b') a = b; if(s[i] == 'a' && s[i + 3] == 'c') a = c; if(s[i] == 'b' && s[i + 3] == 'a') b = a; if(s[i] == 'b' && s[i + 3] == 'c') b = c; if(s[i] == 'c' && s[i + 3] == 'a') c = a; if(s[i] == 'c' && s[i + 3] == 'b') c = b; } } printf("%d %d %d", a, b, c); return 0; }
P1847 轰炸II
#include <bits/stdc++.h> using namespace std; const int N = 2e3 + 10; int m, n; struct Node{ int x, y, xx, yy; }E[N]; struct node{ int x, y, js, last; }Z[N]; inline int read() { char c=getchar(); int x=0; while(c<'0'||c>'9')c=getchar(); while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar(); return x; } int main() { m = read(); n = read(); for(int i = 1; i <= m; i ++) { E[i].x = read(); E[i].y = read(); E[i].xx = read(); E[i].yy = read(); } for(int i = 1; i <= n; i ++) { Z[i].x = read(); Z[i].y = read(); } for(int i = 1; i <= n; i ++) { for(int j = 1; j <= m; j ++) { if(Z[i].x >= E[j].x && Z[i].x <= E[j].xx && Z[i].y >= E[j].y && Z[i].y <= E[j].yy) Z[i].js ++, Z[i].last = j; } } for(int i = 1; i <= n; i ++) { if(!Z[i].js) printf("NO\n"); else printf("YES %d %d\n", Z[i].js, Z[i].last); } return 0; }
P1590 失踪的7
#include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; for(int i = 1; i <= n; i ++) { long long a; cin >> a; int answer = a; for(int j = 1; j <= a; j ++) { int tmp = j; bool flag = 1; while(tmp && flag) { if(tmp % 10 == 7) { answer --; flag = 0; } tmp /= 10; } } printf("%lld\n", answer); } return 0; }
P1936 水晶灯火灵
#include<iostream> using namespace std; long long f[1001],m,i(3); int main(){ cin>>m; f[1]=1;f[2]=1;//赋值前两个 while(f[i]+f[i-1]<=m){ f[i]=f[i-1]+f[i-2];//将斐波那契数列存储到f数组里 i++; } cout<<"m="<<f[i-3]<<endl;//这个地方i多加了一次 cout<<"n="<<f[i-2]; return 0; //perfect! }
P3741 honoka的键盘
#include <bits/stdc++.h> using namespace std; int n; char a[110]; int answer; int main() { bool flag = 1; cin >> n; scanf("%s", a + 1); for(int i = 1; i < n; i ++) if(a[i] == 'V' && a[i + 1] == 'K') answer ++, a[i] = a[i + 1] = '#'; for(int i = 2; i < n && flag; i ++) { if(a[i] == 'V' && a[i + 1] != '#') answer ++, flag = 0; else if(a[i] =='K' && a[i - 1] != '#') answer ++, flag = 0; } printf("%d", answer); return 0; }
P2911 [USACO08OCT]牛骨头Bovine Bones
#include <bits/stdc++.h> using namespace std; int s1, s2, s3; struct Node{ int js, who; }a[1000000]; bool cmp(Node aa, Node b) { if(aa.js == b.js) return aa.who < b.who; return aa.js > b.js; } int main() { cin >> s1 >> s2 >> s3; for(int i = 1; i <= s1; i ++) for(int j = 1; j <= s2; j ++) for(int k = 1; k <= s3; k ++) a[i + j + k].js ++, a[i + j + k].who = i + j + k; sort(a + 1, a + s1 * s2 * s3 + 1, cmp); printf("%d",a[1].who); return 0; }
P1765 手机_NOI导刊2010普及(10)
#include <bits/stdc++.h> using namespace std; char c[250]; int js; int ans[] = {1, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 1, 2, 3, 4, 0}; int main() { int answer = 0; char ch; js = 0; while((ch = getchar()) != '\n') c[++ js] = ch; for(int i = 1; i <= js; i ++) if(c[i] == ' ') answer += ans[0]; else answer += ans[c[i] - 'a' + 1]; printf("%d", answer); return 0; }
P1482 Cantor表(升级版)
#include <bits/stdc++.h> using namespace std; inline int read() { int x = 0; char c = getchar(); while(c < '0' || c > '9') c = getchar(); while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar(); return x; } int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); } int main() { int xx, yy, aa, bb; xx = read(); yy = read(); aa = read(); bb = read(); int xy = gcd(xx, yy); xx /= xy; yy /= xy; int ab = gcd(aa, bb); aa /= ab; bb /= ab; int fz = xx * aa; int fm = yy * bb; int f = gcd(fz, fm); fz /= f; fm /= f; printf("%d %d", fm, fz); return 0; }
P2369 EXCEEDED WARNING A
#include <bits/stdc++.h> using namespace std; const int N = 1e6 + 10; #define LL long long int n, m; LL a[N]; inline LL read() { char c=getchar(); LL x=0; while(c<'0'||c>'9')c=getchar(); while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar(); return x; } int main() { scanf("%d%d", &n, &m); for(int i = 1; i <= n; i ++) a[i] = read(); sort(a + 1, a + n + 1); for(int i = 1; i <= m; i ++) printf("%d\n", a[i]); return 0; }
P3879 [TJOI2010]阅读理解
#include <bits/stdc++.h> using namespace std; map <string, bool> mp[110]; inline int read() { int x = 0; char c = getchar(); while(c < '0' || c > '9') c = getchar(); while(c >= '0' && c <= '9') x = x * 10 + c - '0', c =getchar(); return x; } int main() { ios::sync_with_stdio(false); int n; cin>>n; for(int i = 1; i <= n; i ++) { int l; cin>>l; for(int j = 1; j <= l; j ++) { string ls; cin >> ls; mp[i][ls] = 1; } } int m; cin>>m; for(int i = 1; i <= m; i ++) { string s; cin >> s; for(int j = 1; j <= n; j ++) if(mp[j][s]) { printf("%d ", j); continue ; } printf("\n"); } return 0; }