寒假集训蒟蒻日记(更新至Day 2)

Day -3

啊今天是周日,明天就要考试,好虚啊,希望那个考个好成绩

我才不会告诉你我是无聊才发的这玩意儿

期末RP++

晦涩我语文RP++

繁琐我数学RP++

拗口我英语RP++

死背我政治RP++

复杂我历史RP++

诡异我生物RP++

粗暴我地理RP++

危险我物理RP++

别看我 没有化学


 day -2

考试的第一天,四科全炸啊不说了

南鎪...


 day -1

八科全部炸mmp


 day 0

去湖南博物馆玩了整个下午,看到了可爱的辛追奶奶

骨瘦嶙峋,嘴皮外翻,好可爱啊


 day 1

现在培训正式开始啦~

开局一个被称为“很简单”的热身赛打成dwangg,估计是100封顶了...

%%%wey神犇自奶破300

%%%zyl神犇被奶破300

%%%hkh神犇直播上400

%%%yhb神犇全程看戏


 day 2

做了一大堆题

代码都在这了

 1 #include <bits/stdc++.h>
 2 #define fp(i,l,r) for(register int i=(l);i<=(r);++i)
 3 #define fd(i,l,r) for(register int i=(l);i>=(r);--i)
 4 using namespace std;
 5 int n,ans;
 6 int h[1005],f[1005],g[1005];
 7 int main(){
 8     scanf("%d",&n);
 9     fp(i,1,n)
10       scanf("%d",&h[i]);
11     f[1]=1;
12     fp(i,2,n){
13         fp(j,1,i-1)
14           if(h[i]>h[j]&&f[i]<f[j])
15             f[i]=f[j];
16         f[i]++;
17     }
18     g[n]=1;
19     fd(i,n-1,1){
20         for(int j=i+1;j<=n;++j)
21           if(h[i]>h[j]&&g[i]<g[j])
22             g[i]=g[j];
23         g[i]++;
24     }
25     ans=0;
26     fp(i,1,n)
27       if(f[i]+g[i]-1>ans)
28         ans=f[i]+g[i]-1;
29     printf("%d",ans);
30     return 0;
31 } 
登山
 1 #include <bits/stdc++.h>
 2 #define fp(i,l,r) for(register int i=(l);i<=(r);i++)
 3 #define fd(i,l,r) for(register int i=(l);i>=(r);i--)
 4 char a[201],b[201];
 5 int num[202][202];
 6 //inline int bat
 7 void LCS(int lena,int lenb){ 
 8     fp(i,1,lena){
 9         fp(j,1,lenb){
10             if(a[i-1]==b[j-1]){
11                 num[i][j]=num[i-1][j-1]+1;
12             }  
13             else{ 
14                 num[i][j]=num[i][j-1] > num[i-1][j] ? num[i][j-1] : num[i-1][j];
15             }
16         }  
17     }  
18 }
19 int main(){
20     while(scanf("%s",a)==1){
21         scanf("%s",b);
22         int lena=strlen(a);
23         int lenb=strlen(b);
24         memset(num,0,sizeof(num));
25         LCS(lena,lenb);
26         printf("%d\n",num[lena][lenb]);
27     }
28     return 0;
29 }
公共子序列
 1 #include <bits/stdc++.h>
 2 #define fp(i,l,r) for(register int i=(l);i<=(r);i++)
 3 #define fd(i,l,r) for(register int i=(l);i>=(r);i--)
 4 using namespace std;
 5 inline int bothposs(int a,int b,int pd){
 6     if(pd==1) return a>b?a:b;
 7     if(pd==0) return a>b?b:a;
 8 }
 9 int main(){
10     int n;
11     int sum=0,ans=0;
12     int bu[100+20]={1};
13     int fi[100+20];
14     int all;
15     scanf("%d",&all);
16     fp(k,1,all){
17         scanf("%d",&n);
18         fp(i,1,n){
19             scanf("%d",&bu[i]);
20             fi[i]=1;
21         }
22         fd(i,n-1,1){
23             fp(j,i+1,n){
24                 if(bu[i]<=bu[j]){
25                     fi[i]=bothposs(fi[i],fi[j]+1,1);
26                 }
27             }
28         }
29         fp(i,1,n){
30             sum=bothposs(sum,fi[i],1);
31         }
32         fp(i,1,120){
33             fi[i]=1;
34         }        
35         fd(i,n-1,1){
36             fp(j,i+1,n){
37                 if(bu[i]>=bu[j]){
38                     fi[i]=bothposs(fi[i],fi[j]+1,1);
39                 }
40             }
41         }
42         fp(i,1,n){
43             ans=bothposs(ans,fi[i],1);
44         }
45         printf("%d\n",bothposs(ans,sum,1));
46         sum=0;
47         ans=0;
48     }
49     return 0;
50 }
怪盗基德的滑翔翼
 1 #include <bits/stdc++.h>
 2 char a[1005],b[1005];
 3 int l1,l2,sum,f[1005][1005];
 4 int n;
 5 int set0(){
 6     memset(f,0,sizeof(f));
 7     for(int i=1;i<=1000;i++){
 8         f[0][i]=i;f[i][0]=i;
 9     }
10 }
11 int mmin(int a,int b,int c){
12     if(a<=b&&a<=c) return a;
13     if(b<=a&&b<=c) return b;
14     if(c<=b&&c<=b) return c;
15 }
16 int main(){
17     int i,j;
18     scanf("%d",&n);getchar();
19     for(int hhh=1;hhh<=n;hhh++){
20         set0();
21         scanf("%s %s",a,b);    
22         l1=strlen(a);l2=strlen(b);
23         for(i=1;i<=l1;i++)
24             for(j=1;j<=l2;j++){
25                 if(a[i-1]==b[j-1])
26                     f[i][j]=mmin(f[i-1][j-1],f[i-1][j]+1,f[i][j-1]+1);
27                 if(a[i-1]!=b[j-1]) 
28                     f[i][j]=mmin(f[i-1][j-1]+1,f[i-1][j]+1,f[i][j-1]+1);
29             }
30     printf("%d\n",f[l1][l2]);
31     return 0;
32 }
33 
34 return 0;
35 }
计算字符串距离
 1 #include <bits/stdc++.h>
 2 #define fp(i,l,r) for(register int i=(l);i<=(r);i++)
 3 #define fd(i,l,r) for(register int i=(l);i>=(r);i--)
 4 using namespace std;
 5 inline int botposs(int a,int b,int pd){
 6     if(pd==1) return a>=b?a:b;
 7     if(pd==0) return a>=b?b:a;
 8 }
 9 int main(){
10     int sum=0; 
11     int n;
12     int boom[30],f[30];
13     scanf("%d",&n);
14     fp(i,1,n){
15         scanf("%d",&boom[i]);
16         f[i]=1;
17     }
18     fd(i,n-1,1){
19         fp(j,i+1,n){
20             if(boom[i]>=boom[j]){
21                 f[i]=botposs(f[i],f[j]+1,1);
22             }
23         }
24     }
25     fp(i,1,n){
26         sum=botposs(sum,f[i],1);
27     }
28     printf("%d",sum);
29     return 0;
30 }
拦截导弹
 1 #include <bits/stdc++.h>
 2 #define fp(i,l,r) for(register int i=(l);i<=(r);i++)
 3 #define fd(i,l,r) for(register int i=(l);i>=(r);i--)
 4 using namespace std;
 5 int n,m;
 6 int sum=0;
 7 int _map[25][25];
 8 int book[25][25];
 9 int _next[2][2]={{0,1},{1,0}};
