日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2021“MINIEYE杯”中国大学生算法设计超级联赛(2)I love max and multiply(转化)

發(fā)布時間:2023/12/3 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2021“MINIEYE杯”中国大学生算法设计超级联赛(2)I love max and multiply(转化) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

I love max and multiply

Code

代碼抄的std

#include<bits/stdc++.h> using namespace std; using ll=long long; template <class T=int> T rd() {T res=0;T fg=1;char ch=getchar();while(!isdigit(ch)) {if(ch=='-') fg=-1;ch=getchar();}while( isdigit(ch)) res=(res<<1)+(res<<3)+(ch^48),ch=getchar();return res*fg; } const int N=(1<<20)+10,mod=998244353,INF=2e9; int A[N],B[N]; ll C[N]; int mxa[N],mna[N]; int mxb[N],mnb[N]; int n,m; void solve(int k) {if(mna[k]!= INF&&mnb[k]!= INF) C[k]=max(C[k],1ll*mna[k]*mnb[k]);if(mna[k]!= INF&&mxb[k]!=-INF) C[k]=max(C[k],1ll*mna[k]*mxb[k]);if(mxa[k]!=-INF&&mnb[k]!= INF) C[k]=max(C[k],1ll*mxa[k]*mnb[k]);if(mxa[k]!=-INF&&mxb[k]!=-INF) C[k]=max(C[k],1ll*mxa[k]*mxb[k]); } int main() {int Tc=rd();while(Tc--){n=rd();for(int i=0;i<n;i++) A[i]=rd();for(int i=0;i<n;i++) B[i]=rd();m=1;while(m<n) m<<=1;for(int i=0;i<n;i++) mxa[i]=mna[i]=A[i],mxb[i]=mnb[i]=B[i];for(int i=n;i<m;i++) mxa[i]=mxb[i]=-INF,mna[i]=mnb[i]=INF;for(int j=1;j<m;j<<=1)for(int i=m-1;i>=0;i--)if(!(i&j)) // i的第j位是1{mxa[i]=max(mxa[i],mxa[i^j]);mxb[i]=max(mxb[i],mxb[i^j]);mna[i]=min(mna[i],mna[i^j]);mnb[i]=min(mnb[i],mnb[i^j]);}C[n]=-1e18;for(int i=n-1;i>=0;i--){C[i]=-1e18;solve(i);C[i]=max(C[i],C[i+1]);}ll ans=0;for(int i=0;i<n;i++) ans=(ans+C[i]%mod)%mod;ans=(ans+mod)%mod;printf("%lld\n",ans);}return 0; }

總結

以上是生活随笔為你收集整理的2021“MINIEYE杯”中国大学生算法设计超级联赛(2)I love max and multiply(转化)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。