[POJ 3345] Bribing FIPA
[题目链接]
http://poj.org/problem?id=3345
[算法]
树形背包
[代码]
- #include <algorithm>
- #include <bitset>
- #include <cctype>
- #include <cerrno>
- #include <clocale>
- #include <cmath>
- #include <complex>
- #include <cstdio>
- #include <cstdlib>
- #include <cstring>
- #include <ctime>
- #include <deque>
- #include <exception>
- #include <fstream>
- #include <functional>
- #include <limits>
- #include <list>
- #include <map>
- #include <iomanip>
- #include <ios>
- #include <iosfwd>
- #include <iostream>
- #include <istream>
- #include <ostream>
- #include <queue>
- #include <set>
- #include <sstream>
- #include <stdexcept>
- #include <streambuf>
- #include <string>
- #include <utility>
- #include <vector>
- #include <cwchar>
- #include <cwctype>
- #include <stack>
- #include <limits.h>
- using namespace std;
- #define MAXN 210
- const int INF = 2e9;
- int i,j,k,root,n,m,tot,u,v,x,ans;
- int size[MAXN],fa[MAXN],val[MAXN];
- int f[MAXN][MAXN];
- char s[MAXN];
- map< string,int > mp;
- vector< int > e[MAXN];
- inline void dp(int u)
- {
- int i,j,k,v;
- f[u][] = ;
- size[u] = ;
- for (i = ; i < (int)e[u].size(); i++)
- {
- v = e[u][i];
- dp(v);
- size[u] += size[v];
- for (j = size[u]; j >= ; j--)
- {
- for (k = ; k <= size[v]; k++)
- {
- f[u][j] = min(f[u][j],f[u][j - k] + f[v][k]);
- }
- }
- }
- if (u != root) f[u][size[u]] = min(f[u][size[u]],val[u]);
- }
- int main()
- {
- while (scanf("%s",&s) != EOF && strcmp(s,"#") != )
- {
- scanf("%d",&m);
- n = ;
- for (i = ; s[i] != '\0'; i++) n = n * + s[i] - '';
- tot = ;
- mp.clear();
- memset(val,,sizeof(val));
- memset(fa,,sizeof(fa));
- for (i = ; i <= n; i++) e[i].clear();
- for (i = ; i <= n; i++)
- {
- scanf("%s%d",&s,&x);
- if (!mp[s]) mp[s] = ++tot;
- u = mp[s];
- val[u] = x;
- while (getchar() != '\n')
- {
- scanf("%s",&s);
- if (!mp[s]) mp[s] = ++tot;
- v = mp[s];
- e[u].push_back(v);
- fa[v] = u;
- }
- }
- root = ;
- for (i = ; i <= n; i++)
- {
- if (!fa[i])
- e[root].push_back(i);
- }
- memset(size,,sizeof(size));
- memset(f,0x3f,sizeof(f));
- dp(root);
- ans = INF;
- for (i = m; i <= n; i++) ans = min(ans,f[][i]);
- printf("%d\n",ans);
- }
- return ;
- }
[POJ 3345] Bribing FIPA的更多相关文章
- POJ 3345 Bribing FIPA 树形DP
题目链接: POJ 3345 Bribing FIPA 题意: 一个国家要参加一个国际组织, 需要n个国家投票, n个国家中有控制和被控制的关系, 形成了一颗树. 比如: 国家C被国家B控制, 国 ...
- poj 3345 Bribing FIPA (树形背包dp | 输入坑)
题目链接: poj-3345 hdu-2415 题意 有n个国家,你要获取m个国家的支持,获取第i个国家的支持就要给cost[i]的价钱 其中有一些国家是老大和小弟的关系,也就是说,如果你获 ...
- poj3345 Bribing FIPA【树形DP】【背包】
Bribing FIPA Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5910 Accepted: 1850 Desc ...
- HDU 2415 Bribing FIPA
Bribing FIPA Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Original I ...
- Bribing FIPA
Bribing FIPA 给出多棵有n个节点的有根树,第i个节点有一个权值\(a_i\),定义一个点能控制的点为其所有的子节点和它自己,询问选出若干个点的最少的权值之和,并且能够控制大于等于m个点,\ ...
- POJ3345 Bribing FIPA
Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5021 Accepted: 1574 Description There ...
- POJ3345 Bribing FIPA 【背包类树形dp】
题目链接 POJ 题解 背包树形dp板题 就是读入有点无聊,浪费了很多青春 #include<iostream> #include<cstdio> #include<cm ...
- poj 3345 树形DP 附属关系+输入输出(好题)
题目连接:http://acm.hust.edu.cn/vjudge/problem/17665 参考资料:http://blog.csdn.net/woshi250hua/article/detai ...
- POJ3345 Bribing FIPA(树形DP)
题意:有n个国家,贿赂它们都需要一定的代价,一个国家被贿赂了从属这个国家的国家也相当于被贿赂了,问贿赂至少k个国家的最少代价. 这些国家的从属关系形成一个森林,加个超级根连接,就是一棵树了,考虑用DP ...
随机推荐
- Linux通信之poll机制分析
poll机制分析 韦东山 2009.12.10 所有的系统调用,基于都可以在它的名字前加上“sys_”前缀,这就是它在内核中对应的函数.比如系统调用open.read.write.poll,与之对应的 ...
- css下拉菜单写法
网页导航栏的下拉效果,通过div框的显示和隐藏实现. <html> <head> <meta charset="UTF-8"> <titl ...
- AI:IPPR的数学表示-CNN方法
前言: 随着超量类别PR和高精度的需求,人工特征方法局限性凸显出来,固定的特征hash压缩映射因其压缩损失.表现为特定的特征hash方法,在海量的同类数据集上近邻特性变差,而在不同类别的数据上面隔离性 ...
- 【sqli-labs】 less36 GET- Bypass MYSQL_real_escape_string (GET型绕过MYSQL_real_escape_string的注入)
看一下mysql_real_escape_string()函数 \x00 \x1a 注入的关键还是在于闭合引号,同样使用宽字节注入 http://192.168.136.128/sqli-labs-m ...
- SQL 分组
- Django 路由视图FBV/CBV
路由层 url路由层结构 from django.conf.urls import url from django.contrib import admin from app01 import vi ...
- [luogu4478 BJWC2018] 上学路线 (容斥原理+拓展lucas)
传送门 Description 小B 所在的城市的道路构成了一个方形网格,它的西南角为(0,0),东北角为(N,M). 小B 家住在西南角,学校在东北角.现在有T 个路口进行施工,小B 不能通过这些路 ...
- 三剑客基础详解(grep、sed、awk)
目录 三剑客基础详解 三剑客之grep详解 1.通配符 2.基础正则 3.grep 讲解 4.拓展正则 5.POSIX字符类 三剑客之sed讲解 1.sed的执行流程 2.语法格式 三剑客之Awk 1 ...
- Linux启用ftp服务及连接
虚拟机的系统是centos6.3 第一步.启动ftp service vsftpd restart 提示 vsftpd: 未被识别的服务 解决方法是升级vsftpd服务 yum install vsf ...
- Q&A to prepare interview of HSBC
1.How do you keep updating lastest IT knowledge? 1).keep an eye on current project technology evetho ...