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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[十二省联考2019]皮配

發布時間:2023/11/30 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [十二省联考2019]皮配 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接

選一個派系和一個陣營可以唯一確定一名導師

因為每一個陣營里的導師都分別來自不同派系,所以k=0時,對陣營的選擇是不影響對派系的選擇的

唯一的限制就是同城市的要在同一個陣營

所以以每個城市為物品,物品大小為該城市的人數,陣營人數為背包容量,做背包dp

再以每個學校為物品,物品大小為該學校的人數,派系人數為背包容量,做背包dp

只用一維記錄背包大小即可,因為總人數-背包里的人數=在另一個陣營或派系的人數

然后合并答案即可

方案數是可以相互乘起來的,k很小,所以我們可以暴力做k!=0的情況,然后乘上符合要求的k==0的方案數

k!=0時,記\(f[x][t][i][j]\)為前x個學校,前一個學校選擇了t陣營,此時藍有i個人,鴨派有j個人的方案數

滾動第一維,否則空間會爆

將學校按城市排序,這樣相同城市的就會排在一起,轉移的時候如果和前一個學校同城就要選擇相同陣營

#include<bits/stdc++.h> #define rep(i,j,k) for(int i=j;i<=k;++i) using namespace std; typedef long long ll; typedef double db; char cch; inline int rd(){int x=0,fl=1;cch=getchar();while(cch>'9'||cch<'0'){if(cch=='-') fl=-1;cch=getchar();}while(cch>='0'&&cch<='9') x=(x<<3)+(x<<1)+cch-'0',cch=getchar();return x*fl; } const int mod=998244353,N=3000; struct abc{int ct,sum,ban; }p1[N],p2[N]; int f[N],g[N],ff[2][2][N][N],ok[N],bl[N],ct[N],city[N],sum[N],ban[N]; inline void inc(int &A,int B){//會比 %mod快一點點 A+=B;if(A>mod) A-=mod;if(A<0) A+=mod; } inline int mul(int A,int B){return 1ll*A*B%mod; } inline int sub(int a,int b){a-=b;if(a<0) a+=mod;return a; } inline int getg(int l,int r){if(l>r) return 0;if(l==0) return g[r];//為了dp方便g[0]=1,實際上應該是0return sub(g[r],g[l-1]); } inline int getf(int l,int r){if(l>r) return 0;if(l==0) return f[r];//同理 return sub(f[r],f[l-1]); } inline bool cmp(const abc &a1,const abc &a2){return a1.ct<a2.ct; } inline void sv(){int n=rd(),c=rd(),c0=rd(),c1=rd(),d0=rd(),d1=rd(),ans=0,tot=0;//n所學校,c個城市,藍陣營 C0。 紅陣營 C1。 鴨派系 D0。 R派系D1。memset(city,0,sizeof city);rep(i,1,n) ct[i]=rd(),sum[i]=rd(),tot+=sum[i],ban[i]=-1,city[ct[i]]+=sum[i];//city[i]表示第i個城市一共有多少人 int k=rd(),id;rep(i,1,k) id=rd(),ban[id]=rd();int len1=0,len2=0;rep(i,1,n){if(ban[i]!=-1) p1[++len1]=(abc){ct[i],sum[i],ban[i]};//有特殊要求的 else p2[++len2]=(abc){ct[i],sum[i],ban[i]};//沒有特殊要求的 }sort(p1+1,p1+len1+1,cmp);//按城市排序rep(i,1,len1){if(city[p1[i].ct]==-1) ok[i]=0;//陣營的轉移以城市為單位else ok[i]=city[p1[i].ct]/*注意*/,city[p1[i].ct]=-1;}//memset(g,0,sizeof g),g[0]=1;rep(i,1,c) if(city[i]>0) for(int j=c0;j>=city[i];--j) inc(g[j],g[j-city[i]]);/*做前綴和*/rep(i,1,c0) inc(g[i],g[i-1]);//memset(f,0,sizeof f),f[0]=1;rep(i,1,len2) for(int j=d0;j>=p2[i].sum;--j) inc(f[j],f[j-p2[i].sum]);/*做前綴和*/rep(i,1,d0) inc(f[i],f[i-1]);//memset(ff,0,sizeof ff);//ff[x][t][i][j]為前x個學校,前一個學校選擇了t陣營,此時藍有i個人,鴨派有j個人的方案數,滾動第一維 ff[0][0][0][0]=1;int cnt=0,now=0;rep(i,1,len1){//對有要求的學校暴力求解now^=1;int tmp=p1[i].sum,bn=p1[i].ban,d=ok[i],lst=cnt;//lst=之前的學校的總人數 cnt+=tmp;rep(t,0,1) rep(h,0,c0) rep(j,0,cnt) ff[now][t][h][j]=0;//這里不可以用memset,用了會超時,因為一開始cnt很小,所以循環更快 rep(t,0,1){int cs=-1;//choiseif(i>1&&p1[i].ct==p1[i-1].ct) cs=t; for(int i=c0;i>=0;--i) for(int j=cnt;j>=0;--j){if(cs!=1){//如果同城市的選擇了0陣營,或與上一個不同城,if(bn!=1&&i>=d&&j<=lst) inc(ff[now][0][i][j],ff[now^1][t]/*注意是t而不是0*/[i-d][j]);//沒有禁掉小R,可以加入R派 if(bn!=0&&i>=d&&j-tmp<=lst&&j>=tmp) inc(ff[now][0][i][j],ff[now^1][t][i-d][j-tmp]);//沒有禁掉Yazid,可以加入鴨派}if(cs!=0){//如果同城市的選擇了1陣營,或與上一個不同城,if(bn!=3&&j<=lst) inc(ff[now][1][i][j],ff[now^1][t][i][j]);if(bn!=2&&j-tmp<=lst&&j>=tmp) inc(ff[now][1][i][j],ff[now^1][t][i][j-tmp]);}}}}//rep(t,0,1) rep(i,0,c0) rep(j,0,d0){int v=ff[now][t][i][j];if(!v)continue;int t1=c0-i,t2=max(0,tot-d1-j),t3=max(0,tot-c1-i),t4=d0-j;//符合人數要求的區間 inc(ans,mul(v,mul(getg(t3,t1),getf(t2,t4))));}printf("%d\n",ans); } int main(){int T=rd();while(T--) sv(); } /* 2 2 1 3 2 2 2 1 1 1 2 1 1 0 4 2 10 30 20 30 1 6 2 4 1 7 2 4 2 2 3 3 1 */

