首页 > 其他分享 >0828-T3 天气预报

0828-T3 天气预报

时间:2024-08-29 13:14:53浏览次数:15  
标签:nxt 0828 temp int T3 vis second 天气预报

0828-T3 天气预报

题意

有 \(4\times 4\) 的村庄,有一朵 \(2 \times 2\) 的云,需要控制云上下左右移动,保证每个村庄都不会连续 \(7\) 天以上不下雨,也不会在不能下雨的时间下雨。问是否可以做到。

思路

搜索。

需要注意的是打标记时只用记录时间,云的位置,四个角落的村庄连续未下雨的天数。

因为四个角下雨的次数不大于中间的村庄,只要四个角不干旱,中间一定不会干旱。

代码

#include <bits/stdc++.h>
using namespace std;
int n, f[400][20];
int xz[] = {1, 0, -1, 0, 0, 2, -2, 0, 0};
int yz[] = {0, 1, 0, -1, 0, 0, 0, 2, -2};
struct node {
	pair<int,int> c[4];
	int d[5][5], t;
};
node temp, nxt;
queue <node> q;
bool vis[366][5][5][8][8][8][8];
int trans(pair<int,int> c) {
	return (c.first - 1) * 4 + c.second;
}
int main() {
	while (1) {
		cin >> n;
		if (!n) break;
		for (int i = 1; i <= n; i ++)
			for (int j = 1; j <= 16; j ++)
				cin >> f[i][j];
		temp.c[0] = {2, 2};
		temp.c[1] = {2, 3};
		temp.c[2] = {3, 2};
		temp.c[3] = {3, 3};
		for (int i = 1; i <= 4; i ++)
			for (int j = 1; j <= 4; j ++)
				temp.d[i][j] = 1;
		temp.d[2][2] = 0;
		temp.d[2][3] = 0;
		temp.d[3][2] = 0;
		temp.d[3][3] = 0;
		temp.t = 1;
		while (!q.empty()) q.pop();
		q.push(temp);
		int ans = 0;
		while (!q.empty()) {
			temp = q.front(); q.pop();
			bool ok = 1;
			for (int i = 1; i <= 4; i ++)
				for (int j = 1; j <= 4; j ++)
					if (temp.d[i][j] >= 7) ok = 0;
			for (int i = 0; i < 4; i ++) 
				if (f[temp.t][trans(temp.c[i])]) ok = 0;

			if (!ok) continue;
			if (temp.t == n) {
				ans = 1;
				break;	
			}
			for (int i = 0; i < 9; i ++) {
				nxt = temp; nxt.t ++;
				bool OK = 1;
				for (int j = 1; j <= 4; j ++)
					for (int k = 1; k <= 4; k ++) nxt.d[j][k] ++;
				for (int j = 0; j < 4; j ++) {
					int &x = nxt.c[j].first, 
						&y = nxt.c[j].second;
					x += xz[i], y += yz[i];
					if (x < 1 || y < 1 || x > 4 || y > 4) {
						OK = 0;
						break;
					}
					nxt.d[x][y] = 0;
				}
				if (!OK) continue;
				if (vis[nxt.t][nxt.c[0].first][nxt.c[0].second][nxt.d[1][1]][nxt.d[1][4]][nxt.d[4][1]][nxt.d[4][4]]) continue;
				vis[nxt.t][nxt.c[0].first][nxt.c[0].second][nxt.d[1][1]][nxt.d[1][4]][nxt.d[4][1]][nxt.d[4][4]] = 1;
				q.push(nxt);
			}
		}
		cout << ans << "\n";
		memset(vis, 0, sizeof(vis));
	}
	return 0;
}

标签:nxt,0828,temp,int,T3,vis,second,天气预报
From: https://www.cnblogs.com/maniubi/p/18386470

