这个题是论文题。。。说这个题之前先说一下关路灯

这两个题都有时间的限制,但都不能作为状态设计进去

关路灯那个题,由于要忽略时间的限制,所以对于一个区间省得最多,是不是就是最优解了呢

首先,就算你知道这个区间关完的时间,由于只记录改区间省得最多,可能导致时间花费增大,而时间花费还会对其他区间造成影响,例:

蓝色路径是 9999 - 999的花费最小区间,但他花费了大量的时间,,实际上9999 - 99999999的区间最优值应由一条不是蓝色的路径的9999 - 999区间转移来

所以在dp的每一步时应该把对其他的价值减少的影响也考虑进来

由于关路灯那个题要求的就是这个,所以自然就有了那个题的dp

而这个题它是要你求区间的收益,而不是其他区间的损失,,

所以就需要动态计算收益,,以前做过一个树形dp,也是每一个节点的答案不是子树问题的答案,是根节点答案的一部分

然后把收益计算式拆一下,1/1000可以最后统一除,这样收益就可以量化了,但每个点还有一个基数,所以计算收益时还要把基数加进来

码:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int f[1005][1005][2],i,j,n,x0,l,r,qsum[1005],hsum[1005],w[1005][1005];
struct la
{int x,v,y;
}a[1005];
bool cmp(la a,la b)
{return a.x<b.x;
}
int main()
{
scanf("%d%d",&n,&x0);
for(i=1;i<=n;i++)
scanf("%d",&a[i].x);
for(i=1;i<=n;i++)
scanf("%d",&a[i].y);
for(i=1;i<=n;i++)
scanf("%d",&a[i].v);
sort(a+1,a+1+n,cmp);
a[n+1].x=9999999;
l=1;r=n+1;
while(l<r)
{int mid=(l+r)>>1;if(a[mid].x<=x0)l=mid+1;    else r=mid;
}
for(i=n+1;i>l;i--)
{a[i].x=a[i-1].x;a[i].v=a[i-1].v;a[i].y=a[i-1].y;
}
a[l].x=x0;
a[l].v=0;
a[l].y=0;
n++;
for(i=1;i<=n;i++)
{qsum[i]=qsum[i-1]+a[i].v;
}
for(i=n;i>=1;i--)
{hsum[i]=hsum[i+1]+a[i].v;
}
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
w[i][j]=qsum[i-1]+hsum[j+1],f[i][j][0]=f[i][j][1]=-1000000009;
f[l][l][0]=f[l][l][1]=0;
for(i=l;i>=1;i--)
for(j=l;j<=n;j++)
{if(i==j)continue;f[i][j][0]=a[i].y+max(f[i+1][j][0]-(a[i+1].x-a[i].x)*w[i+1][j],f[i+1][j][1]-(a[j].x-a[i].x)*w[i+1][j]);   //在左边 f[i][j][1]=a[j].y+max(f[i][j-1][0]-(a[j].x-a[i].x)*w[i][j-1],f[i][j-1][1]-(a[j].x-a[j-1].x)*w[i][j-1]);   //在you边
}printf("%.3lf",0.001*max(f[1][n][0],f[1][n][1]));
}

