博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeForces 652C Foe Pairs
阅读量:6445 次
发布时间:2019-06-23

本文共 1013 字,大约阅读时间需要 3 分钟。

只要计算每个位置最多能到哪个位置,累加即可,DP从后往前预处理一下每个位置到达的最远位置。

有坑点:输入的时候如果同一个点出发的,需要保存最小值。

#include
#include
#include
#include
using namespace std;const int maxn=4*100000+10;int n,m;int a[maxn],b[maxn];int p[maxn];int dp[maxn];int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); p[a[i]]=i; } for(int i=1;i<=n;i++) b[i]=0x7FFFFFFF; for(int i=1;i<=m;i++) { int li,ri;scanf("%d%d",&li,&ri); int fx=p[li]; int fy=p[ri]; if(fx>fy) swap(fx,fy); b[fx]=min(b[fx],fy); } dp[n]=b[n]; for(int i=n-1;i>=1;i--) { if(b[i]==0x7FFFFFFF) dp[i]=min(dp[i+1],b[i]); else dp[i]=min(dp[i+1],b[i]-1); } long long ans=0; for(int i=1;i<=n;i++) { if(dp[i]==0x7FFFFFFF) ans=ans+(long long)(n-i+1); else ans=ans+(long long)(dp[i]-i+1); } printf("%lld\n",ans); return 0;}

 

转载于:https://www.cnblogs.com/zufezzt/p/5322297.html

你可能感兴趣的文章
Foundation框架 - 快速创建跨平台的网站页面原型
查看>>
Intel 82599网卡异常挂死原因
查看>>
open-falcon
查看>>
周会会议2018.4.20
查看>>
二叉树的建立与遍历
查看>>
ubuntu 配置tomcat 实测成功
查看>>
【虚树】hdu6161 Big binary tree
查看>>
【set】【multiset】Codeforces Round #484 (Div. 2) D. Shark
查看>>
虎哥手把手教你接私活和报价(附送详细报价单)- 转
查看>>
表单的理解
查看>>
maven archetype:generate 的进一步理解
查看>>
ubuntu截图工具
查看>>
新博客
查看>>
遗传算法的基本原理与方法--笔记<转>
查看>>
《人月神话》读书笔记1
查看>>
三菱plc输出指示灯不亮怎么办(转载)
查看>>
Codeforces Continued Fractions
查看>>
doc2vec使用说明(一)gensim工具包TaggedLineDocument
查看>>
Mac下利用safari调试 Cordova的WebApp
查看>>
App测试中ios和Android的区别
查看>>