相关文章

  • 0828-T2 超级幸运数
    0828-T2超级幸运数题意给出数字\(A\),\(B\)。求出以\(A\),\(B\)为两端的数的最小值。思路分\(AB\)和\(BA\)两种情况。当\(x\)和\(y\)拼接时,\(x\)的尾部和\(y\)的头部可以合并。如\(132\)和\(231\)合并出来为\(13231\)。求出\(x\)和\(y\)的最长公共前......
  • NOI2024 D1T3 口胡题解
    NOI2024D1T3口胡题解题目条件其实就是说对于点对\((a,b)\),从\(a\)到\(b\)的路径上至少要有一条从\(b\)指向\(a\)​的边。将初始状态记作\((T,S)\)​,其中\(T\)​是树,\(S\)​是二元组\((a,b)\)​的集合。注意到特殊性质A蕴含了:如果对于所有二元组\((a,b)\),\(a......
  • nuxt3项目自定义环境变量,typescript全局提示
    最近使用nuxt3框架来写项目,其中有一点就是typescript语法提示让人闹心,使用vscode编辑器,如果有语法提示进行编码,工作效率可以提升一个档次。本篇文章说的就是如何在vscode中使用nuxt3框架,自定义环境变量,支持typescript语法提示。列出当前使用的环境版本node#21.4.0......
  • 最完整版-Springboot3集成Knife4j
    一,前言    在使用swagger-bootstrap-ui时我觉得它的样式和蓝色主色调不符合我的审美,所以我觉得使用一个更强的工具 Knife4j。Knife4j是一个用于SpringBoot和SpringCloud的增强Swagger的工具,提供黑色主题和更多配置选项。Knife4j在更名之前,原来的名称是叫swagger-boots......
  • Nuxt3 全局变量接口前缀全局配置,全局方法,全局状态管理
    接口前缀全局配置,全局变量1.像api前缀这类的全局变量一般配置在nuxt.config.ts文件中。如下:nuxt.config.ts可以在public下定义全局变量,且public下的变量可以在客户端和服务端使用在其他任意vue或者js、ts文件中,可通过以下方式获取变量const{public:{apiBase}}=u......
  • 「代码随想录算法训练营」第四十五天 | 图论 part3
    目录101.孤岛的总面积DFS思路BFS思路102.沉没孤岛103.水流问题104.建造最大岛屿101.孤岛的总面积题目链接:https://kamacoder.com/problempage.php?pid=1173文章讲解:https://programmercarl.com/kamacoder/0101.孤岛的总面积.html题目状态:看题解DFS思路思路:代码结构......
  • 【Python爬虫实战】天气数据爬取+数据可视化(完整代码)_爬取天气预报数据并做可视化分析
    一、选题的背景随着人们对天气的关注逐渐增加,天气预报数据的获取与可视化成为了当今的热门话题,天气预报我们每天都会关注,天气情况会影响到我们日常的增减衣物、出行安排等。每天的气温、相对湿度、降水量以及风向风速是关注的焦点。通过Python网络爬虫爬取天气预报让我们快......
  • vant3升级vant4后,使用Toast、Dialog报样式不存在异常解决方法
    异常现象:vant3升级vant4,直接采用v4的方法使用showToast/showDialog,但直接就报错了,如下:[vite]Internalservererror:Failedtoresolveimport"E:/git_sh/project_code/node_modules/vant/es/show-confirm-dialog/style"from"src\service\index.ts".Doesthefile......
  • SBT30100VFCT-ASEMI无人机专用SBT30100VFCT
    编辑:llSBT30100VFCT-ASEMI无人机专用SBT30100VFCT型号:SBT30100VFCT品牌:ASEMI封装:TO-220F批号:最新最大平均正向电流(IF):30A最大循环峰值反向电压(VRRM):100V最大正向电压(VF):0.70V~0..90V工作温度:-65°C~175°C反向恢复时间:35ns芯片个数:2芯片尺寸:74mil引脚数量:3正向浪涌电流......
  • Nuxt3 使用animate.css来实现页面切换过渡效果
    首先,如果两个page分别在不同的layout下,是无法使用pageTransition来实现切换效果的,这时候需要使用layoutTransition来实现切换效果这里采用npmpackage的方式安装animate.css,当然采用cdn的形式也是可以的npmianimate.css然后在app.vue中导入<scriptsetup>import"anima......