1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > CodeForces - 652C Foe Pairs

CodeForces - 652C Foe Pairs

时间:2023-08-05 15:04:42

相关推荐

CodeForces - 652C   Foe Pairs

思路:记录下来每一个数在序列里的位置,然后记录每一个位置向右最远能到达哪个位置

#include <stdio.h>#include <algorithm>using namespace std;typedef long long ll;const int maxn = 3 * 1e5 + 10;int a[maxn],pos[maxn],mx[maxn];int main(void){int n,m;scanf("%d%d",&n,&m);for(int i = 1; i <= n; i++){scanf("%d",&a[i]);pos[a[i]] = i;mx[i] = n;}for(int i = 1; i <= m; i++){int x,y;scanf("%d%d",&x,&y);int l = min(pos[x],pos[y]);int r = max(pos[x],pos[y]);mx[l] = min(mx[l],r - 1);}for(int i = n - 1; i >= 1; i--){mx[i] = min(mx[i],mx[i + 1]);}//printf("asd\n");ll ans = 0;for(int i = 1; i <= n; i++){ans += mx[i] - i + 1;}printf("%I64d\n",ans);return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。