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$

原文地址:https://www.cnblogs.com/kalginamiemeng/p/Exam20191024-Night.html