hdu 3339 In Action 背包+flyod
来源:互联网 发布:阿里云备案核验单下载 编辑:程序博客网 时间:2024/06/06 01:30
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=3339
题意:
给你一个图,每个点都有权值,然后让你派出多辆坦克,破环至少占权值一半的城市,派出坦克的代价就是从0点到那些城市的距离
求最少代价
题解:
点数很少,注意有重边
跑一发flyod,然后背包dp
代码:
#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#define MP make_pair#define PB push_backconst int INF = 0x3f3f3f3f;const ll INFLL = 0x3f3f3f3f3f3f3f3fLL;inline ll read(){ ll x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}//////////////////////////////////////////////////////////////////////////const int maxn = 100+10;int d[maxn][maxn],d1[maxn],dp[11000],power[maxn];int main(){ int T = read(); while(T--){ int n,m;scanf("%d%d",&n,&m); for(int i=0; i<=n; i++) for(int j=0; j<=n; j++) d[i][j] = INF; for(int i=0; i<m; i++){ int u,v,w; scanf("%d%d%d",&u,&v,&w); d[u][v] = d[v][u] = min(d[u][v],w); } ll aim = 0; for(int i=1; i<=n; i++){ power[i] = read(); aim += power[i]; } for(int k=0; k<=n; k++) for(int i=0; i<=n; i++) for(int j=0; j<=n; j++) d[i][j] = min(d[i][j],d[i][k]+d[k][j]); ll sum = 0; for(int i=0; i<=n; i++) if(d[0][i] < INF) sum += d[0][i]; MS(dp); for(int i=1; i<=n; i++) for(int j=sum; j>=d[0][i]; j--) dp[j] = max(dp[j],dp[j-d[0][i]]+power[i]); ll ans = INF; for(int i=0; i<=sum; i++) if(dp[i]>=(aim/2+1)){ ans = i; break; } if(ans == INF) cout << "impossible\n"; else cout << ans << endl; } return 0;}
0 0
- hdu 3339 In Action 背包+flyod
- hdu 3339 In Action 背包+flyod
- HDU-3339-In Action(Dijkstra+01背包)
- HDU 3339--In Action【Floyd+01背包】
- HDU 3339 In Action (最短路径+DP(01背包))
- In Action 最短路加背包 HDU 3339
- hdu 3339 In Action spfa最短路+01背包
- 【hdu 3339】 In Action (Dijkstra+01背包)
- HDU 3339 In Action 解题报告(最短路+背包)
- HDU 3339 In Action(最短路+背包)
- hdu 3339 In Action(最短路+01背包)
- HDU 3339 In Action(01背包+Dijkstra算法)
- hdu 3339 In Action dijkstra邻接矩阵+01背包
- hdu 3339 In Action(最短路径+01背包)
- HDU-3339 In Action 最短路+01背包
- hdu 3339 In Action 最短路+01背包
- Hdu 3339 In Action[最短路+01背包]
- HDU 3339 In Action 价值为最短路的背包
- .Net程序员学用Oracle系列(19):我知道的导出和导入
- C++作业
- 开始用博客记录成长的点滴
- nginx事件模块解析
- ext4 块读取ext4_bread
- hdu 3339 In Action 背包+flyod
- Linux磁盘管理
- 芬语录3.2
- 从0开始搭建MVP+ViewModel框架的android应用01---MVPVM诞生记
- Android 开发的猜拳游戏
- 线性判别分析LDA的数学原理(二)
- SQL Server中关于跟踪(Trace)那点事
- 简单的介绍5 种字符串拷贝的方法:
- HDU3714