https://codeforces.com/contest/2053/problem/D
https://blog.csdn.net/weixin_61825750/article/details/144799098
#include<bits/stdc++.h>
#define lc p<<1
#define rc p<<1|1
#define INF 2e9
using namespace std;
#define endl '\n'
using ll = long long;
using pii = pair<ll, ll>;
const double PI = acos(-1);
const int N = 1e3+ 10;
const int mod = 998244353;
ll qmi(int a,int p){
ll sum=1;
ll aa=a;
while(p){
if(p&1){
sum=(sum*aa)%mod;
}
p>>=1;
aa=(aa*aa)%mod;
}
return sum;
}
void solve(){
int n,q;cin>>n>>q;
vector<int> a(n),b(n);
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<n;i++)
cin>>b[i];
vector<int> c(a.begin(),a.end()),d(b.begin(),b.end());
sort(c.begin(),c.end());
sort(d.begin(),d.end());
ll ans=1;
for(int i=0;i<n;i++){
ans=(ans*min(c[i],d[i]))%mod;
}
cout<<ans<<" ";
while(q--){
int o,x;cin>>o>>x;
if(o==1){
int now=a[x-1];
a[x-1]++;
int l=0,r=n-1;
while(l<r){
int mid=(l+r+1)>>1;
if(c[mid]<=now) l=mid;
else r=mid-1;
}
c[l]++;
if(c[l]-1<d[l]){
ans=(ans*qmi(c[l]-1,mod-2))%mod;
ans=(ans*c[l])%mod;
}
}
else{
int now=b[x-1];
b[x-1]++;//原数组同步更新
int l=0,r=n-1;
while(l<r){
int mid=(l+r+1)>>1;
if(d[mid]<=now) l=mid;
else r=mid-1;
}
d[l]++;
if(d[l]-1<c[l]){
ans=(ans*qmi(d[l]-1,mod-2))%mod;
ans=(ans*d[l])%mod;
}
}
cout<<ans<<" ";
}
cout<<endl;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr), cout.tie(nullptr);
int T = 1;
cin>>T;
while (T--) {
solve();
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库