hdu4536-XCOM Enemy Unknown(爆搜)
随着游戏进展,会有很多的外星人进攻事件.每次进攻外星人会选择3个国家攻击,作为联盟的指挥者,你要安排有限的联盟军去支援其中一个国家,抵抗进攻这个国家的外星人.
战斗胜利之后这个被支援的国家恐慌值就会-2点(恐慌值最少减为1),而其他两个未被支援的国家恐慌值就会+2点,同时和这两个国家在相同大洲的其他国家恐慌值也会+1点. 当一个国家的恐慌值超过5点,这个国家就会对联盟失去信心从而退出联盟. 现在给你外星人将会进攻的地点,问你最多能在不失去任何一个国家信任的情况下抵挡多少次外星人的进攻.[Technical Specification] 0<T<=100 8<n<=16 2<m<=5 0<k<=100 0<初始恐慌值<=5 每个州至少有三个国家 每次外星人进攻一定发生在不同州的三个国家
#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
#include<sstream>
#include<algorithm>
#include<utility>
#include<vector>
#include<set>
#include<map>
#include<queue>
#include<cmath>
#include<iterator>
#include<stack>
using namespace std;
const int INF=1e9+;
const double eps=1e-;
const int maxn=;
int N,M,K;
vector<int> G[maxn];
int bel[maxn],val[maxn],ans;
struct Atk
{
int x,y,z;
Atk(int x=,int y=,int z=):x(x),y(y),z(z){}
}atk[];
bool work(int a,int y)
{
for(int i=;i<G[a].size();i++)
{
int c=G[a][i];
if(c==y) val[c]+=;
else val[c]+=;
if(val[c]>) return false;
}
return true;
}
void dfs(int step)
{
ans=max(ans,step);
if(step>=K) return;
int B[maxn];
for(int i=;i<N;i++) B[i]=val[i];
Atk& t=atk[step];
int x=t.x,y=t.y,z=t.z;
val[x]-=;
if(val[x]<) val[x]=;
if(work(bel[y],y)&&work(bel[z],z)) dfs(step+);
for(int i=;i<N;i++) val[i]=B[i];
val[y]-=;
if(val[y]<) val[y]=;
if(work(bel[x],x)&&work(bel[z],z)) dfs(step+);
for(int i=;i<N;i++) val[i]=B[i];
val[z]-=;
if(val[z]<) val[z]=;
if(work(bel[x],x)&&work(bel[y],y)) dfs(step+);
for(int i=;i<N;i++) val[i]=B[i];
return;
}
int main()
{
int T,Case=;
scanf("%d",&T);
while(T--)
{
for(int i=;i<maxn;i++) G[i].clear();
scanf("%d%d%d",&N,&M,&K);
int x,y,z;
for(int i=;i<N;i++)
{
scanf("%d",&x);
bel[i]=x;
G[x].push_back(i);
}
for(int i=;i<N;i++) scanf("%d",&val[i]);
for(int i=;i<K;i++)
{
scanf("%d%d%d",&x,&y,&z);
atk[i]=Atk(x,y,z);
}
ans=;
dfs();
printf("Case #%d: %d\n",++Case,ans);
}
return ;
}
hdu4536-XCOM Enemy Unknown(爆搜)的更多相关文章
- HDU4536 XCOM Enemy Unknown(dfs)
题目链接. 分析: 用dfs枚举每一波攻击的三个国家. 很暴力,但没想到0ms. #include <iostream> #include <cstdio> #include ...
- 【BZOJ-1853&2393】幸运数字&Cirno的完美算数教室 容斥原理 + 爆搜 + 剪枝
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 1817 Solved: 665[Submit][Status] ...
- POJ 1166 The Clocks (爆搜 || 高斯消元)
题目链接 题意: 输入提供9个钟表的位置(钟表的位置只能是0点.3点.6点.9点,分别用0.1.2.3)表示.而题目又提供了9的步骤表示可以用来调正钟的位置,例如1 ABDE表示此步可以在第一.二.四 ...
- 【 POJ - 1204 Word Puzzles】(Trie+爆搜|AC自动机)
Word Puzzles Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 10782 Accepted: 4076 Special ...
- hdu5323 Solve this interesting problem(爆搜)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Solve this interesting problem Time Limit ...
- poj1077 Eight【爆搜+Hash(脸题-_-b)】
转载请注明出处,谢谢:http://www.cnblogs.com/KirisameMarisa/p/4298840.html ---by 墨染之樱花 题目链接:http://poj.org/pr ...
- [NOIP2015] 斗地主 大爆搜
考试的时候想了半天,实在是想不到解决的办法,感觉只能暴力..然后暴力也懒得打了,小数据模拟骗30分hhh 然而正解真的是暴力..大爆搜.. 然后我的内心拒绝改这道题(TAT) 不过在wcx大佬的帮助下 ...
- BZOJ 1207: [HNOI2004]打鼹鼠【妥妥的n^2爆搜,dp】
1207: [HNOI2004]打鼹鼠 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3259 Solved: 1564[Submit][Statu ...
- HDU 4403 A very hard Aoshu problem(dfs爆搜)
http://acm.hdu.edu.cn/showproblem.php?pid=4403 题意: 给出一串数字,在里面添加一个等号和多个+号,使得等式成立,问有多少种不同的式子. 思路: 数据量比 ...
随机推荐
- hdu3308--LCIS 最大连续递增序列长度
这个是动态的,所以要用线段树维护.代码里有注释因为ls敲成lsum,rs敲成rsum查错查了好久.. #include <set> #include <map> #includ ...
- Spring MVC + Spring MongoDB + Querydsl 通过maven整合实例
效果图 一共3个页面:注册页,欢迎页,用户列表页 很简单的例子,主要是为了把流程走通,没有各种验证. 注册页: 欢迎页: 用户列表页: 源码地址 https://github.com/lemonbar ...
- 一个提供jsp免费空间的站点
EATJ美国JSP虚拟主机商提供免费jsp空间申请,50M空间,每月3G的流量限制,支持Java5.0/6.0.PHP.CGI.Perl.SSI等,提供2个MySQL数据库,Tomcat v5.5/v ...
- VC++ 坐标问题总结,控件大小随窗口变化
[出处:blog.csdn.net/lanmanck] 一般变控件位置和大小在OnSize()消息中处理,不外乎几个函数: GetClientRect(),GetClientRect(),Screen ...
- eclipse 集成maven插件
本文转载自:http://www.blogjava.net/fancydeepin/archive/2012/07/13/eclipse_maven3_plugin.html 环境准备: eclips ...
- Key lock 的秘密
研究死锁,或者观察sp_lock,有时候最恼人的莫过于你看到下面研究成果的key lock,但是却不知道究竟是哪个page 哪个row被lock住了: Exec sp_lock: 就说上面的key ...
- 1、solr 查询
solr查询参数: q 查询的关键字,此参数最为重要,例如,q=id:1,默认为q=*:*, fl 指定返回哪些字段,用逗号或空格分隔,注意:字段区分大小写,例如,fl= id,title,sor ...
- volatile举列说明const
1.即使本程序中虽然不改变这种类型的值,但别的比如中断程序可能会改变这个值,加上volatile,编译器不优化,每次都重新访问这个值做判断 2.如 unsigned char flag = 1; in ...
- 新浪短链接API接口示例
<?php /** * URL地址长短切换,由sina新浪短链接API生成 * User: chenqt * Date: 2016/8/23 * Time: 18:45 */ class Url ...
- python functools.wraps装饰器模块
# -*-coding=utf-8 -*-#实现一个函数执行后计算执行时间的功能 __author__ = 'piay' import time, functools def foo(): ''' 定 ...