社区讨论
求助暴力
P9870[NOIP2023] 双序列拓展参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lq588yg1
- 此快照首次捕获于
- 2023/12/14 21:19 2 年前
- 此快照最后确认于
- 2023/12/14 21:35 2 年前
CPP
#include<bits/stdc++.h>
using namespace std;
const int N = 5005;
int c, n, m, q, cs;
vector<int>a, pr;
vector<int>b, pg;
int f[N][N];
void calc(){
cs = 0;
if(a[0] > b[0]) swap(a, b), swap(n, m), cs = 1;
//cout<<endl;
//for(int i=1;i<=n;++i) cout<<a[i-1]<<" "; cout << endl;
//for(int i=1;i<=m;++i) cout << b[i-1] << " "; cout << endl;
memset(f, 0, sizeof f);
f[0][1]=1;
for(int i=1;i<=m;++i){
for(int j = 1; j <= n; ++j) {
if(f[i-1][j]) {
for(int k=j;k<=n;++k)
if(b[i-1]>a[k-1]) f[i][k]=1;
else break;
}
}
}
if(cs) swap(n, m);
}
int main(){
// freopen("expand.in","r",stdin);
// freopen("expand.out","w",stdout);
cin >> c >> n >> m >> q;
for(int i=1,x;i<=n;++i)cin >> x, a.emplace_back(x);
for(int j=1,x;j<=m;++j)cin >> x, b.emplace_back(x);
pr = a, pg = b;
calc();
cout<<(f[m][n]>0);
for(int i=1;i<=q;++i){
int kx, ky;
a = pr, b = pg;
cin>>kx>>ky;
for(int j=1,x,y;j<=kx;++j) cin >> x >> y, a[x-1]=y;
for(int j=1,x,y;j<=ky;++j) cin >> x >> y, b[x-1]=y;
calc();
cout<<(f[m][n]>0);
}
return 0;
}
考场写的暴力,但是官方数据第五个点错了,不太清楚为什么。
回复
共 0 条回复,欢迎继续交流。
正在加载回复...