写的代码保存一下,留作纪念
第一题
#include<iostream> #include<cstdio> using namespace std; const int maxn = 1000010; int A[maxn]; int main(void) { int n; cin>>n; while(n!=-1) { for(int i=0;i<n;i++) { cin >> A[i]; } int pre = 0; for(int i=1;i<n;i++) { if(A[i]!=A[pre]) { A[++pre]=A[i]; } else { // } } for(int i=0;i<=pre;i++) { cout << A[i]; if(i!=pre) cout <<" "; } cin >> n; } return 0; }
第二题
#include<iostream> #include<algorithm> #include<cstring> #include<string.h> using namespace std; const int maxn = 1024*1024+10; int A[26][maxn]; int B[26]; int C[26]; int ans = 0; string pwd[1010]; string str; int main(void) { int n; cin >> str; cin >> n; for(int i=0;i<n;i++) { cin >> pwd[i]; } int len = str.length(); for(int i=0;i<len;i++) { char ch = str[i]; if(i!=0) { for(int j=0;j<26;j++) A[j][i]=A[j][i-1]; } A[ch-'a'][i]++; } for(int i=0;i<n;i++)//i密码 { memset(B,0,sizeof(B)); for(int k=0;k<8;k++) { B[pwd[i][k]-'a']++; } for(int k=7;k<len;k++) { bool flag = true; for(int j=0;j<26;j++) { if(k==7) { C[j] = A[j][k]; } else { C[j] = A[j][k]-A[j][k-8]; } } for(int j=0;j<26;j++) { if(C[j]!=B[j]) { flag = false; break; } } if(flag==true) ans++; } } cout << ans; return 0; }
第三题
#include<iostream> #include<algorithm> #include<cstdio> using namespace std; int m,n,w; int x1,y1; int x2,y2; void makePoint1() { y1 = (m+w-1)/w; if(y1%2==0) { x1 = w - (m-(y1-1)*w)+1; } else { x1 = m-(y1-1)*w; } } void makePoint2() { y2 = (n+w-1)/w; if(y2%2==0) { x2 = w-(n-(y2-1)*w)+1; } else { x2 = n-(y2-1)*w; } } int main(void) { cin >> w >> m >> n; makePoint1(); makePoint2(); int ans = abs(x1-x2)+abs(y1-y2); cout << ans; return 0; }
第四题
#include<iostream> #include<algorithm> #include<map> #include<string> using namespace std; map<string,string> table; map<string,int> sum; const int maxn = 50010; int M,N; string A[maxn]; string B[maxn]; int main(void) { table["A"]=table["B"]=table["C"]="2"; table["D"]=table["E"]=table["F"]="3"; table["G"]=table["H"]=table["I"]="4"; table["J"]=table["K"]=table["L"]="5"; table["M"]=table["N"]=table["O"]="6"; table["P"]=table["Q"]=table["R"]=table["S"]="7"; table["T"]=table["U"]=table["V"]="8"; table["W"]=table["X"]=table["Y"]=table["Z"]="9"; cin >> N >> M; for(int i=0;i<N;i++) { cin >> A[i]; } for(int i=0;i<M;i++) { cin >> B[i]; sum[B[i]]=0; } for(int i=0;i<N;i++) { string hand = ""; for(int k=0;k<A[i].length();k++) { string ch = A[i].substr(k,1); ch = table[ch]; hand+=ch; } //cout << hand<<endl; sum[hand]++; } for(int i=0;i<M;i++) { cout << sum[B[i]]; if(i!=M-1) cout<<" "; } return 0; }
第五题
#include<iostream> #include<algorithm> #include<cstdio> #include<string> #include<cstring> using namespace std; bool used[26]; bool have[26]; char ans[6][6]; string key; int main(void) { cin >> key; for(int i=0;i<key.length();i++) { if(key[i]=='J') key[i]='I'; else { have[key[i]-'A']=true; } } memset(used,0,sizeof(used)); used['J'-'A']=true; int pos=0; for(int i=0;i<key.length();i++) { int k = key[i]-'A'; if(have[k]==true&&used[k]==false) { used[k]=true; int x = pos/5; int y = pos%5; ans[x][y]='A'+k; pos++; } } for(int i=0;i<26;i++) { if(used[i]==false) { int x = pos/5; int y = pos%5; ans[x][y]='A'+i; pos++; } } for(int i=0;i<5;i++) { for(int j=0;j<5;j++) { cout << ans[i][j]; } if(i!=5) cout << endl; } return 0; }
第六题
#include<stdio.h> #include<algorithm> #include<iostream> using namespace std; const int maxn = 100010; int A[maxn],N; int len[maxn]; int main(void) { cin >> N; for(int i=0;i<N;i++) { cin >> A[i]; len[i]=1; } for(int i=1;i<N;i++) { for(int k=0;k<i;k++) { if(A[k]<A[i] && len[k]+1>len[i]) { len[i] = len[k]+1; } } } int ans = N-len[N-1]; cout << ans; return 0; }
第七题
#include<iostream> #include<algorithm> #include<cstdio> using namespace std; const int maxn = 100000+10; int n,ans=0; int X[maxn],Y[maxn]; int main(void) { cin >> n; for(int i=0;i<n;i++) cin >>X[i]>>Y[i]; for(int i=0;i<n;i++) { for(int j=i+1;j<n;j++) { if(X[i]+X[j]==Y[i]+Y[j]) ans++; } } cout << ans; return 0; }
第八题
#include<iostream> #include<algorthm> #include<cstdio> using namespace std; int n int main(void) { return 0; }