社区讨论

代码求调

AT_abc294_e[ABC294E] 2xN Grid参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@lwho1rlw
此快照首次捕获于
2024/05/22 18:13
2 年前
此快照最后确认于
2024/05/22 20:07
2 年前
查看原帖
错了一个点,rt。
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long 
const int maxn=3e5+10;
int ll,n1,n2;
int v[3][maxn],l[3][maxn];
int s1[maxn],s2[maxn];
signed main(){
   cin >> ll >> n1 >> n2;
   for(int i=1;i<=n1;++i){cin >> v[1][i] >> l[1][i];s1[i]=s1[i-1]+l[1][i];}
   for(int i=1;i<=n2;++i){cin >> v[2][i] >> l[2][i];s2[i]=s2[i-1]+l[2][i];}
   int idx=1;s2[n2+1]=s2[n2];int ans=0;
   for(int i=1;i<=n1;++i){
       while(idx>=1 && s2[idx]>=s1[i-1]+1)idx--;
       while(idx<=n2 && s1[i-1]+1>s2[idx])idx++;
       while(idx<=n2 && s1[i]>s2[idx-1]+1){
           if(v[1][i]==v[2][idx]){
               ans+=(min(s1[i],s2[idx])-max(s2[idx-1]+1,s1[i-1]+1)+1);
           }
           idx++;
       }
   }
   cout << ans << endl;
   return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...