【JZOJ 5377】 开拓
来源:互联网 发布:java编程技巧 编辑:程序博客网 时间:2024/04/30 10:53
Description
30%
中规中矩的dp啊
可以发现某一个时刻的能力值只取决于他前面开采和维修的次数
设f[i][j][k]表示做到第i个前面开采,维修次数分别是j,k的答案
智商型dp
之前明明做过类似的题,比赛的时候智商不知道被谁吃了
试一下写出某一种决策的答案
然后会发现从后往前dp就完全把前面的影响消除了,只用记录一维就好
#include<ctime>#include<cstdio>#include<cstring>#include<algorithm>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,b,a) for(int i=b;i>=a;i--)#define efo(i,v,u) for(int i=last[v],u=to[i];i;i=next[i],u=to[i])#define max(x,y) ((x)>(y)?(x):(y))#define min(x,y) ((x)<(y)?(x):(y))#define mset(a,x) memset(a,x,sizeof(a))using namespace std;typedef long long ll;typedef double db;const int N=1e5+5;int n;db A,B,w,f[N];struct node{ int tp;db x;}a[N];int main(){ freopen("exploit.in","r",stdin); freopen("exploit.out","w",stdout); scanf("%d %lf %lf %lf",&n,&A,&B,&w);A=1-A*0.01,B=1+B*0.01; fo(i,1,n) scanf("%d %lf",&a[i].tp,&a[i].x); fd(i,n,1) { f[i]=f[i+1]; if(a[i].tp==1) f[i]=max(f[i],a[i].x+A*f[i+1]); else f[i]=max(f[i],-a[i].x+B*f[i+1]); } printf("%.2lf",w*f[1]); return 0;}
阅读全文
0 0
- 【JZOJ 5377】 开拓
- 【JZOJ 5377】【NOIP2017提高A组模拟9.19】开拓
- JZOJ 5377. 【NOIP2017提高A组模拟9.19】开拓
- 开拓
- 开拓地盘
- 开拓自己
- 老实人开拓精神不足
- 开拓智域(一)
- 我要开拓新纪元
- 开拓智域
- 集思广益,开拓创新
- 开源思想开拓
- 什么是开拓能力
- 转移阵地!开拓新疆土!
- 第三章 开拓智域
- 创业笔记之市场开拓
- 健康的思考+勇于开拓
- 开拓思路学物理 学习方法
- ^KeepTool.v9.0.3.1.Incl.Keygen-BLiZZARD\
- 据说,有了这些网站,你可以找到99%的电子书
- java-单例模式
- 【Linux学习】epoll详解
- C#基础2_运算符
- 【JZOJ 5377】 开拓
- QT5.9.1+vs2015搭建
- Linux内存管理之slab分配器
- haut oj 1299 fireworks(杨辉三角规律)
- 关于python的基础知识13--列表推导式
- C#基础3_流程控制
- hdu 5889 Barricade (最短路的最小割)
- Hibernate的@Table注解
- 两次写