zoukankan      html  css  js  c++  java
  • 19-10-24-H

    H H H H H H

    ZJ一下:

    T1只会暴力,测试点分治。

    (表示作者的部分分并没有给够,暴力加部分表按测试点分类可以得60吧……)

    T2先直接手玩第一个子任务。

    然后就$Find$了一个神奇的(?)性质(其实是$dp$的柿子)

    发现只要可以从一个必败状态转移到就是必胜的,如果无法从任何一个必败状态转移过来就是仍是必败状态。

    于是码好了$Theta(N^4)$的暴力加一个测试点分治。

    T3没啥时间打,连样例都没测$QAQ$(最后果然WA0了)就丢上去了。

    Finally:

    33
    Miemeng 20
    03:16:04
    70
    03:16:04
    0
    03:19:46
    90
    03:19:46

    $T1$为啥只有暴力分?

    这是TJ:

    T1

    直接统各位的$xor$即可;

    如何统?

    可以发现:

    %%%Yu-shi

    $$
    0000000\
    0000001\
    0000010\
    0000011\
    0000100\
    0000101\
    0000110\
    0000111\
    0001000\
    0001001\
    0001010\
    0001011\
    0001100\
    0001101\
    0001110\
    0001111\
    0010000\
    vdots
    $$

    这是有循环节的,直接前缀和做差。

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #define LL long long
    
    using namespace std;
    
    const int Mod=1e9+7;
    LL cna0,cna1,cnb0,cnb1;
    LL ans;
    int main(){
    	ios_base::sync_with_stdio(false);
    	LL T,a,b,dat,lft;
    	cin>>T;
    	while(T--){
    		ans=0;
    		cin>>a>>b;
    		for(int k=1;k<=30;k++){
    			LL i=1<<k;
    			dat=(a/i)*i;//cout<<"WholeA:"<<dat<<endl;
    			lft=a-dat;  //cout<<"LftA:"<<lft<<endl;
    			if(lft<=i/2){
    				cna0=lft;
    				cna1=0;
    			}
    			else{
    				cna0=i/2;
    				cna1=lft-i/2;
    			}
    			cna0+=dat/2;
    			cna1+=dat/2;
    
    			dat=((b+1)/i)*i;//cout<<"WholeB:"<<dat<<endl;
    			lft=(b+1)-dat;  //cout<<"LftB:"<<lft<<endl;
    			if(lft<=i/2){
    				cnb0=lft;
    				cnb1=0;
    			}
    			else{
    				cnb0=i/2;
    				cnb1=lft-i/2;
    			}
    			cnb0+=dat/2;
    			cnb1+=dat/2;
    
    			//cout<<"Bit:"<<k<<endl
    				<<"A_1:"<<cna1<<endl
    				<<"A_0:"<<cna0<<endl
    				<<"B_1:"<<cnb1<<endl
    				<<"B_0:"<<cnb0<<endl;
    			cout<<(cnb1-cna1)<<" "<<(cnb0-cna0)<<endl;
    			ans+=(cnb1-cna1)%Mod*(cnb0-cna0)%Mod*(i/2)%Mod;
    			ans%=Mod;
    		}
    		cout<<ans*2%Mod<<endl;
    	}
    }
    

    T2

    类似埃筛?

    直接刷表。

    必败情况很少,$N^2$级别。

    于是直接用必败去刷表就可以$N^3$过。

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #define N 333
    
    using namespace std;
    
    char dp[N][N][N];
    int main(){
    	for(int i=0;i<=300;i++){
    		for(int j=0;j<=300;j++){
    			for(int k=0;k<=300;k++){
    				if(dp[i][j][k]==0){
    					for(int a=i+1;a<=300;a++)
    						dp[a][j][k]=1;
    					for(int a=j+1;a<=300;a++)
    						dp[i][a][k]=1;
    					for(int a=k+1;a<=300;a++)
    						dp[i][j][a]=1;
    					int lim=300-max(i,j);
    					for(int a=1;a<=lim;a++)
    						dp[i+a][j+a][k]=1;
    					lim=300-max(i,k);
    					for(int a=1;a<=lim;a++)
    						dp[i+a][j][k+a]=1;
    					lim=300-max(k,j);
    					for(int a=1;a<=lim;a++)
    						dp[i][j+a][k+a]=1;
    					lim=300-max(i,max(j,k));
    					for(int a=1;a<=lim;a++)
    						dp[i+a][j+a][k+a]=1;
    				}
    			}
    		}
    	}
    	ios_base::sync_with_stdio(false);
    	int T,a,b,c;
    	cin>>T;
    	while(T--){
    		cin>>a>>b>>c;
    		cout<<(dp[a][b][c]==0?"No":"Yes")<<endl;
    	}
    }
    

    T3

    $gugugu$

  • 相关阅读:
    FlashDevelop视频教程三:多工程的使用及编译SWC
    FlashDevelop插件ASCompletion
    c#实现MD5加密
    FlashDevelop视频教程一:简介及安装
    FlashDevelop4 快捷键
    FlashDevelop视频教程四:FLA工程调试和一些技巧
    一个简单的c#操作XML文件的类,只能操作一层的节点
    验证用户的存储过程
    MOSS模态窗口应用
    二进制图片格式转换
  • 原文地址:https://www.cnblogs.com/kalginamiemeng/p/Exam20191024-Night.html
Copyright © 2011-2022 走看看