首页 > 其他分享 >acwing 219 剪纸游戏

acwing 219 剪纸游戏

时间:2023-09-14 23:25:39浏览次数:26  
标签:某某 剪纸 1x 决策 219 SG 节点 acwing

这一道题就是显然的multi-SG题目了(只是没有明显的后继节点,只能分解节点罢了)

这里无论双方怎么决策,决策图都不可能出现1x某某的网格(原因见蓝书),所以我们在程序中就不要考虑SG[1][某某]

最后的不能分解的节点就是2x2,2x3,3x3(注意不要涉及1x某某哦),我们把这三个节点赋成0即可

然后对每一个节点枚举从哪里剪开(注意别枚举1x某某的决策,因为不会出现),然后按照multi-SG进行决策就行了

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=210;
int sg[N][N];
bool flag[N<<1];
int main()
{
	for(int i=2;i<=200;i++)
	for(int j=i;j<=200;j++)
	if((i==2&&(j==2||j==3))||(i==j&&j==3)) continue;
	else 
	{
		memset(flag,0,sizeof(flag));
		for(int k=2;k<j-1;k++) 
		flag[sg[min(k,i)][max(k,i)]^sg[min(j-k,i)][max(j-k,i)]]=1;
		for(int k=2;k<i-1;k++) 
		flag[sg[min(k,j)][max(k,j)]^sg[min(i-k,j)][max(i-k,j)]]=1;
		for(int k=0;k<=410;k++)
		if(!flag[k])
		{
			sg[i][j]=k;
			break;
		}
	}
	int n,m;
	while(scanf("%d%d",&n,&m)==2)
	if(sg[min(n,m)][max(n,m)]==0) printf("LOSE\n");
	else printf("WIN\n");
	return 0;
 } 

标签:某某,剪纸,1x,决策,219,SG,节点,acwing
From: https://www.cnblogs.com/dingxingdi/p/17703788.html

相关文章

  • 【dfs基础题】洛谷P1219题解
    题目大意给定棋盘的规格为\(n×n\),现在要摆\(n\)个皇后,使得每个皇后不能互相攻击。题目解答由题意可知,如果两个皇后在同一行或同一列或同一对角线,那么就会互相攻击。那么就简单了,若当前要摆的是第\(i\)个皇后,那么只需要for循环一遍前面的\(i-1\)个皇后,判断前面的皇后......
  • AcWing 895. 最长上升子序列
    题目给定一个长度为$N$的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数$N$。第二行包含$N$个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围$1≤N≤1000,−10^9≤数列中的数≤10^9$输入样例:73121856输出样例:4......
  • hdu1400/acwing 291 Mondriaan's Dream
    题意描述:给定一块n*m的区域,用1*2的长方形填充,长方形可以横着或竖着摆,问一共有多少种填充方案具体思路:题意没什么好说的,简单易懂,很经典的一类状态压缩问题(在棋盘中求填充方案)。观察数据,满足n,m都比较小,但是搜索的复杂度大到无法接受,考虑使用状态压缩求解此类问题......
  • AcWing 5. 多重背包问题 II
    题目有$N$种物品和一个容量是$V$的背包。第$i$种物品最多有$s_i$件,每件体积是$v_i$,价值是$w_i$。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,$N,V$,用空格隔开,分别表示物品种数和背包容积。接下来......
  • Acwing.第 120 场周赛
    Acwing.第120场周赛比赛链接A最大GCD给定一个正整数n(n≥2),请你确定两个正整数a,b,使得1≤a<b≤n,且gcd(a,b)尽可能大。输出gcd(a,b)的最大可能值。gcd(a,b)指a,b的最大公约数。提示:可以通过给定样例观察一下n和答案之间的关系。输入格式第一行包含整数T,表示共有T......
  • C++ 算法竞赛、03 周赛篇 | AcWing 第4场周赛
    AcWing第4场周赛竞赛-AcWing3694A还是B3694.A还是B-AcWing题库简单题#include<algorithm>#include<cstring>#include<iostream>usingnamespacestd;intn;inta,b;intmain(){cin.tie(0);charc;cin>>n;for(int......
  • AcWing 898. 数字三角形
    题目给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。738810274445265输入格式第一行包含整数$n$,表......
  • AcWing 4. 多重背包问题
    题目有$N$种物品和一个容量是$V$的背包。第$i$种物品最多有$s_i$件,每件体积是$v_i$,价值是$w_i$。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,$N,V$,用空格隔开,分别表示物品种数和背包容积。接下来......
  • C++ 算法竞赛、02 周赛篇 | AcWing 第2场周赛
    AcWing第2场周赛竞赛-AcWing3626三元一次方程AcWing3626.三元一次方程-AcWing两层循环#include<iostream>usingnamespacestd;voidfind(intn){for(intx=0;x<=1000/3;x++){for(inty=0;y<=1000/5;y++){int......
  • AcWing 3. 完全背包问题
    题目有$N$种物品和一个容量是$V$的背包,每种物品都有无限件可用。第i$种物品的体积是$v_i$,价值是$w_i$。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,$N,V$,用空格隔开,分别表示物品种数和背包容积。......