hdu 4284 状态压缩
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4284
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std; const int maxn = ;
const int maxm = ;
const int INF = 0x3f3f3f3f; int dp[maxm][<<maxm]; //dp[i][S],当前在i,访问完S中的点还剩的最大money数。最后判断是不是大于等于0.
int dist[maxn][maxn]; //dist[i][j] 表示从i到j,所需的最小花费。
int N,M,Money,H;
int C[maxm],D[maxm];
int Must[maxm]; int main()
{
//freopen("E:\\acm\\input.txt","r",stdin);
int T;
cin>>T;
while(T--){
cin>>N>>M>>Money; for(int i=;i<=N;i++)
for(int j=;j<=N;j++)
dist[i][j] = INF;
for(int i=;i<=N;i++) dist[i][i] = ;
for(int i=;i<=M;i++){
int u,v,w;
scanf("%d %d %d",&u,&v,&w);
if(dist[u][v] > w)
dist[u][v] = dist[v][u] = w; //这个地方没考虑。
} cin>>H;
for(int i=;i<H;i++)
scanf("%d %d %d",&Must[i],&C[i],&D[i]); for(int k=;k<=N;k++)
for(int i=;i<=N;i++)
if(dist[i][k] < INF){
for(int j=;j<=N;j++){
if(dist[k][j] < INF){
dist[i][j] = min(dist[i][j],dist[i][k]+dist[k][j]);
}
}
} memset(dp,-0x3f,sizeof(dp));
for(int i=;i<H;i++){
if(Money -dist[][Must[i]]- D[i]>=)
dp[i][<<i] = Money - dist[][Must[i]] - D[i] + C[i];
} int All = (<<H) - ; //这个地方WA
for(int S=;S<=All;S++){ //理解偏差;
for(int i=;i<H;i++){
if(!((<<i)&S) || dp[i][S] < ) continue; for(int j=;j<H;j++){
if(((<<j)&S) || i == j ) continue;
if(dp[i][S] - dist[Must[i]][Must[j]]- D[j] >= ){
dp[j][<<j|S] = max(dp[j][<<j|S] , dp[i][S] - dist[Must[i]][Must[j]] - D[j] + C[j]);
}
}
}
} bool flag = false;
for(int i=;i<H;i++){
if(dp[i][All] - dist[Must[i]][] >= ){
flag = true; break;
}
} if(flag) printf("YES\n");
else printf("NO\n");
}
}
hdu 4284 状态压缩的更多相关文章
- hdu 4284 状态压缩dp
题意: 有N 个点的无向图,要去其中 h个地点做事,做事需要先办理护照,之后可以挣一定数量的钱,知道了一开始有的总钱数,和 一些城市之间 道路的花费,问可不可以在 指定的 h 个城 ...
- HDU 1074 (状态压缩DP)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1074 题目大意:有N个作业(N<=15),每个作业需耗时,有一个截止期限.超期多少天就要扣多少 ...
- hdu 4739(状态压缩)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4739 思路:状态压缩. #include<iostream> #include<cs ...
- HDU 3341 状态压缩DP+AC自动机
题目大意: 调整基因的顺序,希望使得最后得到的基因包含有最多的匹配串基因,使得所能达到的智商最高 这里很明显要用状态压缩当前AC自动机上点使用了基因的情况所能达到的最优状态 我最开始对于状态的保存是, ...
- hdu 2167(状态压缩基础题)
题意:给你一个矩阵,让你在矩阵中找一些元素使它们加起来和最大,但是当你使用某一个元素时,那么这个元素周围的其它八个元素都不能取! 分析:这是一道比较基础的状态压缩题,也是我做的第三道状态压缩的题,但是 ...
- hdu 1565(状态压缩基础题)
题意:容易理解. 分析:这是我做的状态压缩第二题,一开始超内存了,因为数组开大了,后来超时了,因为能够成立的状态就那么多,所以你应该先把它抽出来!!总的来说还是比较简单的!! 代码实现: #inclu ...
- HDU 2553 状态压缩
N皇后问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- hdu 3006(状态压缩)
The Number of set Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- hdu 2489(状态压缩+最小生成树)
Minimal Ratio Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
随机推荐
- SQL SERVER排序函数
排名函数是SQL Server2005新加的功能.在SQL Server2005中有如下四个排名函数: 1.row_number 2.rank 3.dense_rank 4.ntile 下面分别介绍一 ...
- Java基础--Java内存管理与垃圾回收
Java自动内存管理 在讲解内存管理之前,首先需要了解对象和对象引用的区别 对象是类的一个实例,以人这个类为例,Person是我们定义的一个类 public class Person{} publ ...
- SVM对偶形式
dual svm 对偶SVM linear SVM 可以用二次规划方法解 xn通过非线性转换变成zn SVM配合非线性特征转换 透过large-margin降低模型复杂度 透过特征转换得到弯弯曲曲的边 ...
- gnome中文翻译之po
文件类型: po: 用msginit分析pot文件,生成各语言对应的po文件,比如中文的zh_CN.po. mo: 用msgfmt将po文件编译生成mo文件,这是二进制文件,不能直接编辑. gmo: ...
- DevExpress GridControl 中下拉框联动效果的实现(及支持文本框录入情况)
先解释一下标题: grid中的某一列默认为文本框,根据需要动态的变更为下拉框,且支持动态变更数据源 需求是这样的: 有一些参数(A),这些参数又分别对应另外的参数(B),所以,先把A作为一列,B根据A ...
- CentOS6.5使用本地光盘做yum源 (参考:http://www.jb51.net/os/RedHat/43343.html)
一.使用光盘做yum源安装软件 mkdir /media/CentOS #新建CentOS挂载目录 mount -t auto /dev/cdrom /media/CentOS #挂载CentOS光 ...
- andriod 开发记录apidemos 错误解决
android sdk 里面有simple 文件夹里面有对应的demo 但是拿出来esplise运行报错 解决方案如下 右键错误代码goto,给对应错误的单引号前加 \ 原文http://stack ...
- python中os模块的常用接口和异常中Exception的运用
1.os.path.join(arg1, arg2) 将arg1和arg2对应的字符串连接起来并返回连接后的字符串,如果arg1.arg2为变量,就先将arg1.arg2转换为字符串后再进行连接. 2 ...
- EFBaseDal
public class BaseDal<T> where T : class, new() { DataModelContainer db = new DataMod ...
- html5中的常用的库
JQuery是继prototype之后又一个优秀的Javascript库.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF1.5+, Safari 2.0+, Opera ...