【JZOJ 5377】【NOIP2017提高A组模拟9.19】开拓
2017-09-20 12:27
453 查看
Description
Solution
很显然,这题有O(n3)的DP,考虑一下怎么优化,发现瓶颈在于没法表示钻头的能力值,
我们发现,当前钻头的能力值的改变,对于后面的影响是乘上一个数,而且这个数很好算,
那么就是说,我们倒过来DP,设当前的w值为1,即可从后面转移了,
复杂度:O(n)
Code
#include <cstdio> #include <algorithm> #define fo(i,a,b) for(int i=a;i<=b;i++) #define fod(i,a,b) for(int i=a;i>=b;i--) #define min(q,w) ((q)>(w)?(w):(q)) #define max(q,w) ((q)<(w)?(w):(q)) using namespace std; typedef double db; const int N=100500; int read(int &n) { char ch=' ';int q=0,w=1; for(;(ch!='-')&&((ch<'0')||(ch>'9'));ch=getchar()); if(ch=='-')w=-1,ch=getchar(); for(;ch>='0' && ch<='9';ch=getchar())q=q*10+ch-48;n=q*w;return n; } int m,n,ans; db m1,m2,m0; int a ,ak ; db f ; int main() { freopen("exploit.in","r",stdin); freopen("exploit.out","w",stdout); int q,w; read(n),m1=1-0.01*read(q),m2=1+0.01*read(q),m0=read(q); fo(i,1,n)read(ak[i]),read(a[i]); f[n+1]=0; fod(i,n,1) { f[i]=f[i+1]; if(ak[i]==1) { f[i]=max(f[i],a[i]+m1*f[i+1]); }else f[i]=max(f[i],m2*f[i+1]-a[i]); } printf("%.2lf\n",f[1]*m0); return 0; }
相关文章推荐
- JZOJ5377. 【NOIP2017提高A组模拟9.19】开拓 DP
- JZOJ 5377. 【NOIP2017提高A组模拟9.19】开拓
- JZOJ 5378. 【NOIP2017提高A组模拟9.19】闷声刷大题(60分)
- JZOJ 5376. 【NOIP2017提高A组模拟9.19】Candy
- JZOJ 5389. 【NOIP2017提高A组模拟9.26】解梦
- jzoj5394 【NOIP2017提高A组模拟10.5】Ping
- JZOJ5394. 【NOIP2017提高A组模拟10.5】Ping 树上差分 树状数组
- JZOJ 5401. 【NOIP2017提高A组模拟10.8】Star Way To Heaven
- 【jzoj5405】【NOIP2017提高A组模拟10.10】【Permutation】
- 【JZOJ 5248】【NOIP2017提高A组模拟8.10】花花的聚会
- 【jzoj5358】【NOIP2017提高A组模拟9.12】【BBQ】
- JZOJ 100026. 【NOIP2017提高A组模拟7.7】图
- JZOJ5372. 【NOIP2017提高A组模拟9.17】猫 链表+贪心+堆优化
- JZOJ5373. 【NOIP2017提高A组模拟9.17】信仰是为了虚无之人
- JZOJ 100047. 【NOIP2017提高A组模拟7.14】基因变异
- JZOJ 5305. 【NOIP2017提高A组模拟8.18】C
- JZOJ5397. 【NOIP2017提高A组模拟10.6】Biology
- 【JZOJ 5395】【NOIP2017提高A组模拟10.6】Count
- 【jzoj5338】【NOIP2017提高A组模拟8.25】【影子】【点分治】
- JZOJ5401. 【NOIP2017提高A组模拟10.8】Star Way To Heaven prim求mst