[poj2184]我是来水一下背包的】的更多相关文章

http://poj.org/problem?id=2184 题意:01背包的变种,就是说有2组值(有负的),你要取一些物品是2阻值的和非负且最大 分析: 1.对于负的很好处理,可以把他们都加上一个数使其变成正数 2.对于两个变量可以控制一个变量,求另一个变量的最大值,那么接下来的问题就是处理“体积恰好为V的01背包”问题了(和普通的不同哦……普通的不一定装满的) 以前处理恰好体积为V的01背包都是开数组染色刷一遍的,原来有更好的方法,就是初始值是f[0]=0,f[1..V]=-inf,那么转移…
Cow Exhibition Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10949 Accepted: 4344 Description "Fat and docile, big and dumb, they look so stupid, they aren't much fun-" - Cows with Guns by Dana Lyons The cows want to prove to the pu…
http://poj.org/problem?id=1787   描述 Charlie is a driver of Advanced Cargo Movement, Ltd. Charlie drives a lot and so he often buys coffee at coffee vending machines at motorests. Charlie hates change. That is basically the setup of your next task. Yo…
有两个小朋友想要平分一大堆糖果,但他们不知道如何平分需要你的帮助,由于没有spj我们只需回答能否平分即可. 糖果大小有6种分别是1.2.3.4.5.6,每种若干颗,现在需要知道能不能将这些糖果分成等额的两堆. 一颗大小为6的糖果,可以相当于2颗大小为3的糖果,其他同理,即大小满足加法,但是1颗糖果是不能被拆分的. Input 多组输入,每行输入6个非负整数,分别表示大小为1.2.3.4.5.6的糖果的数量,若输入6个0代表输入结束. 单种糖果的数量不会超过20000. Output 每组询问先输…
题目链接:http://poj.org/problem?id=1787 题意:有4种货币分别是1元,5元,10元,20元.现在告诉你这四种货币分别有多少个,问你正好凑出P元钱最多可以用多少货币.每种货币要用多少钱. 据说此题有完全背包的写法.. 我是按照多重背包写的,速度也不是很慢. 然后记录了下前驱. 刚开始全都写挫了..虽然现在也很挫.. 凑合着看吧 -- #include <cstdio> #include <algorithm> #include <cstring&g…
layout: post title: Codeforces Round 253 (Div. 2) author: "luowentaoaa" catalog: true tags: mathjax: true - codeforces - 模拟栈 - 贪心 传送门 A.Anton and Letters (签到) 题意 判断字符串里面有多少个不同字符 思路 直接set一下 #include<bits/stdc++.h> using namespace std; typed…
洛谷 P2902 [USACO08MAR]珍珠配对Pearl Pairing https://www.luogu.org/problem/P2902 JDOJ 2577: USACO 2008 Mar Gold 3.Pearl Pairing https://neooj.com:8082/oldoj/problem.php?id=2577 Description At Bessie's recent birthday party, she received N (2 <= N <= 100,0…
Hello World 题目 [题目描述] 输出“Hello World!”(不输出“”). [输入格式] 啥都没有. [输出格式] Hello World! [数据规模] 输出就行了,管那么多干什么. 解析 相信这道题是大部分程序猿入门的第一道题,是不是充满了回忆? 现在,本蒟蒻就来仔细的解释一下这道题目怎么做(其实我是来水一篇博客的). 这里我给出两种版本的代码(因为我只会C(C++)语言的两种输出): 详细解释一下,关于头文件(#include开头的), <iostream> 是标准的输…
题目: 正文: 啊,多重背包真恶心... 一开始我是把多重背包改成了01背包,然鹅我当时是直接1个1个的往后摞的... 参见以下代码: for(int i=1;i<=n;++i){//平平无奇的输入 v[i]=R;w[i]=R;num[i]=R; } for(int i=1;i<=t;++i){//t等于n,但是一会要修改n,所以使用了另一个变量 while(--num[i]){//把--提前是因为下标i这里还需要留1个 v[++n]=v[i];//摞摞摞 w[n]=w[i]; } } 于是数…
题目链接: https://vjudge.net/problem/POJ-2184 题目大意: 给出num(num<=100)头奶牛的S和F值(-1000<=S,F<=1000),要求在这几头奶牛中选出若干头,使得在其总S值TS和总F值TF均不为负的前提下,求最大的TS+TF值 思路: 可以把S当体积,F当价值做01背包.但是注意是S可为负,所以整体加100000,然后要注意DP顺序,S为负是要顺序,为正时逆序. 还有就是注意DP时的范围,凡是可能影响的都要包括. //#include&…