当前位置: 首页 > news >正文

abc417_d Takahashis Expectation 题解

题目描述:

https://atcoder.jp/contests/abc417/tasks/abc417_d

题目分析:
image

首先观察数据范围,发现P[i],A[i],B[i]的范围很小,都在500以内,而X[i]却可达到10^9

这样,高桥的心情X[i]在前几轮会一直减小,直到500以内

因此,我们可以计算X[i]经过几轮会到500以内,而后进行DP

计算X[i]经过几轮会到500以内,可以提前预处理B数组的前缀和,二分查找,复杂度 O(n * logn)

定义f[maxn][maxk] (maxk=1000,X[]+A[])

f[i][j]表示接到第i件礼物前心情为j的最终心情,从i=n+1倒推即可

总状态数 n * k,转移是 O(1)的,故复杂度 O(n * k),可通过本题

#include <iostream>
#define int long long
using namespace std;
const int MAXN=1e4+7;
const int MAXX=1005;//初始心情降到500以下后的最大值
const int INF=1000;
int val[MAXN],a[MAXN],b[MAXN];
int f[MAXN][MAXX];//收到第i件礼物前心情为j的最终心情
int s[MAXN];
signed main(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>val[i]>>a[i]>>b[i];s[i]=s[i-1]+b[i];//前缀和}for(int i=0;i<=INF;i++){f[n+1][i]=i;//初始化}for(int i=n;i>=1;i--){//倒推f数组for(int j=0;j<=INF;j++){if(val[i]>=j){//增加f[i][j]=f[i+1][j+a[i]];}else{//减少int p=max(0LL,j-b[i]);//别忘了判负f[i][j]=f[i+1][p];}}}int q;cin>>q;while(q--){int x;cin>>x;if(x<=INF){//本身就比500小cout<<f[1][x]<<endl;continue;}int ans=n+1;int l=1,r=n;//经过[l,r]轮后while(l<=r){//二分答案int mid=(l+r)/2;if(x-s[mid]<=INF){ans=mid;r=mid-1;}else{l=mid+1;}}if(ans==n+1){//到最后一轮还比500大cout<<x-s[n]<<endl;}else{cout<<f[ans+1][x-s[ans]]<<endl;//注意f[i][j]表示收到第i件礼物"前"}}
}

完结撒花!

http://www.sczhlp.com/news/37976/

相关文章:

  • 8.25
  • 网上开店策划书杭州市优化服务
  • html5基础知识重庆企业seo
  • 我想开网站广州seo和网络推广
  • .net做网站青岛网站优化
  • 成都网站建设公司推荐深圳关键词seo
  • 德阳网站建设seo网络营销是什么意思
  • 衡水网站设计怎么做郑州seo技术服务
  • 建设工程合同法律法规南京seo收费
  • 给公司做网站的费用入什么科目可以看封禁网站的浏览器
  • 互联网是什么工作信息流优化师简历怎么写
  • icp备案号怎么查询seo点击排名工具有用吗
  • 广州网站建设 广州亦客网络吉林网站seo
  • 聊天网站开发武汉seo优化分析
  • 做网站的公司吉林做公司网页
  • 网站作用seo诊断工具
  • (差分约束+优化)[abc216_g]01Sequence
  • 设备管理系统选型指南 - 智慧园区
  • 学校网站模板大全网址seo查询
  • 外贸网站建设注意中国免费网站服务器2020
  • 哪个素材网站做美工最好网址如何被快速收录
  • 创建网站建设核心关键词是什么意思
  • 自己做的网站加载不出验证码免费个人网站怎么建立
  • 如何把网站和域名绑定丹东网站seo
  • 微商产品做网站南京seo优化公司
  • 兰州网站关键字优化网络销售推广是做什么的具体
  • 外贸网站建设报价周口网站制作
  • 好看模板大全太原seo关键词排名
  • 具有价值的微网站建设百度app登录
  • 碎碎念(十三)