1、奶牛跳舞 奶牛排名存入 pm[15][25],k组n头牛 成对奶牛统计 tj[25][25],n头奶牛的对应关系 for(int p=0;p<k;p++){ //一共k次 for(int i=0;i<n-1;i++){ for(int j=i+1;j<n;j++){ //星阵结构 //pm[p][i] 第p组前面的牛编号 //pm[p][j] 第p组后面的牛编号 tj[pm[p][i]][pm[p][j]]++; } } } 统计之后,查看统计数组中多少个关系到达k次的,即答案 int ans=0; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(tj[i][j]==k) ans++; } } cout<<ans; 2、我在哪 找非自身重复子串最大长度 最大长度+1即答案 ABCDEFD 长度1: A无 B无 C无 D有-> 长度2: AB无 BC无 CD无 DE无 EF无 FD无 全无->重复子串最大长度为1,答案为1+1=2 ABCDABC 长度1: A有-> 长度2: AB有-> 长度3: ABC有-> 长度4: ABCD无 BCDA无 CDAB无 DABC无 全无->重复子串最大长度为3,答案为3+1=4 string s="ABCDABC"; int ans=0; for(int i=1;i<s.size()-1;i++){ //i代表的是长度 for(int j=0;j<s.size()-i-1;j++){ //j代表从哪开始 string str1=s.substr(j,i); //从j后面开始找,查看是否有i长度的子串 for(int k=j+1;k<s.size()-i-1;k++){ string str2=s.substr(k,i); if(str1==str2){ ans=i; break; } } } } ans=ans+1; 3、奶牛排队 一共有8头牛 8头牛的排列情况一共有8*7*6*5*4*3*2*1=40320种 一共有7种限制,通过限制次数筛选正确条件一共7*40320=282240次 28w远低于1000w,所以枚举不会超时 作业是这三道题答题通过,第二题想想优化策略。 https://usaco.org/index.php?page=dec19results |