HDU4536 XCOM Enemy Unknown(dfs)
题目链接。
分析:
用dfs枚举每一波攻击的三个国家。
很暴力,但没想到0ms。
#include <iostream>
#include <cstdio>
#include <vector> using namespace std; const int maxn = ; int p[maxn], nervous[maxn], n, m, k, max_cnt;
int att[][]; void dfs(int cn) {
//界限
if(max_cnt >= k) return ;
if(cn >= k) {
max_cnt = k; return ;
} int a[], bak[];
for(int v=; v<; v++) { //枚举支援的国家
/*
* 被支援的国家为 att[cn][v]
* 其他两个国家为 att[cn][(v+1)%3] 和 att[cn][(v+2)%3]
*/
a[] = att[cn][v]; //将国家序号存起来,方便调用
a[] = att[cn][(v+)%];
a[] = att[cn][(v+)%]; bak[] = nervous[a[]]; //备份
bak[] = nervous[a[]];
bak[] = nervous[a[]]; nervous[a[]] -= ;
if(nervous[a[]] < ) nervous[a[]] = ;
nervous[a[]] += ;
nervous[a[]] += ; //数据已经保证受攻击的3个国家一定在不同的洲
for(int i=; i<n; i++) {
if(p[i] == p[a[]] && i != a[]) nervous[i]++;
if(p[i] == p[a[]] && i != a[]) nervous[i]++;
} //价差是否都小于5
int flag = true;
for(int i=; i<n; i++) {
if(nervous[i] > ) {
max_cnt = max(max_cnt, cn);
flag = false;
}
} if(flag) dfs(cn+); //还原
for(int i=; i<n; i++) {
if(p[i] == p[a[]] && i != a[]) nervous[i]--;
if(p[i] == p[a[]] && i != a[]) nervous[i]--;
} nervous[a[]] = bak[];
nervous[a[]] = bak[];
nervous[a[]] = bak[];
}
} int main(){
int T; scanf("%d", &T); for(int kase=; kase<=T; kase++) {
scanf("%d%d%d", &n, &m, &k); for(int i=; i<n; i++) {
scanf("%d", &p[i]);
} for(int i=; i<n; i++) {
scanf("%d", &nervous[i]);
} for(int i=; i<k; i++) {
scanf("%d %d %d", &att[i][], &att[i][], &att[i][]);
} max_cnt = ;
printf("Case #%d: ", kase); //搜索
dfs(); printf("%d\n", max_cnt);
} return ;
}
HDU4536 XCOM Enemy Unknown(dfs)的更多相关文章
- LeetCode Subsets II (DFS)
题意: 给一个集合,有n个可能相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: 看这个就差不多了.LEETCODE SUBSETS (DFS) class Solution { publ ...
- LeetCode Subsets (DFS)
题意: 给一个集合,有n个互不相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: DFS方法:由于集合中的元素是不可能出现相同的,所以不用解决相同的元素而导致重复统计. class Sol ...
- 黑白图像(DFS)
输入一个n*n的黑白图像(1表示黑色,0表示白色),任务是统计其中八连块的个数.如果两个黑格子有公共边或者公共顶点,就说它们属于同一个八连块.如图6-11所示的图形有3个八连块. 图6-11 拥有3 ...
- HDU 2553 N皇后问题(dfs)
N皇后问题 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description 在 ...
- POJ 1562(L - 暴力求解、DFS)
油田问题(L - 暴力求解.DFS) Description The GeoSurvComp geologic survey company is responsible for detecting ...
- 深搜(DFS)广搜(BFS)详解
图的深搜与广搜 一.介绍: p { margin-bottom: 0.25cm; direction: ltr; line-height: 120%; text-align: justify; orp ...
- 【算法导论】图的深度优先搜索遍历(DFS)
关于图的存储在上一篇文章中已经讲述,在这里不在赘述.下面我们介绍图的深度优先搜索遍历(DFS). 深度优先搜索遍历实在访问了顶点vi后,访问vi的一个邻接点vj:访问vj之后,又访问vj的一个邻接点, ...
- 深度优先搜索(DFS)与广度优先搜索(BFS)的Java实现
1.基础部分 在图中实现最基本的操作之一就是搜索从一个指定顶点可以到达哪些顶点,比如从武汉出发的高铁可以到达哪些城市,一些城市可以直达,一些城市不能直达.现在有一份全国高铁模拟图,要从某个城市(顶点) ...
- 深度优先搜索(DFS)和广度优先搜索(BFS)
深度优先搜索(DFS) 广度优先搜索(BFS) 1.介绍 广度优先搜索(BFS)是图的另一种遍历方式,与DFS相对,是以广度优先进行搜索.简言之就是先访问图的顶点,然后广度优先访问其邻接点,然后再依次 ...
随机推荐
- Axure7.0.0.3155注册码
Licence:aaa Key1:h624pifAqt7It5e8boKkML+Y4RjDX5xknP4k7QktJYQoxsvv7VUS7hBCv/2ef45P Key2:2GQrt5XHYY7SB ...
- iframe页面改动parent页面的隐藏input部件value值,不能触发change事件。
实现一个依据iframe页面返回充值卡类型不同,安排不同的input部件. 点击选择弹出一个iframe.点击充值卡数据行.返回1.充值卡类型.2.充值卡id(用的UUID).3.充值卡号(字符串). ...
- JavaScript--execCommand指令集
execCommand方法是执行一个对当前文档,当前选择或者给出范围的命令.处理Html数据时常用 如下格式:document.execCommand(sCmd,交互方式, 动态参数) .其中:sCm ...
- Activity的任务栈Task以及启动模式与Intent的Flag详解
什么是任务栈(Task) 官方文档是这么解释的 任务是指在执行特定作业时与用户交互的一系列 Activity. 这些 Activity 按照各自的打开顺序排列在堆栈(即“返回栈”)中. 其实就是以栈的 ...
- Linux基础系列—Linux内核源码目录结构
/** ****************************************************************************** * @author 暴走的小 ...
- 解决JFreeChart中文乱码问题
以下是解决X轴,Y轴中文字符乱码的代码: JFreeChart chart = ChartFactory.createBarChart3D("管网损耗",// 图表标题 " ...
- Oracle 存储过程(2)
http://www.cnblogs.com/chinafine/archive/2010/07/12/1776102.html http://blog.itpub.net/29485627/view ...
- web开发 关于src跳转
src跳转看传递的参数值,如果参数值一样就不会再次跳转,也不会向后台的服务器提供request. 想要随时都能跳转可以传递不同的参数,如 onClick="this.src='http:// ...
- 【USACO 3.2.4】饲料调配
[描述] 农夫约翰从来只用调配得最好的饲料来喂他的奶牛.饲料用三种原料调配成:大麦,燕麦和小麦.他知道自己的饲料精确的配比,在市场上是买不到这样的饲料的.他只好购买其他三种混合饲料(同样都由三种麦子组 ...
- HTML语义化标签(二)
为了保证网页去样式后的可读性,并且又符合web标准,应该注意一下几点: 1 尽可能少的使用无语义的标签div和span: 2 在语义不明显时,既可以使用div或者p时,尽量用p, 因为p在默认情况 ...