CodeForces 106C 【DP】
题意:
n g dough m种商品?
每种有ai stuffing, 拿bi stuffing + ci dough -> di tugriks
rest c0 dough -> d0 tugriks
求最大的tugriks
思路:
dough是爸爸,
dp[i] 代表 在花费 i 情况下 前 j 个 商品的最大。
枚举在 k g dough 下的各种收入情况,取最大;
大致分成两个部分,用ai + bi 获得的钱,剩下的dough去干嘛得到。
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long LL;
- int dp[1010];
- int m,n,cc0,dd0;
- int a[15],b[15],c[15],d[15];
- int main()
- {
- cin>>n>>m>>cc0>>dd0;
- for(int i=0;i<m;i++)
- cin>>a[i]>>b[i]>>c[i]>>d[i];
- memset(dp,0,sizeof(dp));
- for(int i=0;i<m;i++)
- {
- for(int k=n;k>=c[i];k--)
- {
- int p=0,q=0,num=0;
- for(;p<=a[i]&&q<=k;p+=b[i],q+=c[i],num++)
- {
- int come1=num*d[i]+dp[k-num*c[i]];
- int come2=num*d[i]+(k-num*c[i])/cc0*dd0+dp[k-num*c[i]-(k-num*c[i])/cc0*cc0];
- int come3=k/cc0*dd0+dp[k-k/cc0*cc0];
- int come4=dp[k-k%cc0];
- dp[k]=max(dp[k],come1);
- dp[k]=max(dp[k],come2);
- dp[k]=max(dp[k],come3);
- dp[k]=max(dp[k],come4);
- }
- }
- }
- printf("%d\n",dp[n]);
- return 0;
- }
CodeForces 106C 【DP】的更多相关文章
- CodeForces 761C 【DP】
总结:能这么DP就这么写! 多练位运算标记. #include<bits/stdc++.h> using namespace::std; const int N=55; const int ...
- Codeforces 358D【DP】
思路: dp[i][0] 代表取的时候左边没有 dp[i][1] 代表取的时候右边没有 dp[i][2] 代表取的时候左右都没有 dp[i][3] 代表取的时候左右都有 然后自己转移吧= =. 注意 ...
- CodeForces 13C【DP】
题意: 给你n个数,每次只能让一个数+1,或者-1,目标是最终使这个序列构成一个非递减的序列: n是5e3,复杂度n^2内.值是1e9: 思路: 可以发现子结构是保证一个区间的非递减, 如果只是dp[ ...
- CodeForces 687C【DP】
题意: 给你n个数,然后让这些数相加组合,然后在这些组合的数里可以再相加组合搞出给定 k,输出这些组合的数. 思路: DP. //在枚举到第i个coin的时,dp[i][j],i 肯定能被a[i]组合 ...
- CodeForces 429B【dp】
题意: 在一个n*m的矩阵中有两只虫子,一只从左上角向右下角移动,另外一只从左下角向右上角移动. 要求: 1.第一只虫子每次只能向左或者向下移动一格,另外一只只能向上或者向右移动一格. 2.两只虫子的 ...
- [CodeForces - 1225E]Rock Is Push 【dp】【前缀和】
[CodeForces - 1225E]Rock Is Push [dp][前缀和] 标签:题解 codeforces题解 dp 前缀和 题目描述 Time limit 2000 ms Memory ...
- Kattis - honey【DP】
Kattis - honey[DP] 题意 有一只蜜蜂,在它的蜂房当中,蜂房是正六边形的,然后它要出去,但是它只能走N步,第N步的时候要回到起点,给出N, 求方案总数 思路 用DP 因为N == 14 ...
- HDOJ 1423 Greatest Common Increasing Subsequence 【DP】【最长公共上升子序列】
HDOJ 1423 Greatest Common Increasing Subsequence [DP][最长公共上升子序列] Time Limit: 2000/1000 MS (Java/Othe ...
- HDOJ 1501 Zipper 【DP】【DFS+剪枝】
HDOJ 1501 Zipper [DP][DFS+剪枝] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...
随机推荐
- $().bind()的返回值
var eleMenus = $("#choMenu a").bind("click", function (event){}); 此时eleMeuns的值是$ ...
- 负载均衡之IP
文章出自:http://blog.csdn.net/cywosp/article/details/38036537 首先让我们来看看下面这张大家都非常熟悉的TCP/IP协议族的分层图: ...
- C++11特性 gcc源码包
1.下载gcc最新的源码包 2.解压缩 tar -xf gcc-4.9.1.tar.gz 3. cd gcc-4.9.1 4.运行download_prerequisites脚本, ./contri ...
- stl_multimap.h
stl_multimap.h // Filename: stl_multimap.h // Comment By: 凝霜 // E-mail: mdl2009@vip.qq.com // Blog: ...
- php各种验证类
<?php /** * 验证类 * */ class VerifyAction{ /** * 是否为空值 */ public static func ...
- CRtmpServer
1. 前言 crtmpserver是一个由C++语言编写的开源的RTMP流媒体服务器,官方网站是www.rtmpd.com 2. CRtmpServer编译 2.1. Win7+Vs201 ...
- noip退役赛
上下午 6 题一起考 自闭了 T1 小明要参加一场比赛,赛制给你一个表格 $p$ ,$p_{(i,j)}$ 表示他在第 $i$ 场比赛前如果输了 $j$ 场,他这一场赢的概率,他也可以故意输掉任意多场 ...
- 省选/NOI刷题Day2
bzoj2616 放一个车的时候相当于剪掉棋盘的一行,于是就可以转移了,中间状态转移dp套dp,推一下即可 bzoj2878 环套树期望dp 手推一下递推式即可 bzoj3295 树状数组套权值线段树 ...
- noipd2t3列队
吉老师的题还真是难呢... 正解至今不会,只会平衡树的做法 这种用平衡树上一个点表示一段区间的题还真要做做...想起来挺难受的 建n棵平衡树表示每行的m-1个元素 再建一棵平衡树维护最后一列 中间要支 ...
- 【LeetCode】081. Search in Rotated Sorted Array II
题目: Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would t ...