UVA11400 分析推理+dp
来源:互联网 发布:淘宝推广文章 编辑:程序博客网 时间:2024/05/20 17:08
题目大意
有n种灯泡,不同种类的灯泡需要同种电源,同种灯泡只需一个电源。你现在要设计一个照明系统,给出n种灯泡的电压V,电源费用K,一个灯泡的费用C和所需该种灯泡数量L,电压小的灯泡可以被电压大的灯泡代替,求最小花费。
题目分析
由人类的直觉,我们应该把灯泡按照电压从大到小排序,以方便处理。
推理1:一种灯泡要么全部替换为另一种,要么都不换。
证明:
如果将灯泡t全部替换为灯泡i比都不替换优,那么说明:
那么
已经将t都换为i后,如果将部分灯泡换回t的话,还要再买一个电源,花费
同理,如果不换更优,那么再换一部分,由于
状态转移:令sum[i]表示电压按照从大到小排序后,灯泡数量前缀和。f[i]表示前i种灯泡处理好的最小价格。
由人类的直觉,我们认为状态转移方程为:
为什么可以直接替换一个区间呢?见推理2.
推理2:状态转移方程正确性证明。
证明:
设
如果t被i替换比较优的前提下,j不被t替换更优(即状态转移方程的反例)则:
即:
即:
然而出现这种反例也没关系,因为如果出现如上情况,我们让j到i之间的灯泡全被j替换更优。现在我们证明这一点,则要证:
即要证:
好吧,那么一定成立。也就是状态转移方程正确性成立。
代码
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ int q=0;char ch=' '; while(ch<'0'||ch>'9')ch=getchar(); while(ch>='0'&&ch<='9')q=q*10+ch-'0',ch=getchar(); return q;}int n,ans,sum[1005],f[1005];struct node{int v,k,c,num;}a[1005];bool cmp(node x,node y){return x.v>y.v;}int main(){ int i,j; while(1){ n=read();if(!n)break; for(i=1;i<=n;++i) a[i].v=read(),a[i].k=read(),a[i].c=read(),a[i].num=read(); sort(a+1,a+1+n,cmp); for(i=1;i<=n;++i) sum[i]=sum[i-1]+a[i].num; for(i=1;i<=n;++i){ f[i]=1e7; for(j=1;j<=i;++j) f[i]=min(f[i],f[j-1]+a[j].k+(sum[i]-sum[j-1])*a[j].c); } printf("%d\n",f[n]); } return 0;}
- UVA11400 分析推理+dp
- UVA11400 简单DP
- uva11400--Lighting System Design DP
- uva11400
- UVa11400
- UVA 1474(dp + 推理)
- 例题9-6 UVa11400 Lighting System Design(DP)
- uva 11400 DP 需要推理
- 跨媒体分析与推理
- 例题9-7 UVa11400 Partitioning by Palindromes(DP+回文串)
- UVA - 1618 Weak Key 推理+DP
- CERC2014 Outer spaceinvaders(区间DP,推理)
- 推理
- 基于模糊推理的网络故障关联分析
- 运用条件概率分析合情推理模式
- uva11400 Lighting System Design
- UVa11400 Lighting System Design
- UVA11400 - Lighting System Design
- Mysql----阿里数据库(mysql)误删除后的数据恢复
- 放弃读研,转战求职!
- SpringMVC异常处理
- 纯JS实现简单的分页功能
- java.lang.ClassNotFoundException: org.springframework.web.context.Contb.context.
- UVA11400 分析推理+dp
- SpringMVC 定时任务
- 一夜之间全世界的WIFI都不安全了;阿里和京东线下争夺的新场景:加油站|ServiceHot一周热闻
- 给袋式包装机和制袋式包装机有什么区别
- loss超大,训练一次后loss为nan
- 使用pysftp模块或者paramiko模块时出现IOError: [Errno 13] Permission denied: 或IOError: [Errno 2]
- 取得xml、text节点内容
- leetcode题解-16. 3Sum Closest
- 微信近期暂时下架的几类小程序!