• 19-10-16-R


    其实……这篇是真咕了。

    反思:

    ××我$T1$两个小时构造$xiebi$了(虽然我觉得如果干仨小时可能行?)

     ……如果$T1$用时过长的话那考试多半不行……

    结果:

    35
    Miemeng 50
    03:08:09
    0
    03:08:09
    20
    03:08:10
    70
    03:08:10

    T1显然交的暴力……

    题解:

    T1

    好题

    构造一下,分分块就可以辣。

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #define N 111111
    
    using namespace std;
    int nn,un,dn;
    int arr[N];
    int epl[N];
    void revset(int l,int r){
    	for(int i=l,j=r;i<=r;i++,j--)
    		arr[i]=j;
    }
    int main(){
    	int T;
    	cin>>T;
    	while(T--){
    		scanf("%d%d%d",&nn,&un,&dn);
    		if(un*dn>=nn && un+dn<=nn+1){
    			puts("Yes");
    			revset(nn-dn+1,nn);
    			if(un-1!=0){
    				int pl=(nn-dn)/(un-1),
    					pn=un-1,
    					prn=nn-dn-pl*pn;
    				for(int i=1;i<=pn;i++)
    					epl[i]=pl;
    				for(int i=1;i<=prn;i++)
    					epl[i]++;
    	//			for(int i=1;i<=pn;i++)
    					cout<<epl[i]<<" ";
    				cout<<endl;
    				for(int i=1;i<=pn;i++)
    					epl[i]=epl[i]+epl[i-1];
    				for(int i=1;i<=pn;i++){
    	//				cout<<epl[i-1]+1<<" "<<epl[i]<<endl;
    					revset(epl[i-1]+1,epl[i]);
    				}
    			}
    			for(int i=1;i<=nn;i++)
    				printf("%d ",arr[i]);
    			puts("");
    		}
    		else puts("No");
    	}
    }
    

    T2

    性质题,通过找规律证明了有一段不连续的区间并求解。

    至于证明请去模大佬的博客(右方翻友链)

    #include <algorithm>
    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #define N 111111
    #define LL long long
    
    using namespace std;
    
    int nn;
    LL arr[N],
       pre[N],
       ans;
    int main(){
    	scanf("%d",&nn);
    	for(int i=1;i<=nn;i++)
    		scanf("%lld",arr+i);
    	sort(arr+1,arr+nn+1);
    	for(int i=1;i<=nn;i++)
    		pre[i]=pre[i-1]+arr[i];
    	ans=pre[nn]-(arr[1]-1)/2;
    	for(int i=2;i<=nn;i++){
    		if((arr[i]-1)/2>pre[i-1])
    			ans-=(arr[i]-1)/2-pre[i-1];
    	}
    	printf("%lld
    ",ans);
    }
    

    T3

    二叉树计数可得$20$

    正解$dp$

    将树上的位置关系转化成子树的大小关系。

    (显然我是水果的……)

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #define LL long long
    #define N 888
    
    using namespace std;
    
    const int Mod=1e9+7;
    LL dp[N][N];
    int pn,lin,minn[N],maxn[N];
    
    int main(){
    	int T,a,b;
    	cin>>T;
    	while(T--){
    		memset(dp,0,sizeof dp);
    		scanf("%d%d",&pn,&lin);
    		for(int i=1;i<=pn;i++)
    			minn[i]=0,maxn[i]=pn;
    		for(int i=1;i<=lin;i++){
    			scanf("%d%d",&a,&b);
    			if(a<b){
    //				for (int i=1; i<x; ++i) mn[i]=max(mn[i],i-x);
    			    maxn[a]=min(maxn[a],b-a-1);
    			}//minn[a]=max(minn[a],b-a-1);
    			else   minn[b]=max(minn[b],a-b);
    		}
    		for(int i=1;i<=2*pn+1;i++)
    			dp[i][0]=1;
    		for(int i=pn;i>=1;i--){
    			for(int j=1;j<=pn;j++){
    				for(int k=minn[i];k<=min(maxn[i],j);k++){
    					if(j-1-k<0)break;
    					dp[i][j]=(dp[i][j]+dp[i+1][k]*dp[i+1+k][j-1-k]%Mod)%Mod;
    				}
    			}
    		}
    		printf("%lld
    ",dp[1][pn]);
    	}
    }
    
  • 相关阅读:
    BZOJ4383 : [POI2015]Pustynia
    BZOJ4382 : [POI2015]Podział naszyjnika
    BZOJ4381 : [POI2015]Odwiedziny
    BZOJ4380 : [POI2015]Myjnie
    BZOJ4378 : [POI2015]Logistyka
    BZOJ3424 : Poi2013 Multidrink
    BZOJ4367 : [IOI2014]holiday假期
    BZOJ4369 : [IOI2015]teams分组
    BZOJ4421 : [Cerc2015] Digit Division
    BZOJ1315 : Ural1557Network Attack
  • 原文地址:https://www.cnblogs.com/kalginamiemeng/p/Exam20191016.html
Copyright © 2020-2023  润新知