USACO 2019 December Contest, Bronze P1: #include <iostream> using namespace std; int k,n; int p[25]; int x[25][25]; int main(){ freopen("gymnastics.in","r",stdin); freopen("gymnastics.out","w",stdout); cin>>k>>n; for(int i=1;i<=k;i++){ for(int j=1;j<=n;j++) cin>>p[j]; for(int a=1;a<n;a++){ for(int b=a+1;b<=n;b++){ int b1=p[a]; int b2=p[b]; x[b1][b2]++; } } } int ans=0; for(int a=1;a<=n;a++){ for(int b=1;b<=n;b++){ if(x[a][b]==k) ans++; } } cout<<ans; fclose(stdin); fclose(stdout); return 0; } P2: #include <iostream> using namespace std; int n,k; string s; bool cf(int m){ int maxid=s.size()-m+1; /* for(int i=0;i<maxid;i++) for(int j=i+1;j<maxid;j++) if(s.substr(i,m)==s.substr(j,m)) return true; */ for(int i=0;i<maxid;i++){ string str=s.substr(i,m); int d=s.find(str,i+1); if(d!=-1) return true; } return false; } int main(){ freopen("whereami.in","r",stdin); freopen("whereami.out","w",stdout); //在一个长度为100的字符串中,找最长的重复子串+1 cin>>n>>s; int l=0,r=n-1; while(l<r){ int mid=(l+r+1)/2; if(cf(mid)) l=mid; else r=mid-1; } k=l+1; cout<<k; fclose(stdin); fclose(stdout); return 0; } 作业: USACO 2019 December Contest, Bronze Problem 3. Livestock Lineup (责任编辑:admin) |