首页 > 其他分享 >CF638D Three-dimensional Turtle Super Computer

CF638D Three-dimensional Turtle Super Computer

时间:2023-10-18 20:22:05浏览次数:34  
标签:Turtle typedef const int Three long dimensional include define

什么大力爆搜题

不妨考虑枚举要拿掉的位置,考虑怎么检验它是某两个点之间必经之点

简单手玩一下会发现如果存在这么一条路径,那么我们一定可以把该路径的端点定为与要拿掉的点距离为\(1\)的点上(即与要拿掉的点上下左右前后\(6\)连通)

因此我们把这些点找出来后爆枚点对,判断路径是否唯一就直接爆搜即可

总复杂度大致为\(O(nmk\times 6^2)\),但实际跑不满可以轻松通过

#include<cstdio>
#include<iostream>
#include<utility>
#include<vector>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<algorithm>
#include<queue>
#include<set>
#include<map>
#include<set>
#include<array>
#include<random>
#include<bitset>
#include<ctime>
#include<limits.h>
#include<assert.h>
#include<unordered_set>
#include<unordered_map>
#define RI register int
#define CI const int&
#define mp make_pair
#define fi first
#define se second
#define Tp template <typename T>
using namespace std;
typedef long long LL;
typedef long double LDB;
typedef unsigned long long u64;
typedef __int128 i128;
typedef pair <int,int> pi;
typedef vector <int> VI;
typedef array <int,3> tri;
const int N=105,dx[6]={1,0,-1,0,0,0},dy[6]={0,1,0,-1,0,0},dz[6]={0,0,0,0,1,-1};
int n,m,l,ans; char a[N][N][N];
inline bool Path(const tri& cur,const tri& tar)
{
	if (cur==tar) return true;
	for (RI i=0;i<3;++i) if (cur[i]<tar[i])
	{
		tri tmp=cur; ++tmp[i]; auto [x,y,z]=tmp;
		if (a[x][y][z]=='1'&&Path(tmp,tar)) return true;
	}
	return false;
};
int main()
{
	//freopen("CODE.in","r",stdin); freopen("CODE.out","w",stdout);
	RI i,j,k,p,q; for (scanf("%d%d%d",&n,&m,&l),i=1;i<=n;++i)
	for (j=1;j<=m;++j) scanf("%s",a[i][j]+1);
	for (i=1;i<=n;++i) for (j=1;j<=m;++j)
	for (k=1;k<=l;++k) if (a[i][j][k]=='1')
	{
		vector <tri> pnt; bool flag=0;
		for (p=0;p<6;++p)
		{
			int nx=i+dx[p],ny=j+dy[p],nz=k+dz[p];
			if (nx<1||nx>n||ny<1||ny>m||nz<1||nz>l) continue;
			if (a[nx][ny][nz]=='1') pnt.push_back({nx,ny,nz});
		}
		for (p=0;p<pnt.size()&&!flag;++p) for (q=0;q<pnt.size()&&!flag;++q)
		if (p!=q&&pnt[p][0]<=pnt[q][0]&&pnt[p][1]<=pnt[q][1]&&pnt[p][2]<=pnt[q][2]&&Path(pnt[p],pnt[q]))
		{
			a[i][j][k]='0'; if (!Path(pnt[p],pnt[q])) flag=1; a[i][j][k]='1';
		}
		ans+=flag;
	}
	return printf("%d",ans),0;
}

标签:Turtle,typedef,const,int,Three,long,dimensional,include,define
From: https://www.cnblogs.com/cjjsb/p/17773253.html

相关文章

  • turtle海龟绘图指令集合
    turtle.forward(distance)向当前画笔方向移动distance像素长度turtle.backward(distance)向当前画笔相反方向移动distance像素长度turtle.right(degree)顶时针移动degree°角度turtle.left(degree)逆时针移动degree°角度turtle.penup(......
  • Educational Codeforces Round 91 (Rated for Div. 2) A. Three Indices
    给一个\(n\)个整数的排列\(p_1,p_2,\cdots,p_n\),需要找到三个数\(i,j,k\)满足:\(1\leqi<j<k\leqn\)\(p_i<p_j\),\(p_j<p_k\)否则回答不可能。\(key\):若存在上述\(i,j,k\),则存在\(x\)满足\(p_{x-1}<p_{x},p_{x}>p_{x+1......
  • 无涯教程-Matplotlib - 三维绘图(Dimensional)
    尽管最初设计Matplotlib时仅考虑了二维绘图,但在更高版本的Matplotlib的二维显示之上仍构建了一些三维绘图实用程序,以提供一组用于三维数据可视化的工具。通过导入Matplotlib软件包随附的mplot3d工具包启用三维图。可以通过将关键字projection='3d'传递给任何普通轴创建例程来......
  • 如何基于three.js(webgl)引擎架构,研发一套通过配置就能自动生成的3D机房系统
    序:这几年观察下来,大部分做物联网三维可视化解决方案的企业或个人,基本都绕不开3D机房。包括前面也讲过这样的案例《使用webgl(three.js)创建自动化抽象化3D机房,3D机房模块详细介绍(抽象版一)》 《 使用webgl(three.js)创建科技版3D机房,3D机房微模块详细介绍(升级版三)——......
  • CF1886A Sum of Three 题解
    Question给定一个正整数N,我们需要找三个不同的整数x,y,z,使得N=x+y+z,其中下x,y,z不能被三整除solution我们把N%3会有一些余数,我们针对余数来讨论,其中我们只关注xyz的余数如果余数为0那么也就可能是1+1+1,或者2+2+2,但是考虑到xyz不同,所以如果\(xyz\%3\)相同的话,\(xyz/3\)......
  • vue3+vite import 引入ThreeBSP库 报错
    我在网上查了一下先用npm下载了三方包npmithree-js-csg再使用constThreeBSP=require('three-js-csg')(THREE)的方法引入出现了这个报错查了是因为require是webpack里的vite不支持所以找不到然后我就尝试使用import的方法引入importThreeBSPfrom'three-js......
  • threejs CSS2DObject点击事件触发不了
    原因:在three.js  0.13X版本后,上面dom的onclick不会触发,原因是控制器Controls,可以尝试一下去掉控制器,看看dom上的点击事件是否ok letobtControls=newOrbitControls(camera,container); // OrbitControls对页面的事件进行监听,并且阻止穿透 ......
  • c: Pointer two-dimensional array
     printf("helloworld,c\n");printf("你好,中国\n");intduArry[]={0,1,2,3,4,5};int*pArr;pArr=duArry;pArr=&duArry[0];intl=sizeof(duArry)/sizeof(duArry[0]);for(inti=0;i<l;i++)......
  • Python turtle.circle()函数
    turtle.circle()函数   定义:turtle.circle(radius,extent=None)   作用:根据半径radius绘制extent角度的弧形   参数:             radius:弧形半径                            当radius值为正数时,圆心在当前位置/小海龟左......
  • Threejs -- TweenJS自定义flyTo函数
    TweenJS参考文档笔记末尾附自定义flyTo函数动画库tweenjs简介和引入项目TweenJS是一个有javascript语言编写的补间动画库,如果需要tweenjs辅助你生成动画,对于任何前端web项目,你都可以选择tweenjs库。如果你是用three.js开发web3d项目,使用tween.js辅助three.js生成动画效果......