首页 > 其他分享 >AT_abc345_d 题解

AT_abc345_d 题解

时间:2024-03-16 22:34:05浏览次数:20  
标签:ch 题解 dfs yy repn xx abc345 define

是个逆天搜索。

最开始:爆搜,启动!

然后 TLE 到飞起。

赛后:我【数据删除】这么简单的吗?!

dfs 每个位置,试着把没放过的块放到以这个位置为左上角的区域里面。

好了没了,就是这么简单!

对了记得这个块可以旋转!

#include<stdio.h>
#include<bits/stdc++.h>
#define N 1000010
#define MOD 998244353
#define esp 1e-8
#define INF 999999999999999999
#define LL long long
#define rep(i,a,b,g) for(LL i=a;i<=b;i+=g)
#define rem(i,a,b,g) for(LL i=a;i>=b;i-=g)
#define repn(i,a,b,g) for(LL i=a;i<b;i+=g)
#define remn(i,a,b,g) for(LL i=a;i>b;i-=g)
#define pll pair<LL,LL>
#define mkp(x,y) make_pair(x,y)
#define i128 __int128
#define lowbit(x) ((x)&(-(x)))
#define lc (u<<1)
#define rc (u<<1|1)
using namespace std;
void read(i128 &x)
{
	i128 f=1;
	x=0;
	char ch=getchar();
	while(ch<'0'||ch>'9')
	{
		if(ch=='-')f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9')
	{
		x=x*10+ch-'0';
		ch=getchar();
	}
	x*=f;
}
void writing(i128 x)
{
	if(x>=10)writing(x/10);
	putchar(x%10+'0');
}
void write(i128 x)
{
	if(x<0)
	{
		cout<<'-';
		x=-x;
	}
	writing(x);
}
LL n,h,w,a[20],b[20];
bool vis[20][20],u[20];
void dfs(LL x,LL y)
{
	if(y>w)dfs(x+1,1);
	if(x>h)
	{
		cout<<"Yes"<<endl;
		exit(0);
	}
	if(vis[x][y])dfs(x,y+1);
	rep(i,1,2*n,1)
	{
		if(!u[(i-1)%n+1])
		{
			bool f=1;
			repn(xx,x,x+a[i],1)
			{
				repn(yy,y,y+b[i],1)
				{
					if(xx>h||yy>w||vis[xx][yy])f=0;
				}
			}
			if(!f)continue;
			u[(i-1)%n+1]=1;
			repn(xx,x,x+a[i],1)
			{
				repn(yy,y,y+b[i],1)
				{
					vis[xx][yy]=1;
				}
			}
			dfs(x,y+1);
			u[(i-1)%n+1]=0;
			repn(xx,x,x+a[i],1)
			{
				repn(yy,y,y+b[i],1)
				{
					vis[xx][yy]=0;
				}
			}
		}
	}
}
int main()
{
	cin>>n>>h>>w;
	rep(i,1,n,1)cin>>a[i]>>b[i];
	rep(i,n+1,2*n,1)
	{
		a[i]=b[i-n];
		b[i]=a[i-n];
	}
	dfs(1,1);
	cout<<"No"<<endl;
	return 0;
}

标签:ch,题解,dfs,yy,repn,xx,abc345,define
From: https://www.cnblogs.com/cppom/p/-/ABC345D-tijie

相关文章

  • 关于nvim插件telescope-fzf-native在windows下未构建的问题解决
    关于nvim插件telescope-fzf-native在windows下未构建的问题解决首先进入文件夹(没有就自己创建注意文件夹名就是telescope-fzf-native.nvim)C:\Users\...\AppData\Local\nvim-data\site\pack\packer\start\telescope-fzf-native.nvim进入此路径的powershell或者cmd命令行,执行......
  • 启动应用程序出现cmdial32.dll找不到问题解决
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个cmdial32.dll文件(挑选合适的版本文件)把它......
  • 启动应用程序出现comcat.dll找不到问题解决
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个comcat.dll文件(挑选合适的版本文件)把它放......
  • CF56D Changing a String 题解
    双倍经验:P2758。令\(dp_{i,j}\)表示\(s\)前\(i\)个字符要变成\(t\)前\(j\)个字符所需的最少移动次数。答案即为\(dp_{\lverts\rvert,\lvertt\rvert}\)。显然有初始状态\(dp_{i,0}=dp_{0,i}=i\)。因为我们只可能从添、删、替三种操作转移而来,于是有转移方程:......
  • P4211 [LNOI2014] LCA 题解
    link切入这道题,首先要思考所有LCA的分布特征。显然,对于任意\(\text{LCA}(i,j)\),都满足LCA是\(i,j\)的祖先。那么对于一个询问,可以找到所有\(i\in[l,r]\)的祖先,还可以找所有\(z\)的祖先。明显,找\(z\)的祖先会方便很多:它们都分布在\(z\)到根节点的那条链上,这应......
  • 邻接表存储带权的无向图(c++题解)
    题目描述给出一个无向带权图,顶点数为n,边数为m。输入格式第一行两个整数n,m,接下来有m行,每行3个整数u,v,w,表示点u到点v有一条边,边权为w。输出格式第i行输出第点i的所有邻接点,按照点i到该点的边权由小到大输出,如果边权相等,则按照点的编号有小到大输出。样例样例输入复......
  • 有向图的DFS(c++题解)
    题目描述给定一个有向图(不一定连通),有N个顶点,M条边,顶点从1..N依次编号,求出字典序最小的深度优先搜索顺序。输入格式第1行:2个整数,N(1≤N≤200)和M(2≤M≤5000)接下来M行,每行2个整数I,J,描述一条边从顶点I指向顶点J输出格式仅一行,一个顶点编号序列,表示字典序最小的深度优先搜索......
  • 首师大附中集训D6日报(20231215)-题解部分
    T1是dp设fi0不含k的情况书fi1含k的情况数第一步优化:前缀和维护f两个数组的前缀和通过前缀转移第二步优化:发现前缀和能矩阵乘法优化,所以矩阵快速幂就可以说起来挺简单,式子也不算难推,但就特别难写,主要的难度在于设置矩阵上面T2不知怎么一直卡在35,但是打的总体上肯......
  • 矿场搭建 题解
    题目描述煤矿工地可以看成是由隧道连接挖煤点组成的无向图。为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处。于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个挖煤点坍塌之后,其他挖煤点的工人都有一条道路通向救援出口。请写一个程序,用来计......
  • nodejs打包问题解决实例
    node命令集合npmsetregistryhttps://registry.npm.taobao.org/npmconfigsetregistryhttps://registry.npmjs.org/npmconfigsetsass_binary_sitehttps://npm.taobao.org/mirrors/node-sass/npmgetregistry //npm安装包的提示操作目录权限不足npmconfigsetu......