欢迎使用本站,预祝练习时长两年半的选手们到成功! [本模块信息来自tem/def/head]

zzj tey 2019年12月铜组解析

时间:2024-06-15 17:02 作者:admin 点击:
1、奶牛跳舞 奶牛排名存入 pm[15][25],k组n头牛 成对奶牛统计 tj[25][25],n头奶牛的对应关系 for(int p=0;pk;p++){ //一共k次 for(int i=0;in-1;i++){ for(int j=i+1;jn;j++){ //星阵结构 //pm[p][i] 第p组前面的牛编

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


(责任编辑:admin)
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%