轉載于:https://www.cnblogs.com/Doingdong/p/10727364.html

總結

以上是生活随笔為你收集整理的[十二省联考2019]皮配的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 深夜视频在线观看免费 | 中文字幕淫 | 欧美 在线 | 后进极品美女圆润翘臀 | 日本激情一区二区三区 | 色婷婷综合视频 | 久久免费小视频 | 欧美成人性生活 | 巨大黑人极品videos精品 | 国产美女视频免费观看下载软件 | 国产精品婷婷 | 无人在线观看高清视频 单曲 | 美女户外露出 | 亚洲精品中文字幕 | 三级黄视频 | 欧美激情精品久久久久 | 国产av一区二区三区最新精品 | 久久亚洲aⅴ无码精品 | 精品久久久久久无码国产 | 午夜精品欧美 | 欧美a视频在线观看 | 91成人在线看 | 精品国产丝袜一区二区三区乱码 | 在线观看视频日韩 | 亚洲av成人无码一二三在线观看 | 日韩视频免费观看高清完整版在线观看 | 亚州一级 | xx99小雪| 亚洲天堂中文字幕在线观看 | 天堂中文在线官网 | 欧美妞干网 | 性高潮免费视频 | 国产日皮视频 | 欧美性猛交xxxx乱大交蜜桃 | 成人午夜sm精品久久久久久久 | 999热精品视频 | 老司机av导航 | 欧美视频一区二区三区在线观看 | 五月婷久久 | 老局长的粗大高h | 在线能看的av网站 | 日本网站在线 | 性高潮久久久久久 | 久久久久久久久久影院 | 国产精品13p| aav在线 | 亚洲成a | 亚洲福利电影网 | 天天干天天爽天天射 | 亚色视频| 超碰97在线免费观看 | 久久久久久无码精品大片 | 亚洲av成人无码一二三在线观看 | 久久婷婷成人综合色 | av女大全列表 | 日本免费无人高清 | 午夜精品久久久久久久久久久 | 欧美乱轮视频 | 黄色av网站免费在线观看 | 姝姝窝人体www聚色窝 | 国产精品一区二区在线免费观看 | 久久精品欧美一区二区三区不卡 | 亚洲第一黄色网 | 人妻射精一区二区 | 国产日b视频 | 海角国产乱辈乱精品视频 | 国产噜噜噜噜噜久久久久久久久 | 国内老熟妇对白hdxxxx | 亚洲综合中文 | 日本 奴役 捆绑 受虐狂xxxx | 一本到免费视频 | 精品亚洲永久免费精品 | 一二区精品 | 高清国产一区二区 | 国产一级片毛片 | 爱涩av | 亚洲午夜精品一区二区三区 | 影音先锋天堂网 | 超碰在线公开 | 天天操妹子 | 91视频高清 | 韩日欧美 | 欧美一区二区三区成人片在线 | 好吊妞视频在线观看 | 国产精品一区久久久 | 不卡视频免费在线观看 | chinese xxxx videos andvr| 中文在线а√在线8 | 蜜臀va| 香蕉av一区 | 中文字幕第8页 | 国产精品三区四区 | 91精品国产入口 | 你懂的在线视频网站 | 国产综合久久久久久鬼色 | 亚洲一区二区播放 | 超碰人人爱人人 | 无码精品人妻一区二区三区漫画 | 全部免费毛片 |