AcWing 324. 贿赂FIPA
大型补档计划
\(f[i][j]\) 表示第 \(i\) 个国家,获得 \(j\) 个国家支持,用的最少花费
\(f[i][0] = 0\)
\(f[i][sz[i]] = w[i]\)
对于每条边 \((u, v)\)
枚举 \(u\) 的第二维 \(j\),\(v\) 的第二维 \(k\) \((k <= j)\)
\(f[u][j] = min(f[u][j], f[v][k] + f[u][j - k])\)
#include <cstdio>
#include <iostream>
#include <map>
#include <string>
#include <cstring>
#include <sstream>
using namespace std;
const int N = 205;
int n, m;
int head[N], numE = 0, out[N], idx = 1;
map<string, int> st;
int sz[N], f[N][N], w[N];
struct E{
	int next, v;
} e[N];
void add(int u, int v) {
	e[++numE] = (E) { head[u], v };
	head[u] = numE;
}
void dfs(int u) {
    sz[u] = 1;
	f[u][0] = 0;
	for (int i = head[u]; i; i = e[i].next) {
		int v = e[i].v;
		dfs(v);
		sz[u] += sz[v];
		for (int j = m; j >= 1; j--)
			for (int k = 1; k <= j; k++)
				f[u][j] = min(f[u][j], f[u][j - k] + f[v][k]);
	}
	f[u][min(sz[u], m)] = min(f[u][min(sz[u], m)], w[u]);
	for (int i = m - 1; i >= 1; i--) f[u][i] = min(f[u][i], f[u][i + 1]);
}
int main() {
	ios::sync_with_stdio(false);
	while (cin >> n >> m) {
		numE = 0; idx = 1;
		memset(head, 0, sizeof head);
		memset(f, 0x3f, sizeof f);
		memset(out, 0, sizeof out);
		st.clear();
		for (int i = 1; i <= n; i++) {
			int val; string s, b, c;
			cin >> c >> val;
			if (!st[c]) st[c] = ++idx;
			w[st[c]] = val;
			int a = st[c];
			getline(cin, s);
			stringstream ss(s);
			while (ss >> b) {
				if (!st[b]) st[b] = ++idx;
				add(a, st[b]); out[st[b]]++;
			}
		}
 		for (int i = 2; i <= idx; i++) if (!out[i]) add(1, i);
 		w[1] = 1e9; dfs(1);
 		cout << f[1][m] << endl;
	}
}
												
											AcWing 324. 贿赂FIPA的更多相关文章
- POJ 3345 Bribing FIPA 树形DP
		
题目链接: POJ 3345 Bribing FIPA 题意: 一个国家要参加一个国际组织, 需要n个国家投票, n个国家中有控制和被控制的关系, 形成了一颗树. 比如: 国家C被国家B控制, 国 ...
 - 腾讯机试题 AcWing 603 打怪兽
		
题目链接:https://www.acwing.com/problem/content/605/ 题目大意: 略 分析: 用dp[i][j]表示用j元钱能在前i只怪兽上所能贿赂到的最大武力值. 有一种 ...
 - poj3345 Bribing FIPA【树形DP】【背包】
		
Bribing FIPA Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5910 Accepted: 1850 Desc ...
 - Codeforces Round #324 (Div. 2)解题报告
		
---恢复内容开始--- Codeforces Round #324 (Div. 2) Problem A 题目大意:给二个数n.t,求一个n位数能够被t整除,存在多组解时输出任意一组,不存在时输出“ ...
 - 百度定位一直出现4.9E -324的问题解决方法
		
问题:华为mate10一直在申请百度定位的时候出现此问题并且定位权限和定位服务都打开的情况也是返回这个参数 明显没有定位成功,其他手机暂时没有出现(只要打开定位权限就会立即定位成功) 解决:在定位之前 ...
 - loadrunner场景报错:Error: CCI compilation error -/tmp/brr_5d65oV/netdir/E/\320\324/Action.c (318): undeclared identifier `LAST'解决思路
		
在windows下写的脚本编译通过 但是拿到linux agent场景执行中就会提示如下,同样的脚本在windows agent下没有任何问题 agent连的是linux负载机 通过脚本一行一行排查, ...
 - leetcode 280.Wiggle Sort 、324. Wiggle Sort II
		
Wiggle Sort: 注意:解法一是每次i增加2,题目不是保证3个3个的情况,而是整个数组都要满足要求. 解法一错误版本: 如果nums的长度是4,这种情况下nums[i+1]会越界.但是如果你用 ...
 - AcWing 143. 最大异或对
		
https://www.acwing.com/problem/content/145 #include <iostream> #include <algorithm> usin ...
 - AcWing 153. 双栈排序
		
https://www.acwing.com/problem/content/155/ #include <cstring> #include <iostream> #incl ...
 
随机推荐
- Mysql事物与二阶段提交
			
1.事务的四种特性(ACID) 事务可以是一个非常简单的SQL构成,也可以是一组复杂的SQL语句构成.事务是访问并且更新数据库中数据的一个单元,在事务中的操作,要么都修改,要么都不做修改,这就是事务 ...
 - rbd的数据在哪里
			
创建一个rbd [root@mytest ~]# rbd create test1 --size 4000 查看rbd信息 [root@mytest ~]# rbd info test1 rbd im ...
 - 关于mybatisPlus一些坑,当条件为null时
			
1.TStaffDepart 属性有值是才匹配条件,会报错,相当于mybatis if 判断 eg:TStaffDepart staffDepart = new TStaffDepart();staf ...
 - 信息论-Turbo码学习
			
1.Turbo码: 信道编码的初期:分组码实现编码,缺点有二:只有当码字全部接收才可以开始译码,需要精确的帧同步时延大,增益损失多 解决方案:卷积码:充分利用前一时刻和后一时刻的码组,延时小,缺点:计 ...
 - HTTP 报文格式简介
			
HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送 WWW 方式的数据,关于 HTTP 协议的详细内容请参考 RFC2616.HTTP 协议采用了请求/响 ...
 - bWAPP----PHP Code Injection
			
PHP Code Injection 主要代码 1 <div id="main"> 2 3 <h1>PHP Code Injection</h1> ...
 - 精尽MyBatis源码分析 - MyBatis 的 SQL 执行过程(一)之 Executor
			
该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...
 - 面试半年,凭借这份JVM面试题,我终于拿到了字节跳动的offer!
			
内存区域 虚拟机栈生命周期与线程相同,描述的是Java 方法执行的内存模型,每个方法在执行的时候都会创建一个栈帧,用于存取局部变量表.操作数栈.动态链接.方法出口等信息本地方法栈与虚拟机栈作用相似,只 ...
 - word-结构图
			
公司单位上下级结构图 总经理 助理 副总经理 财务总监 财务部 人事部 行政部 出口部 进口部 运营总监 储运部 信息部 首先将内容按照上下级排序正确 插入-SmartArt-根据需要选择图形,以上内 ...
 - vue 2.9.6升级到3X版本
			
先通过 npm uninstall vue-cli -g 卸载vue,然后再安装,但是vue -V时依然是2.9.6版本: 第一步: npm config get registry 第二步: npm ...