LightOJ
来源:互联网 发布:网络验证系统哪个好 编辑:程序博客网 时间:2024/06/15 15:21
题目描述:
点击打开链接
题意,你先要买n种灯,每种灯有自己的电压值v,电源费用k,单价c,需要的数量l,并且低电压的灯可以用高电压的灯替代,问所需的最小花费。由于存在低电压可以被高电压替代的规则,我们就可以从高电压开始枚举,枚举到低电压的时候就和高电压的比较,如果花费更少就选高电压的。
AC代码:
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<stack>#include<vector>#include<queue>#include<algorithm>using namespace std;const int MAXM=305;const long long MOD=1000000007;const int INF=0x3f3f3f3f;const double PI=acos(-1);struct lit{ int v,k,c,l;};int dp[1010];int sum[1010];struct lit lt[1010];int n;bool cmp(lit l1,lit l2){ return l1.v>l2.v;}int main(){ int T; scanf("%d",&T); int cas=1; while(T--) { scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d%d%d%d",<[i].v,<[i].k,<[i].c,<[i].l); sort(lt+1,lt+1+n,cmp); memset(sum,0,sizeof(sum)); for (int i=1;i<=n;i++) sum[i]=sum[i-1]+lt[i].l; dp[0]=0; dp[1]=lt[1].k+lt[1].c*lt[1].l; for (int i=2;i<=n;i++) { for (int j=i;j>=1;j--) { int tmp=sum[i]-sum[j-1]; if (j==i) dp[i]=dp[j-1]+tmp*lt[j].c+lt[j].k; else dp[i]=min(dp[i],dp[j-1]+tmp*lt[j].c+lt[j].k); } } int ans=dp[n]; printf("Case %d: %d\n",cas,ans); cas++; } return 0;}
阅读全文
0 0
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- [LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- HDU-5512-Pagodas
- bzoj4953 [Wf2017]Posterize(区间dp)
- bzoj 1629: [Usaco2007 Demo]Cow Acrobats(贪心排序)
- GoTo 递归
- Ubuntu下apt-get安装与pip安装的区别
- LightOJ
- IT笔试--动态规划--货币找零问题
- 第一周总结(二)
- 加工零件-execution
- java使用cookies保存用户登录信息
- bzoj1455 罗马游戏
- 文本框账号密码输入
- POJ2431 Expedition (贪心,优先队列)
- java IO-节点流和缓冲流性能对比