Codeforces 533B Work Group】的更多相关文章

http://codeforces.com/problemset/problem/533/B 题目大意: 每个人有一个直接的领导,1是总裁,现在要找一个最大的集合,每个领导领导的人的数量都是偶数,问最大的值是多少 思路: dp:f[i][0]代表以i为根的子树,选出偶数个人的最大值,1反之. #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> #include<i…
前言 自己树形dp太菜了,要重点搞 219D Choosing Capital for Treeland 终于自己做了一道不算那么毒瘤的换根dp 令 \(f[u]\) 表示以 \(u\) 为根,子树内总共需要交换的边数, \(up[u]\) 表示以 \(u\) 为根,子树外总共需要交换的边数. Dfs1 求出 \(f[u]\) ,就有: \[f[u]=\sum_{v∈son[u]} f[v] + (edge[u->v] == 1)\] edge[u->v] 表示 u->v 这条边的方向是…
F. Group Projects time limit per test:2 seconds memory limit per test:256 megabytes input:standard input output:standard output There are n students in a class working on group projects. The students will divide into groups (some students may be in g…
题目链接:http://codeforces.com/problemset/problem/357/A 题目意思:将一堆人分成两组:beginners 和 intermediate coders .每一个人都有一个point,给出每一个point里的总人数(Ci 个人有分数 i )和 x,y,需要找出划分为两组后,每一个组的人数(假设为a,b)符合 x <=  a  <= y 并且 x<= b <= y 的条件,输出这a个人是小于哪个point的,这个point还应该满足另一组的b…
[题目]F. Group Projects [题意]给定k和n个数字ai,要求分成若干集合使得每个集合内部极差的总和不超过k的方案数.n<=200,m<=1000,1<=ai<=500. [算法]动态规划 [题解]每个集合的最小值和最大值非常重要,将序列从小到大排序后,每个集合可以视为最小值到最大值的一条线段. 设$f[i][j][k]$表示前i个数,当前有j条线段没有结束,总和为k的方案数. 转移的关键在于集合权值的拆分,转化为算每个数的贡献.数字a[i+1]的贡献就是覆盖的线段…
A. Vicious Keyboard time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Tonio has a keyboard with only two letters, "V" and "K". One day, he has typed out a string s with only t…
F. Group Projects   There are n students in a class working on group projects. The students will divide into groups (some students may be in groups alone), work on their independent pieces, and then discuss the results together. It takes the i-th stu…
#include <iostream> #include <vector> using namespace std; int main(){ ; cin >> m ; vector<,); ; i <= m ; ++ i) {cin >> c[i];sum+=c[i];} , secondPart = ,firstIndex = , secondIndex =; cin >> x >> y; ,secondIndex =…
题目链接  8VC Venture Cup 2016 - Elimination Round 题意  把$n$个物品分成若干组,每个组的代价为组内价值的极差,求所有组的代价之和不超过$k$的方案数. 考虑DP,$f[i][j][k]$表示考虑到第$i$个物品的时候,还有$j$组尚未分配完毕,当前状态总代价为$k$的方案数. 先把$a[]$升序排序,那么极差就可以转化为后面的元素减前面的元素不停叠加的效果. 当考虑第$i$个物品的时候有$4$种转移方法: 当前物品新开一组并且继续等待分配: 当前物…
题目大意: 给定\(n\)个数\(a[1]\sim a[n]\),让你把它分为若干个集合,使每个集合内最大值与最小值的差的总和不超过\(K\).问总方案数. 解题思路: 一道很神的dp题. 首先将数进行排序,然后将这些数扔数轴上,则集合价值相当于在数轴上覆盖这些点所用的最短线段的长度(当然长度可以为0). 考虑dp,设\(f[i][j][k]\)表示考虑了前\(i\)个点,目前还未确定右端点的集合还有\(j\)条,目前的总价值为\(k\),则 不论如何,新加进\(a[i+1]-a[i]\)这条线…