2017.10.27 sue的小球 失败总结相关推荐

  1. 2017.10.27涩会题大乱斗部分题解

    A P3741 honoka的键盘 和昨天的T1一样, 枚举改哪一个 1 #include<cstdio> 2 #include<cstring> 3 #include< ...

  2. 2017.10.9 找相同字符 失败总结

    一上来先想到hash和dp.. 其实散的连续子串匹配问题后缀相关都是可以解决的 对于SA,,就只需两个串之间加#,然后扔到SA里,单调栈维护lcp贡献就可以了,,但似乎并不好写,SA的大循环容易残 于 ...

  3. 2017.10.28 管道取珠 失败总结

    这个题有一个新套路:  ∑ai^2 要知道一般的计数题是∑ai,,所以这多乘了一个自己有什么意义呢? 于是想到,两两枚举,加起来正好是ai^2:: 所以就有一个想法,枚举两种取法, 然后就是插数dp, ...

  4. 2017.10.25 书柜的尺寸 失败总结

    这题只能想到第一步.. 首先题目要求的是最小化两个变量的关系,那就必须转化成一个变量的关系,化动为静 比如:枚举限制因素,枚举所有值,再或者就是贪心 一开始想到枚举限制因素,即枚举三个集合中高度最大的 ...

  5. 2017.10.24 学校食堂Dining 失败总结

    这题目描述不清啊.省选应该有人解释吧, 对着理解错的题调了一上午... 注意  如果一个人b==5 那这个人后面6个以后的都不能在这个人以前选 这个题就是怎么处理7的问题,状压枚举,同时满足条件的选人 ...

  6. 2017.10.23 卡牌游戏 失败总结

    dp好难啊.. 这个题主要是离散点找不准,但其实也就这样 1.尝试状态压缩,状态爆炸 2.状态里面1很多,尝试统计1的个数 3.枚举起点 但这样做还是没法做,因为没有终点 所以就再枚举一层终点.. 就 ...

  7. 2017.10.22 最多的方案 失败总结

    老想着数表结合的方法,,结果就是找不到规律. 这个题看起来好像是一个函数就可以做,但其实不是的,斐波那契函数有很好的形势:f[i]=f[i-1]+f[i-2], 他可以看成两个点转移到一个点,也可以看 ...

  8. 2017.10.7 phi的反函数 失败总结

    数论题好难啊,,分析也好,爆搜也好,剪枝也好,什么都不会啊 一开始能想到的就只有根据单点求phi来进行反推... 然后并不能保证最小解,,而且搜索意味不明. 其实需要注意到任意的phi值 全部都是可以 ...

  9. 2017.9.27 青蛙的约会 失败总结

    这个题虽说是exgcd简单的应用,但这个题还是很能说明问题的 首先   exgcd 是求   ax+by=c    其中c是a和b的gcd,,注意没有模 所以应用它解决同余方程,是利用了两个数的几倍之 ...

最新文章

  1. 守护进程中创建的对象php,在PHP中生成守护进程(Daemon Process)
  2. 技术图文:如何利用BigOne的API制作自动化交易系统 -- 订单系统
  3. jquery ajax(实现单独提交某个form)
  4. Linux C编程--线程操作3--线程属性解析
  5. SpringMVC4集成ehcache
  6. 监控工具之zabbix server3.4 部署配置
  7. [密码学基础][信息安全][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第11篇]DLP、CDH和DDH问题是什么?
  8. 张勇云栖大会谈科技担当与责任:做开放共享人人受益的好科技
  9. 初学者 | 分词的那些事儿
  10. Atitit 函数式常用子操作与组合 目录 1. 集合类的操作 1 1.1. Transform、map 1 1.2. paip.提升效率---filter map reduce 的java 函
  11. python短期电力预测——基于LSTM神经网络
  12. 基于FPGA的中值滤波器设计
  13. wget 下载文件出错
  14. 状压DP入门——玉米田
  15. 压缩图片的三种方式(Java)
  16. python基础之排列组合以及正则表达式
  17. Java常用工具类-发短信(集成华软通信短信网关)
  18. 计算机工作原理【操作系统和进程】
  19. 「企业微信+圈量scrm客户管理系统」——电商私域流量解决方案
  20. 睡眠键重启计算机,Windows10进入睡眠模式后按任意键会自动重启怎么办

热门文章

  1. 原创:关于Zend Studio 11.0.2使用localhost无法打开问题,附解决步骤
  2. 韩顺平php视频笔记44 php小练习表单提交
  3. mysql 注入 update_利用insert,update和delete注入获取数据_MySQL
  4. 高等组合学笔记(十一):分拆与Gauss二项式系数,恒等式与展开式
  5. VGGnet论文解读及代码实现
  6. 从零开始学keras之电影二分类
  7. ubuntu下安装及配置git的方法(最全超详细教程github)
  8. VisualVM提示检测不到本地JAVA程序
  9. python 把txt变成字符串_如何通过 Python 如何写文件 ?
  10. c++获取输入数字的位数/获取位数并且将其存入数组中/获取位数存入数组并且利用它解决实际问题