Codeforces 433A (背包)】的更多相关文章

题面 传送门 真是令人胃疼的题面 我不管,我要把苹果都给雪菜!(滑稽)(冬马党不要打我) 分析 突然感觉这题跟今年NOIP Day1T2有点像,都是根据数加减来构造背包,只不过这题是01背包而不是完全背包 背包模型: 设总和为sum,则容量为sum/2 其实本题不需要代价,dp[j]为1表示容量为j时能装满,否则不能 直接 dp[j]=dp[j-a[i]] (dp[j-a[i]]>0)即可 代码 #include<iostream> #include<cstdio> #def…
题目传送门 /* 题意:n个程序员,每个人每行写a[i]个bug,现在写m行,最多出现b个bug,问可能的方案有几个 完全背包:dp[i][j][k] 表示i个人,j行,k个bug dp[0][0][0] = 1 表示不选择人的时候所有的bug的种类犯错误都只有一种 dp[i][j][k] += dp[i%2][j-1][k-a[i]]: 错误示范:dp[i][j][k] += dp[i-1][j-l][k-l*a[i]]; 其实要从上一行的状态推出,即少一行 内存限制,滚动数组使用 详细解释:…
http://codeforces.com/contest/741/problem/B 题意:有 n 个人,每个人有一个花费 w[i] 和价值 b[i],给出 m 条边,代表第 i 和 j 个人是一个集合的,给出一个最大花费 w,如果一个集合的人不能同时选的话,那么只能选集合中的其中一个或者不选,问按照这样的规则选得的花费不超过 w 的最大价值是多少. 思路:一开始搞个带权并查集出来,后来还是蒙了.之后看原来是01背包,然而已经N久没见过背包了...先用并查集弄出集合,然后对每个集合中的元素进行…
题目链接:http://codeforces.com/problemset/problem/106/C 根据题意列出式子,设每种蛋糕做了xi个,则对于每种材料bi*xi<=ai. 对于dough,有sum(ci*xi) + c0*x0 <=n. 要使得sum(di*xi)+d0*x0最大,立即转化为多重背包,有xi<=ai/bi.这是物品i的数量限制,背包的容量为n,每件物品的体积为ci,价值为di.由于数据比较弱,就算直接拆分成0-1背包都可以做.. 贴代码: #include<…
B. Modulo Sum Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/577/problem/B Description You are given a sequence of numbers a1, a2, ..., an, and a number m. Check if it is possible to choose a non-empty subsequence aij such…
题目链接:http://codeforces.com/problemset/problem/212/E 题目大意:给你一个无向树,现在用两种颜色去给这颗树上的节点染色.用(a,b)表示两种颜色分别染的节点数.满足以下条件:1.任何一种颜色至少使用一次,即a>=1&&b>=1.2.两种颜色染的节点不能相邻,即不能有边的两端染不同色.要你使a+b值最大下输出不同的(a,b),按照a升序输出. 算法思路:很容易得出一个结论:a+b的最大值就是取n-1,即只有一个点不染色.我们就想到树…
2018-03-11 http://codeforces.com/contest/946/problem/D D. Timetable time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Ivan is a student at Berland State University (BSU). There are n days in…
https://codeforces.com/contest/1111/problem/D 多重排列 + 反向01背包 题意: 给你一个字符串(n<=1e5,n为偶数),有q个询问,每次询问两个位置x和y,问将和x,y相同的所有字符移到前半段或者后半段,并且剩下的所有字符都要在同一半段的方案数,字符是大写小写字母 题解: 首先不考虑x和y位置,假设前半段的排列数为\((n/2)!/(cnt[x_1]!*...*cnt[x_n]!)\),后半段的排列为\((n/2)!/(cnt[y_1]!*...…
题目链接:http://codeforces.com/problemset/problem/946/D 题目大意:有n个字符串,代表n天的课表,1表示这个时间要上课,0表示不要上课,一天在学校时间为第一节课到最后一节课的时间.总共,可以逃过k次课,求至少需要在学校多少时间. 解题思路:听了大佬说背包,然后预处理就想了20多分钟,比赛结束,GG...先是预处理出v[i][k]即第i天逃k节课的能节约的最多时间,至于怎么求,直接枚举k,然后枚举两端1的位置即可.然后就可以做分组背包了,这就不说了,很…
题目连接:http://codeforces.com/contest/999/problem/F 解题心得: 题意说的很复杂,就是n个人玩游戏,每个人可以得到k张卡片,每个卡片上有一个数字,每个人有一个喜欢的数字,每一个玩游戏的人如果有不同数量自己喜欢的卡片就有不同的欢乐值.问怎样分配使欢乐值最大. 就是一个组合背包的问题,dp[i][j]代表有i个人,j张喜欢的卡片,得到的总欢乐值最大是多少.在转移的过程中只需要枚举第i个人有几张自己最喜欢的卡片就可以了. 转移方程式dp[i][j] = ma…
题目链接:http://codeforces.com/problemset/problem/366/C 题意: 有n个物品,每个物品有两个属性a[i]和b[i]. 给定k,让你选出一些物品,使得 ∑ a[i] / ∑ b[i] = k. 问你选出物品的 ∑ a[i]最大是多少. 题解: 将原式变形: ∑ a[i] - k * ∑ b[i] = 0 可以看做有一个容积为0的箱子,每个物品的价值为a[i],体积为a[i] - k*b[i],问你最大总价值. 这就变成了01背包. 但是体积a[i] -…
题目链接:http://codeforces.com/contest/742/problem/D D. Arpa's weak amphitheater and Mehrdad's valuable Hoses time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Just to remind, girls in Arpa's lan…
题目传送门 /* 题意:选择k个m长的区间,使得总和最大 01背包:dp[i][j] 表示在i的位置选或不选[i-m+1, i]这个区间,当它是第j个区间. 01背包思想,状态转移方程:dp[i][j] = max (dp[i-1][j], dp[i-m][j-1] + sum[i] - sum[i-m]); 在两个for循环,每一次dp[i][j]的值都要更新 */ #include <cstdio> #include <cstring> #include <algorit…
http://codeforces.com/gym/100502/attachments 题意:有n个点,容量为tol,接下来n个关系,表示选了第i个点,那么第xi个点就必须被选.问最多可以选多少个点使得不超过容量tol. 思路:由题目样例可得,边可能出现自环的情况,这个时候这条边其实没用.然后因为是一个图,所以需要缩点,缩完之后用一个sz数组表示点的大小,重新建一幅图.因为有可能是森林,所以需要添加一个虚根,使得其变成一棵树.然后题目就转变为求有依赖的树上背包了. 我是学了这篇博客的写法:ht…
http://codeforces.com/problemset/problem/730/J 题意:有n个瓶子,每个瓶子有一个当前里面的水量,还有一个瓶子容量,问要把所有的当前水量放到尽量少的瓶子里至少需要几个瓶子,还有最少需要倒的水量(把一个瓶子的水倒到另一个瓶子的总水量). 思路:是一个背包dp,dp[i][j] 表示选择i个瓶子容量为j的时候当前拥有的最大的水量.不过第三层循环当时不知道应该怎么写. #include <cstdio> #include <cstring> #…
632E:http://codeforces.com/problemset/problem/632/E 参考:https://blog.csdn.net/qq_21057881/article/details/51023067 题意: 给定n个值,让你选择k个数,可以重复选择,问可以得到哪些数字. 思路: 显然最小的值起到很大的作用,我们可以把每个值都减去这个最小值,利用完全背包,建立dp[i]表示,取到 i 这么多值最少需要多少个数.如果取到 i值需要的数值小于等于K,那么k * 最小值 +…
题目链接:http://codeforces.com/contest/864/problem/E 题解:这题一看就很像背包但是这有3维限制也就是说背包取得先后也会对结果有影响.所以可以考虑sort来降低维度(这是常用的方法) 然后就是简单的有限背包至于这题还要求存下娶了哪些东西可以用vector来存. #include <iostream> #include <cstring> #include <cstdio> #include <vector> #inc…
题目链接:http://codeforces.com/contest/688/problem/E 题解:设dp[s1][s2]表示s1状态下出现s2是否合理.那么s1显然可以更具01背包来得到状态.首先看一下转移方程 if(dp[i-a[k]][j]) => (1)dp[i][j]=dp[i-a[k]][j], (2)dp[i][j+a[k]]=dp[i-a[k]][j] 解释(1),(2) 怎么得到的:当i-a[k]的状态存在那么显然可以推到i这个状态,那么j这个状态要么加上a[k]要么不加a…
题目链接 :http://codeforces.com/contest/742/problem/D 题意:给你n个女人的信息重量w和美丽度b,再给你m个关系,要求邀请的女人总重量不超过w 而且如果邀请了一个女人要么就邀请她一个,要么要邀请她还有她所有的朋友. 很明显是一道并查集+背包的问题,并不难.要注意的是背包的写法,由于选择情况有两种 1)只选一个女人 2)选和这个女人有关系的一群女人 于是背包最外层是关系数,即联通块的个数,次外层是背包大小,内层是联通个数(由于选择的要求在一个联通块中 只…
题目链接:http://codeforces.com/contest/284/problem/E 题意:n种类型的硬币,硬币的面值可能相同,现在要在满足一些限制条件下求出,用这些硬币构成t面值的方案数:每个限制条件:a,b表示a种类型的硬币要大于b种类型的硬币: 题解:显然如果哪些条件构成环的话就不存在直接输出0.那么可行的情况下要先预处理一下,假设a>b>c>d 那么最少的选择方式是(3,2,1,0)这个必须先预处理一下,然后还有,假如增加a的数量,那么b,c,d的数 量就不受影响,但…
https://codeforces.com/contest/1132/problem/E 题意 有8种物品,重量是1~8,每种数量是\(cnt[i]\)(1e16),问容量为W(1e18)的背包最多能装多少重量 题解1 多重背包二进制拆分物品转换成01背包,用map来剪枝掉无用的状态 #include<bits/stdc++.h> #define ll long long using namespace std; map<ll,bool>f,g; ll a[10],W,s[100…
题目链接:http://codeforces.com/contest/356/problem/D 思路(官方题解):http://codeforces.com/blog/entry/9210 此题需要注意,直接用01背包会TLE, 需要看成多重背包,倍增优化一下. 代码: #include <bits/stdc++.h> #define LL long long #define pii pair<int, int> using namespace std; const int ma…
Codeforces 题面传送门 & 洛谷题面传送门 智商掉线/ll 本来以为是个奇怪的反悔贪心,然后便一直往反悔贪心的方向想就没想出来,看了题解才发现是个 nb 结论题. Conclusion. 在最优方案中,至多只有一个数组只有部分被选,其余数组要么全选要么全都不选. 证明:考虑调整.假设存在两个数组 \(x,y\) 分别选了前 \(p,q\) 个元素,这里不妨假设 \(a_{x,p+1}\ge a_{y,q+1}\),那么考虑从 \(y\) 数组中拎 \(l=\min(len_x-p,q)…
Codeforces 题目传送门 & 洛谷题目传送门 首先看到这题我的第一反应是:这题跟这题长得好像,不管三七二十一先把 \(k\) 次方展开成斯特林数的形式,\(f(X)^k=\sum\limits_{i=0}^k\begin{Bmatrix}k\\i\end{Bmatrix}\dbinom{f(X)}{i}\),于是我们只需对所有 \(i\in[0,k]\) 求出 \(\sum\dbinom{f(X)}{i}\) 即可. 然后就不会做了/dk/wq 考虑 \(\dbinom{f(X)}{i}…
传送门 Description Hasan and Bahosain want to buy a new video game, they want to share the expenses. Hasan has a set of N coins and Bahosain has a set of M coins. The video game costs W JDs. Find the number of ways in which they can pay exactly W JDs su…
给出一群女孩的重量和颜值 和她们的朋友关系 现在有一个舞台 ab是朋友 bc是朋友 ac就是朋友 给出最大承重 可以邀请这些女孩来玩 对于每一个朋友团体 全邀请or邀请一个or不邀请 问能邀请的女孩的最大颜值 比赛的时候一看就是个背包问题 似乎在背包九讲上面见过..但是不会写 于是百度.."背包 一类选一个" 百度出了分组背包 并且第一个搜索结果就是类似于原题的东西.. 只不过分组背包的模板是一个or不要 加了个bfs 把朋友团体作为一个新朋友加入进这个团体 改了改代码..就a了..…
D. Arpa's weak amphitheater and Mehrdad's valuable Hoses Problem Description: Mehrdad wants to invite some Hoses to the palace for a dancing party. Each Hos has some weight wi and some beauty bi. Also each Hos may have some friends. Hoses are divided…
题意:给你若干个集合,每个集合内的物品要么选任意一个,要么所有都选,求最后在背包能容纳的范围下最大的价值. 分析:对于每个并查集,从上到下滚动维护即可,其实就是一个01背包= =. 代码如下: #include <stdio.h> #include <algorithm> #include <string.h> #include <vector> using namespace std; + ; int w[N],b[N]; int n,m,W; int r…
A. Arpa’s hard exam and Mehrdad’s naive cheat time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output There exists an island called Arpa’s land, some beautiful girls live there, as ugly ones do. Me…
题目链接: 题目 E. The Values You Can Make time limit per test:2 seconds memory limit per test:256 megabytes 问题描述 Pari wants to buy an expensive chocolate from Arya. She has n coins, the value of the i-th coin is ci. The price of the chocolate is k, so Pari…