H-The Boomsday Project

Code1

暴力我为人人区间转移
O{N∑qlog⁡N}O\{N\sum q\log N \}O{N∑qlogN}

#include<bits/stdc++.h>
using namespace std;
using ll=long long;
template <class T=int> T rd()
{T res=0;T fg=1;char ch=getchar();while(!isdigit(ch)) {if(ch=='-') fg=-1;ch=getchar();}while( isdigit(ch)) res=(res<<1)+(res<<3)+(ch^48),ch=getchar();return res*fg;
}
ll f[300010*4],tag[300010*4];
const ll INF=0x3f3f3f3f3f3f3f3f;
int n,m;ll RR;
int tot;void update(int u,int l,int r,int L,int R,ll v)
{if(L>R) return;if(L<=l&&r<=R) {tag[u]=min(tag[u],v);f[u]=min(f[u],v);return;}int mid=l+r>>1;if(L<=mid)update(u<<1,l,mid,L,R,v);if(R>mid)update(u<<1|1,mid+1,r,L,R,v);
}
ll query(int u,int l,int r,int pos,ll v)
{if(l==r) return min(f[u],v);v=min(v,tag[u]);int mid=l+r>>1;if(pos<=mid) return query(u<<1,l,mid,pos,v);else return query(u<<1|1,mid+1,r,pos,v);
}
struct nodea
{int d,k,c;
}a[510];
int g[300010],h[300010];
struct nodeb
{int p,q;bool operator<(const nodeb &o)const{return p<o.p;}
}b[300010];
int mp[300010];
int main()
{n=rd(),m=rd();RR=rd<ll>();for(int i=1;i<=n;i++) a[i].d=rd(),a[i].k=rd(),a[i].c=rd();for(int i=1;i<=m;i++) {b[i].p=rd();b[i].q=rd();mp[i]=b[i].p;}sort(mp+1,mp+1+m);sort(b+1,b+1+m);for(int i=1;i<=m;i++){b[i].p=lower_bound(mp+1,mp+1+m,b[i].p)-mp;for(int j=tot+1;j<=tot+b[i].q;j++) g[j]=b[i].p;h[b[i].p]=tot+b[i].q;tot+=b[i].q;}mp[++m]=2e9;  memset(f,0x3f,sizeof f);memset(tag,0x3f,sizeof tag);update(1,0,tot,0,0,0);for(int i=0;i<tot;i++){ll v=query(1,0,tot,i,INF);update(1,0,tot,i+1,i+1,v+RR);for(int j=1;j<=n;j++) {int l=i+1,r;r=i+a[j].k;int d=lower_bound(mp+1,mp+1+m,g[i+1]+a[j].d-1)-mp;if(mp[d]>g[i+1]+a[j].d-1) --d;r=min(r,h[d]);update(1,0,tot,l,r,v+a[j].c);}}printf("%lld\n",query(1,0,tot,tot,INF));return 0;
}

不需要区间覆盖转移,不难发现只需转移右端点即可。由于具有单调性可以双指针预处理。

Code2

