7-1 后天
#include <bits/stdc++.h> using namespace std; constexpr int mod = 1e9 + 7; constexpr int mod2 = 998244353; constexpr int MAXNe5 = 1e5 + 7; constexpr int MAXNe6 = 1e6 + 7; typedef long long ll; #pragma region inline long long read() { char c = getchar();long long flag = 1, ans = 0; while(c < '0' || c > '9'){if(c == '-') flag = -1; c = getchar();} while(c >= '0' && c <= '9'){ans = ans * 10 + c - '0'; c = getchar();} return (ans * flag); } #pragma endregion // C'est la vie int main() { int n = read(); cout << ((n + 2) % 7 == 0 ? 7 : (n + 2) % 7); #ifndef ONLINE_JUDGE system("pause"); #endif }
7-2 重要的话说三遍
# python print("I'm gonna WIN!\n" *2 + "I'm gonna WIN!")
7-3 奇偶分家
#include <bits/stdc++.h> using namespace std; constexpr int mod = 1e9 + 7; constexpr int mod2 = 998244353; constexpr int MAXNe5 = 1e5 + 7; constexpr int MAXNe6 = 1e6 + 7; typedef long long ll; #pragma region inline long long read() { char c = getchar();long long flag = 1, ans = 0; while(c < '0' || c > '9'){if(c == '-') flag = -1; c = getchar();} while(c >= '0' && c <= '9'){ans = ans * 10 + c - '0'; c = getchar();} return (ans * flag); } #pragma endregion // C'est la vie int main() { int n = read(), odd = 0, even = 0; while(n --) { int input = read(); if(input & 1) odd ++; else even ++; } cout << odd << ' ' << even; #ifndef ONLINE_JUDGE system("pause"); #endif }
7-4 大笨钟
#include <bits/stdc++.h> using namespace std; constexpr int mod = 1e9 +7; constexpr int mod2 = 998244353; constexpr int MAXNe5 = 1e5 +7; constexpr int MAXNe6 = 1e6 + 7; typedef long long ll; #pragma region inline long long read() { char c = getchar();long long flag = 1, ans = 0; while(c < '0' || c > '9'){if(c == '-') flag = -1; c = getchar();} while(c >= '0' && c <= '9'){ans = ans * 10 + c - '0'; c = getchar();} return (ans * flag); } #pragma endregion // C'est la vie int main() { int h = read() - 12, m = read(); if(h < 0 || (h == 0 && m == 0)) printf("Only %02d:%02d. Too early to Dang.", h + 12, m); else { if(m != 0) h ++; for(int i = 0; i < h; ++ i) cout << "Dang"; } #ifndef ONLINE_JUDGE system("pause"); #endif }
7-5 到底有多2
#include <bits/stdc++.h> using namespace std; constexpr int mod = 1e9 + 7; constexpr int mod2 = 998244353; constexpr int MAXNe5 = 1e5 + 7; constexpr int MAXNe6 = 1e6 + 7; typedef long long ll; #pragma region inline long long read() { char c = getchar();long long flag = 1, ans = 0; while(c < '0' || c > '9'){if(c == '-') flag = -1; c = getchar();} while(c >= '0' && c <= '9'){ans = ans * 10 + c - '0'; c = getchar();} return (ans * flag); } #pragma endregion // C'est la vie int main() { string input; cin >> input; double t1 = 1, t2 = 1, even = 0; int len = input.length(), i = 0; if(input[0] == '-') t1 += 0.5, i = 1; if(input[len - 1] % 2 == 0) t2 ++; for(; i < len; ++i) { if (input[i] == '2') even++; } if(input[0] == '-') len --; printf("%.2f%%", even / len * t1 * t2 * 100); #ifndef ONLINE_JUDGE system("pause"); #endif }
7-6 谁先倒
#include <bits/stdc++.h> using namespace std; constexpr int mod = 1e9 +7; constexpr int mod2 = 998244353; constexpr int MAXNe5 = 1e5 +7; constexpr int MAXNe6 = 1e6 + 7; typedef long long ll; #pragma region inline long long read() { char c = getchar();long long flag = 1, ans = 0; while(c < '0' || c > '9'){if(c == '-') flag = -1; c = getchar();} while(c >= '0' && c <= '9'){ans = ans * 10 + c - '0'; c = getchar();} return (ans * flag); } #pragma endregion // C'est la vie int main() { int a = read(), b = read(), n = read(), c = 0, d = 0; while(n --) { int a1 = read(), b1 = read(), a2 = read(), b2 = read(); if(a1 + a2 == b1 && b1 == b2) continue; else if(a1 + a2 == b1) c ++; else if(a1 + a2 == b2) d ++; if(c > a) { cout << "A\n" << d; break; } if(d > b) { cout << "B\n" << c; break; } } #ifndef ONLINE_JUDGE system("pause"); #endif }
7-7 输出GPLT
#include <bits/stdc++.h> using namespace std; constexpr int mod = 1e9 + 7; constexpr int mod2 = 998244353; constexpr int MAXNe5 = 1e5 + 7; constexpr int MAXNe6 = 1e6 + 7; typedef long long ll; #pragma region inline long long read() { char c = getchar();long long flag = 1, ans = 0; while(c < '0' || c > '9'){if(c == '-') flag = -1; c = getchar();} while(c >= '0' && c <= '9'){ans = ans * 10 + c - '0'; c = getchar();} return (ans * flag); } #pragma endregion // C'est la vie int main() { string str; cin >> str; int len = str.length(), G = 0, P = 0, L = 0, T = 0; for(int i = 0; i < len; ++ i) { char tmp = toupper(str[i]); if(tmp == 'G') G ++; else if(tmp == 'P') P ++; else if(tmp == 'L') L ++; else if(tmp == 'T') T ++; } while(G + P + L + T != 0) { if(G) G --, cout << 'G'; if(P) P --, cout << 'P'; if(L) L --, cout << 'L'; if(T) T --, cout << 'T'; } #ifndef ONLINE_JUDGE system("pause"); #endif }
7-8 帅到没朋友
#include <bits/stdc++.h> using namespace std; constexpr int mod = 1e9 + 7; constexpr int mod2 = 998244353; constexpr int MAXNe5 = 1e5 + 7; constexpr int MAXNe6 = 1e6 + 7; typedef long long ll; #pragma region inline long long read() { char c = getchar();long long flag = 1, ans = 0; while(c < '0' || c > '9'){if(c == '-') flag = -1; c = getchar();} while(c >= '0' && c <= '9'){ans = ans * 10 + c - '0'; c = getchar();} return (ans * flag); } #pragma endregion // C'est la vie int main() { int N = read(); map<int, bool> mp; while(N --) { int M = read(); if(M == 1) { int tmp = read(); } else { for(int i = 0; i < M; ++ i) { int tmp = read(); mp[tmp] = 1; } } } int M = read(); vector<int> ans; while(M --) { int input = read(); if(mp.find(input) == mp.end()) { mp[input] = 1; ans.emplace_back(input); } } if(ans.size() == 0) cout << "No one is handsome"; else for(int i = 0; i < ans.size(); ++ i) cout << setw(5) << setfill('0') << ans[i] << (i + 1 == ans.size() ? "" : " "); #ifndef ONLINE_JUDGE system("pause"); #endif }
7-9 集合相似度
#include<bits/stdc++.h> using namespace std; constexpr int mod = 1e9 +7; constexpr int mod2 = 998244353; constexpr int MAXNe5 = 1e5 +7; constexpr int MAXNe6 = 1e6 + 7; #pragma region inline long long read() { char c = getchar();long long flag = 1, ans = 0; while(c < '0' || c > '9'){if(c == '-')flag = -1; c = getchar();} while(c >= '0' && c <= '9'){ans = ans * 10 + c - '0'; c = getchar();} return (ans * flag); } #pragma endregion // C'est la vie int main() { int N, M, input, K, a, b; scanf("%d", &N); set<int> se[55]; double mark[55][55]; memset(mark, -1, sizeof(mark)); for(register int i = 1; i <= N; ++ i) { scanf("%d", &M); for(register int j = 0; j < M; ++ j) { scanf("%d", &input); se[i].insert(input); } } scanf("%d", &K); while(K --) { scanf("%d %d", &a, &b); if(mark[a][b] >= 0.0) { printf("%.2f%%\n", mark[a][b]); } else { set<int> tmp; set_intersection(se[a].begin(), se[a].end(), se[b].begin(), se[b].end(), inserter(tmp, tmp.begin())); mark[a][b] = 1.0 * tmp.size() / (se[a].size() + se[b].size() - tmp.size()) * 100.0; printf("%.2f%%\n", mark[a][b]); } } #ifndef ONLINE_JUDGE system("pause"); #endif }
7-10 树的遍历
#include <bits/stdc++.h> #define sd(n) scanf("%d",&n) #define sl(n) scanf("%lld",&n) #define met(a,b); memset(a,b,sizeof(a)); typedef long long ll; using namespace std; double pai=3.14159265359; inline int read() { int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); } return x*f; } inline long long lread() { long long tmp=0, fh=1; char c=getchar(); while (c<'0'||c>'9') {if (c=='-') fh=-1; c=getchar();} while (c>='0'&&c<='9') tmp=tmp*10+c-48, c=getchar(); return tmp*fh; } int bak[35],mid[35]; struct nod{ int weight; int left,right; }tree[35]; int num=1; void bulid(int now,int len,int *ba,int *mi){ tree[now].weight=ba[len]; int fin=1; for(int i=1;i<=len;i++){ if(ba[len]==mi[i]){ fin=i;break; } } int k=0; if(fin!=1){ num++; tree[now].left=num; bulid(num,fin-1,ba,mi); } if(fin!=len){ num++; tree[now].right=num; bulid(num,len-fin,ba+fin-1,mi+fin); } } int main(){ int n; cin >> n; for(int i = 1;i <= n;i++) cin>>bak[i]; for(int i = 1;i <= n;i++) cin>>mid[i]; bulid(1,n,bak,mid); queue<int> qu; qu.push(1); bool sc=0; while(!qu.empty()){ nod temp = tree[qu.front()]; qu.pop(); if(sc)cout<<' '; cout<<temp.weight; sc=1; if(temp.left!=0)qu.push(temp.left); if(temp.right!=0)qu.push(temp.right); } #ifndef ONLINE_JUDGE system("pause"); #endif }
7-11 家庭房产
#include <bits/stdc++.h> #define sd(n) scanf("%d",&n) #define sl(n) scanf("%lld",&n) #define met(a,b); memset(a,b,sizeof(a)); typedef long long ll; using namespace std; double pai=3.14159265359; inline int read() { int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); } return x*f; } inline long long lread() { long long tmp=0, fh=1; char c=getchar(); while (c<'0'||c>'9') {if (c=='-') fh=-1; c=getchar();} while (c>='0'&&c<='9') tmp=tmp*10+c-48, c=getchar(); return tmp*fh; } int bin[10000]; bool pc[10000]; int people[10000]; int numt[10000]; int mi[10000]; double sum[10000]; int fin(int n){ if(bin[n]==n) return n; else return bin[n]=fin(bin[n]); } struct famy{ int a; int sum; double b; double c; }ans[2000]; int sc=0; bool cmp(famy a,famy b){ if(a.c==b.c) return a.a<b.a; else return a.c>b.c; } int main(){ int n; cin>>n; for(int i=0;i<=9999;i++)mi[i]=bin[i]=i; for(int i=0;i<n;i++){ int num,fa,ma,k; cin>>num>>fa>>ma>>k;pc[num]=1; for(int j=0;j<k;j++){ int temp; cin>>temp; pc[temp]=1; bin[fin(num)]=fin(temp); } if(fa!=-1){bin[fin(num)]=fin(fa);pc[fa]=1;} if(ma!=-1){bin[fin(num)]=fin(ma);pc[ma]=1;} cin>>numt[num]>>sum[num]; } for(int i=0;i<=9999;i++){ if(!pc[i])continue; int u=fin(i); mi[u]=min(mi[u],i); people[u]++; if(u==i)continue; numt[u]+=numt[i]; sum[u]+=sum[i]; } for(int i=0;i<=9999;i++){ if(people[i]){ ans[sc].a=mi[i]; ans[sc].b=numt[i]*1.0/people[i]; ans[sc].c=sum[i]*1.0/people[i]; ans[sc].sum=people[i]; sc++; } } sort(ans,ans+sc,cmp); printf("%d\n",sc); for(int i=0;i<sc;i++){ printf("%04d %d %.3lf %.3lf\n",ans[i].a,ans[i].sum,ans[i].b,ans[i].c); } #ifndef ONLINE_JUDGE system("pause"); #endif }
7-12 最长对称字串
#include <bits/stdc++.h> using namespace std; constexpr int mod = 1e9 + 7; constexpr int mod2 = 998244353; constexpr int MAXNe5 = 1e5 + 7; constexpr int MAXNe6 = 1e6 + 7; typedef long long ll; #pragma region inline long long read() { char c = getchar();long long flag = 1, ans = 0; while(c < '0' || c > '9'){if(c == '-') flag = -1; c = getchar();} while(c >= '0' && c <= '9'){ans = ans * 10 + c - '0'; c = getchar();} return (ans * flag); } #pragma endregion // C'est la vie int cnt = 1, p[MAXNe5]; string s1, s2; void init() { int len = s1.length(); s2 += '!'; s2 += '#'; for(int i = 0; i < len; ++ i) s2 += s1[i], s2 += '#'; } int manacher() { init(); int mid = 0, r = 0, ans = 0, len = s2.length(); for(int i = 1; i < len; i++) { if(i < r) p[i] = min(p[mid * 2 - i], r - i); else p[i] = 1; while(s2[i + p[i]] == s2[i - p[i]]) p[i] ++; if(r < i + p[i]) r = i + p[i], mid = i; ans = max(ans, p[i] - 1); } return ans; } int main() { getline(cin, s1); cout << manacher(); #ifndef ONLINE_JUDGE system("pause"); #endif }
7-13 肿瘤诊断
三维坐标系下判断连通性,注意dfs需要特殊技巧,硬搜可能会爆栈,bfs随便搜。
7-14 垃圾箱分布
最短路问题,Dijkstra/spfa。
7-15 迎风一刀斩
思维/模拟。