考试总结 模拟60

T1

再不会,也有能拿的分,心态!!状态!!T2的式子要考虑推一下不能弃掉T3看错题了!!

可以说是三道原题

T1约瑟夫问题

f[i]=(f[i-1]+m)%i  cout<

这里可以打表找规律从数学角度优化成$log$级别的

 1 #include 
 2 #include 
 3 #include 
 4  
 5 using namespace std;
 6  
 7 int m,n;
 8 int main(){
 9     int T;
10     for(cin>>T;T;T--){
11         scanf("%d%d",&n,&m);
12         int id=0;
13         if(n>m){
14             for(int i=1;i<=m;i++)
15                 id=(id+m)%i;
16             for(int i=m+1;i<=n;i++){
17                 id=(id+m)%i;
18                 int jumpl=(i-id)/(m-1);
19                 if(i+jumpl<=n){
20                     id=(id+jumpl*m)%(i+jumpl);
21                     i+=jumpl;
22                 }
23                 else{
24                     id=id+(n-i)*m;
25                     break;
26                 }
27             }
28         }else{
29             id=0;
30             for(int i=1;i<=n;i++)
31                 id=(id+m)%i;
32         }
33         printf("%d\n",id+1);
34     }
35 }
Miemeng

T2「树状数组」

考试总结 模拟60_第1张图片

 

 

 T3「线性DP」「最长公共上升子序列」

这是lyd上原题P264

把两个dp结合真的很神

 

你可能感兴趣的:(考试总结 模拟60)