#include<bits/stdc++.h>
using namespace std;
using ll=long long;
template <class T=int> T rd()
{T res=0;T fg=1;char ch=getchar();while(!isdigit(ch)) {if(ch=='-') fg=-1;ch=getchar();}while( isdigit(ch)) res=(res<<1)+(res<<3)+(ch^48),ch=getchar();return res*fg;
}int n,m;ll R;
int tot;
struct nodea
{int d,k,c;
}a[510];
int g[300010];
ll f[300010];
struct nodeb
{int p,q;bool operator<(const nodeb &o)const{return p<o.p;}
}b[300010];
int to[510][300010];
int main()
{n=rd(),m=rd();R=rd<ll>();for(int i=1;i<=n;i++) a[i].d=rd(),a[i].k=rd(),a[i].c=rd();for(int i=1;i<=m;i++) b[i].p=rd(),b[i].q=rd();sort(b+1,b+1+m);for(int i=1;i<=m;i++){for(int j=tot+1;j<=tot+b[i].q;j++) g[j]=b[i].p; //第j次骑车在第b[i].p天tot+=b[i].q;}for(int j=1;j<=n;j++)for(int i=0,k=1;i<tot;i++){while(k<=tot&&g[k]-g[i+1]+1<=a[j].d) k++;to[j][i]=k-1;}memset(f,0x3f,sizeof f);f[0]=0;for(int i=0;i<tot;i++){f[i+1]=min(f[i+1],f[i]+R);for(int j=1;j<=n;j++) {int r=min(i+a[j].k,to[j][i]);f[r]=min(f[r],f[i]+a[j].c);}}printf("%lld\n",f[tot]);return 0;
}

2020 ICPC亚洲区域赛(沈阳)H-The Boomsday Project(双指针+dp)相关推荐

  1. 2020 ICPC亚洲区域赛(沈阳)F-Kobolds and Catacombs(思维+模拟)

    F-Kobolds and Catacombs 考虑每一段,先找到最小的,然后把编号小于它的都化为一组,此时有一个最大值需要把小于最大值的在划分进来,然后又有编号小于它的,于是再把编号小于它的划分为一 ...

  2. 第46届ICPC亚洲区域赛(沈阳)L-Perfect Matchings【dp,组合数学】

    正题 题目链接:https://ac.nowcoder.com/acm/contest/24346/L 题目大意 有一张2n2n2n个点的完全图,在上面删除一棵生成树,然后求这张图的完全匹配方案数. ...

  3. 2020年 ICPC 亚洲区域赛(上海)G-Fibonacci

    ICPC 亚洲区域赛(上海) G-Fibonacci 题目 斐波那契数列为1,1,2,3,5,8,13,21,- 可以看到,这个数列有以下特点: 奇,奇,偶,奇,奇,偶- 当 xxx 与 yyy 相乘 ...

  4. 2018年 ACM/ICPC亚洲区域赛 青岛赛区现场赛 比赛总结

    首先祝贺自己收获了ACM生涯中的第二枚铜牌. 首先吐槽一下中石油: 周六早上来到中国石油大学,连个志愿者小姐姐都没看到.(但是看到了女装大佬).报完到之后发现教练少了一张午餐券(要不要这么粗心).为了 ...

  5. 第43届ACM icpc亚洲区域赛焦作站感想

    青岛痛失银牌,焦作又是铜牌一枚,现在想想,前面三个水题,我的原因太大了,老是犯各种zz小错误,明明能秒,却花了大量时间debug,导致三个小时才签完到,最后一个小时,F题的bfs没出来,B题也没出来, ...

  6. 2018ACM/ICPC亚洲区域赛(焦作)F. Honeycomb

    目录 F. Honeycomb (2018-ACM/ICPC焦作) F. Honeycomb (2018-ACM/ICPC焦作) Problem F. Honeycomb Input file: st ...

  7. 2021 ICPC 昆明(22-4-17) C L E | 第46届ICPC亚洲区域赛(昆明)

    ICPC 2021 昆明 传送门 补题计划 CLE, C - Cup of Water prob : 在0-V内随机取数灌满1升水的期望操作次数 idea1: 首先将题给的"在0-V内随机取 ...

  8. 2014ACM/ICPC亚洲区域赛牡丹江现场赛总结

    不知道怎样说起-- 感觉还没那个比赛的感觉呢?如今就结束了. 9号.10号的时候学校还评比国奖.励志奖啥的,由于要来比赛,所以那些事情队友的国奖不能答辩.自己的励志奖班里乱搞要投票,自己又不在,真是无 ...

  9. 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明) Cities(区间dp)

    C-Cities live4m题解 #include<bits/stdc++.h>using namespace std;const int N=5050; int f[N][N],a[N ...

最新文章

  1. redis在微服务领域的贡献
  2. uni 根目录路径_如何解决uniapp图片路径错误问题
  3. 成功解决 SyntaxError: invalid token
  4. 一个演示A星相关的寻路的网站
  5. midl会议_2020年医学图像处理领域值得关注的期刊和会议
  6. React的contextType的使用方法简介
  7. 最新sql 2008安装说明 以及 重设sql server 2008 R2的登录密码
  8. 高速电路中菊花链、fly-by与T点拓扑
  9. 无损数据压缩算法c语言,C语言实现无损压缩算法
  10. 大陆资金港股打新股亲身体验全流程
  11. 错误:80040154 没有注册类 的问题
  12. JavaScript概述和HTML中嵌入JavaScript的三种方式
  13. Rockchip开发系列 - 总目录
  14. idea激活码?学生如何白嫖使用idea?
  15. 【RK PX30】 瑞芯微四核64位工业级芯片PX30[RK3358]安卓核心板
  16. 洛谷P1758 [NOI2009]管道取珠(dp 贡献转化)
  17. 【读书笔记】算法的乐趣
  18. 云服务器安装SSL证书,实现https访问
  19. 数据结构——约瑟夫环(Joseph Circle)
  20. (编曲乐理)用理性思维学乐理(一)—入门基础乐理

热门文章

  1. python frame用法_python—dataframe用法
  2. mysql查询语句4,MySQL(4):CRUD语句(2)——基本查询
  3. leetcode367. 有效的完全平方数
  4. [PAT乙级]1006 换个格式输出整数
  5. C++ 实现分块查找(顺序存储结构)(完整代码)
  6. LeetCode 530二叉搜索树的最小绝对值差-简单
  7. 计蒜客 逃生+动态规划
  8. java 第三方序列化,11.既然有第三方的序列化方式,说明java官方提供的序列化方式应该有一些很明显或者很致命的缺点……...
  9. Educational Codeforces Round 111 (Rated for Div. 2) D. Excellent Arrays 组合数学
  10. 牛客练习赛89--牛牛防疫情