hdu 4412 Sky Soldiers (dp)
来源:互联网 发布:依存度算法 编辑:程序博客网 时间:2024/06/05 22:29
具体思路的解释见 http://hi.baidu.com/renxl51/item/d7437a30bca43883f4e4ad0d
f[i][j] 表示用j个点覆盖前i个点。 f[i][j]=min{ f[k][j-1] + cost } ( j-1 <= k <= i-1 ) 就是枚举第j个点覆盖了从第k+1个点到第i个点 , 其中cost的计算可以利用单调性
#include<stdio.h>#include<algorithm>#include<string.h>#include<map>#define INF ((1<<23)-1)using namespace std;map<int ,double> mp;double f[1010][60];typedef struct{ int x; double p;}Point;Point pt[1010];int kk,m;void initial(){ for(int i=0;i<=1000;i++) for(int j=0;j<=50;j++) f[i][j]=INF; for(int i=0;i<=m;i++) for(int j=i;j<=m;j++) f[i][j]=0.0;}int main(){ int k,i,j,l,x; double p; while( scanf("%d%d",&kk,&m),kk+m ) { mp.clear(); initial(); for(i=1;i<=kk;i++) { scanf("%d",&l); for(j=1;j<=l;j++) { scanf("%d%lf",&x,&p); mp[x]+=p; } } map<int,double>::iterator it; j=1; for( it=mp.begin(); it!=mp.end();it++,j++) { pt[j].x=(it->first); pt[j].p=(it->second); } int n=j-1; for( i=1;i<=n;i++ ) { for(j=1;j<=m && j<=i; j++ ) { f[i][j]=INF; double pre=0.000,suf=0.000; int cur=i; double add=0.000; for(k=i-1;k>=j-1;k--) { if( k+1 != i ) { pre+=pt[k+1].p; add+=pt[k+1].p*(pt[cur].x-pt[k+1].x); } while( pt[cur].p+suf < pre ) { suf+=pt[cur].p; cur--; pre-=pt[cur].p; add-=pt[cur].p*(pt[cur+1].x-pt[cur].x); add+=pt[cur+1].p*(pt[cur+1].x-pt[cur].x); add-=pre*(pt[cur+1].x-pt[cur].x); add+=(suf-pt[cur+1].p)*(pt[cur+1].x-pt[cur].x); } f[i][j]=min(f[i][j],f[k][j-1]+add); } } } printf("%.2lf\n",f[n][m]); } return 0;}
- hdu 4412 Sky Soldiers (dp)
- hdu 4412 Sky Soldiers (区间dp 单调性)
- hdu 4412 Sky Soldiers(区间DP)
- hdu 4412 Sky Soldiers(区间DP)
- **HDU 4412 - Sky Soldiers(区间DP)
- HDU 2097 Sky数(数制转换)
- 杭电(hdu)2097 Sky数
- HDU 2097 Sky数(水题)
- poj 1723(SOLDIERS)
- soldiers
- codeforces 835-C. Star sky(dp+前缀和)
- hdu 2097 Sky数
- HDU 2097 Sky数
- hdu Sky数
- HDU 2097 Sky数.
- HDU 2097 Sky数
- Sky数(HDU 2097)
- HDU 2097 Sky数
- POJ 2109
- 写给即将正式工作的自己以及后来者
- 行链接nrid找到是哪个file,block
- 线性搜索算法find
- 判断是否是2的N次方——证明x & (x - 1)==0的正确性
- hdu 4412 Sky Soldiers (dp)
- Android多媒体开发【5】-- Stagefright原来是个皮包公司
- Android4.0-Fragment框架实现方式剖析(二)
- 非静态的字段、方法或属性要求对象引用
- 完美解决窃取ssh private key问题
- 好的编程学习资源
- 五分钟讲清楚UML
- 最近练习的一些算法(持续更新)
- poj 1470(LCA RE)