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相对,是以广度优先进行搜索.简言之就是先访问图的顶点,然后广度优先访问其邻接点,然后再依次 ...
随机推荐
- javascript中错误使用var造成undefined
在javascript中依据变量作用的范围不同分为局部变量和全局变量,直接定义的变量是全局变量,全局变量能够被全部的脚本訪问:在函数中定义的变量是局部变量,局部变量仅仅在函数内有效. 假设全局变量和局 ...
- MySQL如何有效地创建基于 INNODB 引擎的表
2016-05-27 赵伟 数据库开发者 有用户问我们为什么下面这个建表语句会执行失败,报错是 "Row size too large ...."下面我就以这个例子出发讲一讲使用m ...
- gridview添加header
gridview是不能添加header的,这里的解决方法是将listview改造成gridview使用,功能很好用,唯一的缺点是列数不能自适应 示例代码下载地址http://pan.baidu.com ...
- Android(java)学习笔记240:多媒体之图形颜色的变化
1.相信大家都用过美图秀秀中如下的功能,调整颜色: 2. 下面通过案例说明Android中如何调色: 颜色矩阵 ColorMatrix cm = new ColorMatrix(); paint.se ...
- jquery $('#btn').click与$("#btn").live("click",function()有什么区别?
live方法绑定的事件处理函数,在页面中未来添加的元素只要满足原来的选择器,仍然会导致事件触发.普通的事件绑定则没有这个效果.对于#btn这个选择器来说,如果你未来将id为btn的元素删除,然后再创建 ...
- 一个类实现多个接口的demo
//A接口 interface A{ public int getA(); } //B接口 interface B{ public int getB(); } //实现了某个接口必须实现其全部的方法 ...
- php SESSION 不能跨页面传递
今天想用一个session来实现用户登录判断,也算是对之前session的探究,查了下资料session的运行机制如下: session是服务器端的一种会话机制,当客户端的请求服务器创建一个sessi ...
- ChesFrame框架介绍
一直以来想写一个框架,想达到的目的: 1.对曾经做过项目的总结 2.节约构建系统的成本,不用每次都从零开始做起 3.写框架并在使用中不断的完善框架,这也是个积攒过程. 经历了一个多月的时间,一个基本的 ...
- 初定为EGame
[Q]在纠结到底要用什么方式写博客,是原生态记录框架编写过程(有点所谓的手把手教学的感觉有木有),还是每个模块整合完毕后写分析文章,新手没有写过博客,不知道那种效果好.朋友们给点建议? 这套框架的初衷 ...
- linq的一些用法总结
获取列表数据. IList<Model> list = dao.getmx(Model, pageInfo);//获取数据列表 1.将列表中id一样的数据进行group by分组,并返回序 ...