首页 > 其他分享 >[ABC166F] Three Variables Game

[ABC166F] Three Variables Game

时间:2023-06-09 13:11:05浏览次数:46  
标签:int Variables Three dfs Game ans ABC166F

Three Variables Game の 传送门

Solution

首先,我们每次操作只会修改两个数。

所以考虑 dfs 枚举操作的顺序,但是这让时间复杂度变为 \(O(2^n)\),不能接受。

但是,我们可以判断当 a < 0 || b < 0 || c < 0 时,就退出,这样可以减少绝大部分状态

边界条件:当枚玩 \(n\) 个后,输出用 \(ans\) 数组存下的每次的操作,然后退出程序。

Code

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int n, v[3];
string s[N];
int ans[N];
// v[0] : a
// v[1] : b
// v[2] : c
void dfs(int u) {
	if (v[0] < 0 || v[1] < 0 || v[2] < 0) { return; }
	if (u > n) {
		puts("Yes");
		for (int i = 1; i <= n; ++i) { cout << s[i][ans[i]] << "\n"; }
		exit(0);
	}
	for (int i = 0; i < 2; ++i) {
		ans[u] = i;
		++v[s[u][i] - 'A'];
		--v[s[u][!i] - 'A'];
		dfs(u + 1);
		--v[s[u][i] - 'A'];
		++v[s[u][!i] - 'A'];
	}
	return;
}
int main() {
	cin >> n >> v[0] >> v[1] >> v[2];
	for (int i = 1; i <= n; ++i) { cin >> s[i]; }
	dfs(1);
	puts("No");
	return 0;
}

标签:int,Variables,Three,dfs,Game,ans,ABC166F
From: https://www.cnblogs.com/StrayerTen/p/ABC166F.html

相关文章

  • Three.js教程:常见光源类型
    推荐:将NSDT场景编辑器加入你的3D工具链其他系列工具:NSDT简石数字孪生常见光源类型Threejs虚拟光源是对自然界光照的模拟,threejs搭建虚拟场景的时候,为了更好的渲染场景,往往需要设置不同的光源,设置不同的光照强度,就像摄影师给你拍照要设置各种辅助灯光一样。环境光AmbientLight......
  • Nginx conf for fastapi backend project with variables
    带变量的nginx后端项目配置不同的api项目,挂载不同的域名,只需在配置夹里,修改文件名(建议文件名和域名保持一致)、修改端口号、修改第5行第22行backend_api后面的编号、修改第11行的项目名、可能还需要修改第12行的文件夹名、修改第14行的域名$cat/etc/nginx/sites-avaliable/myap......
  • 使用THREEJS实现一个可调节档位、可摇头的电风扇
    夏天到了,用Three.js实现一个可以摇头和调节档位的电风扇。主要使用到Blender处理3D模型,用Vite+Typescript搭建项目框架。效果演示:一、处理模型1、从爱(bai)给(gei)网下载一个风扇的3D模型,在Blender中打开,给模型贴上图。2、拆解模型。将风扇模型拆解成按钮、底座、扇叶、头部......
  • Three.js系列-报错export ‘Geometry‘ (imported as ‘THREE‘) was not found in ‘
    今天遇到报错export'Geometry'(importedas'THREE')wasnotfoundin'three'port'Geometry'(importedas'THREE')wasnotfoundin'three'(possibleexports:ACESFilmicToneMapping,AddEquation,AddOpe......
  • threejs绘制多边形几何体
    threejs绘制多边形 //创建一个立方体几何体varcubeGeometry=newTHREE.BoxGeometry(0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5);//创建一个多边形几何体varpolygonGeometry=newTHREE.Geometry();//创建多边形的顶点数......
  • AtCoder Beginner Contest 214 G Three Permutations
    洛谷传送门AtCoder传送门比较平凡的一个容斥。考虑把问题转化成,求\(\foralli\in[1,n],r_i\nei\landr_i\nep_i\)的\(r\)方案数。考虑到不弱于错排,所以容斥。设钦定\(i\)个\(r_i\)取了\(i,p_i\)中的一个的方案数为\(f_i\),其余任意,那么:\[ans=\sum\limi......
  • threejs绘制平面多边形
    在Three.js中,可以使用geometry对象和geometryMaterial对象来创建和渲染多边形几何体。下面是一个绘制多边形平面的示例代码: //创建一个立方体几何体varcubeGeometry=newTHREE.BoxGeometry(0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5);......
  • three.js 导入模型合并为一个
    导入的模型文件是个组,里面有多个模型,需要合并为一个,方便操作参考文章https://blog.csdn.net/weixin_52125363/article/details/122454894https://blog.csdn.net/u012483043/article/details/106465465/https://zhuanlan.zhihu.com/p/467005893constobjLoader=newOBJLoader()......
  • Three.js入门
    Three.js的核心五步就是:1.设置three.js渲染器2.设置摄像机camera3.设置场景scene4.设置光源light5.设置物体object1.设置three.js渲染器三维空间里的物体映射到二维平面的过程被称为三维渲染。一般来说我们都把进行渲染操作的软件叫做渲染器。具体来说要进行下面这些处理。(1......
  • webgl 渲染带透明通道的视频(threeJS)
    首先,你需要一个这样的视频 或者一个这样的视频 webgl渲染可以用three.js,上下叠加的代码如下:import*asTHREEfrom'three';letvideoWidth=540;//视频实际的宽度letvideoHeight=540;//原视频实际的高度的一般//定义渲染器varrenderer=new......