10 int print(){
11     sum++;
12 }
13 int search(int x,int y){
14     int tx,ty;
15     if(x==m&&y==n){
16         print();
17     }
18     fp(k,0,1){
19         tx=x+_next[k][0];
20         ty=y+_next[k][1];
21         if(tx<1||tx>m||ty<1||ty>n){
22             continue;
23         }
24         if(book[tx][ty]==0){
25             book[tx][ty]=1;
26             search(tx,ty);
27             book[tx][ty]=0;
28         }
29     }
30     return 0;
31 }
32 int main(){
33     memset(_map,0,sizeof(_map));
34     memset(book,0,sizeof(book));
35     scanf("%d%d",&m,&n);
36     search(1,1);
37     printf("%d",sum);
38     return 0;
39 }
移动路线
 1 #include <bits/stdc++.h>
 2 #define fp(i,l,r) for(register int i=(l);i<=(r);i++)
 3 #define fd(i,l,r) for(register int i=(l);i>=(r);i--)
 4 using namespace std;
 5 inline int bothposs(int a,int b,int pd){
 6     if(pd==1) return a>=b?a:b;
 7     if(pd==0) return a>=b?b:a;
 8 }
 9 int main(){
10     int n;
11     int sum=0,ans=0;
12     int bu[1000+20];
13     int fi[1000+20];
14     scanf("%d",&n);
15     fp(i,1,n){
16         scanf("%d",&bu[i]);
17     }
18     fp(i,1,n){
19         fi[i]=bu[i];
20         fp(j,1,i-1){
21             if(bu[j]<bu[i]){
22                 fi[i]=bothposs(fi[i],fi[j]+bu[i],1);
23             }
24         }
25         sum=bothposs(sum,fi[i],1);
26     }
27     printf("%d",sum);
28     return 0;
29 }
最大上升子序列和
 1 #include <bits/stdc++.h>
 2 #define fp(i,l,r) for(register int i=(l);i<=(r);i++)
 3 #define fd(i,l,r) for(register int i=(l);i>=(r);i--)
 4 using namespace std;
 5 inline int botposs(int a,int b,int pd){
 6     if(pd==1) return a>=b?a:b;
 7     if(pd==0) return a>=b?b:a;
 8 }
 9 int main(){
10     int n;
11     int _map[100+20][100+20];
12     int f[100+20][100+20];
13     scanf("%d",&n);
14     fp(i,1,n){
15         fp(j,1,n){
16             scanf("%d",&_map[i][j]);
17             f[i][j]=0;
18         }
19     }
20     f[n][n]=_map[n][n];
21     fd(i,n,1){
22         fd(j,n,1){
23             if(j==n){
24                 f[i][j]=f[i+1][j]+_map[i][j];
25             }
26             else if(i==n){
27                 f[i][j]=f[i][j+1]+_map[i][j];
28             }
29             else
30                 f[i][j]=botposs(f[i][j+1],f[i+1][j],0)+_map[i][j];
31         }
32     }
33     printf("%d",f[1][1]);
34     return 0;
35 }
最低通行费
 1 #include <bits/stdc++.h>
 2 #define fp(i,l,r) for(register int i=(l);i<=(r);i++)
 3 #define fd(i,l,r) for(register int i=(l);i>=(r);i--)
 4 using namespace std;
 5 inline int botposs(int a,int b,int pd){
 6     if(pd==1) return a>=b?a:b;
 7     if(pd==0) return a>=b?b:a;
 8 }
 9 int main(){
10     int f[100+20][100+20],wall[100+20][100+20];
11     int t;
12     int m;
13     int r,c;
14     scanf("%d",&t);
15     fp(i,1,t){
16         scanf("%d%d",&r,&c);
17         fp(j,1,r){
18             fp(k,1,c){
19                 scanf("%d",&wall[j][k]);
20                 f[j][k]=0;
21             }
22         }
23         fd(j,r,1){
24             fd(k,c,1){
25                 if(j==r&&k==c){
26                     int u;
27                 }
28                 else if(k==c){
29                     f[j][k]=f[j+1][k]+wall[j][k];
30                 }
31                 else if(j==r){
32                     f[j][k]=f[j][k+1]+wall[j][k];
33                 }
34                 else{
35                     f[j][k]=botposs(f[j+1][k],f[j][k+1],1)+wall[j][k];
36                 }
37             }
38         }
39         printf("%d\n",f[1][1]);
40     }
41     return 0;
42 }
还没做完的摘花生
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int num[50005];
 4 int lft[50005],rht[50005],lftm[50005],rhtm[50005];
 5 int main()
 6 {
 7 int t,n;
 8 scanf("%d",&t);
 9 while(t--)
10 {
11 memset(num,0,sizeof(num));
12 scanf("%d",&n);//eileen
13 for(int i=1;i<=n;i++)
14 {
15 scanf("%d",&num[i]);
16 }
17 lft[1]=num[1];
18 lftm[1]=num[1];
19 rht[n]=num[n];
20 rhtm[n]=num[n];
21 int maxtot=-2147483640;
22 for(int i=1;i<=n;i++)
23 {
24 int k=n-i;
25 if(i!=1) lft[i]=max(lft[i-1]+num[i],num[i]);
26 if(i!=1) lftm[i]=max(lftm[i-1],lft[i]);
27 rht[k]=max(num[k],rht[k+1]+num[k]);
28 rhtm[k]=max(rhtm[k+1],rht[k]);
29 }
30 for(int i=1;i<=n-1;i++)
31 {
32 maxtot=max(maxtot,lftm[i]+rhtm[i+1]);
33 }
34 printf("%d\n",maxtot);
35 }
36 return 0;
37 }
Maximum sum

啊啊啊啊啊 要死了要死了 累死了累死了


 day 3

看看我发博文的就行啦~\(≧▽≦)/~


day 4

今天ys老师居然没让我们考试,哈皮!

题目发了博文啦~

 

posted @ 2018-01-28 21:24  Fraction  阅读(246)  评论(2编辑  收藏  举报




















































Contact with me