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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NOIP模拟测试28「阴阳·虎·山洞」

發(fā)布時(shí)間:2023/12/2 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NOIP模拟测试28「阴阳·虎·山洞」 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

寫這幾個(gè)題解我覺得我就像在按照官方題解抄一樣

陰陽

題解

將題目中給的陰陽看作黑色和白色

首先我們觀察到最后生成圖中某種顏色必須是豎著單調(diào)遞增或豎著單調(diào)遞減

類似這樣

否則不滿足這個(gè)條件

但合法染色方案必須滿足任意兩個(gè)同顏色格子之間的格子也必須是該顏色。

然后我們分四種情況統(tǒng)計(jì),

1.黑色居于左側(cè)而且分界點(diǎn)單調(diào)不降,

2.黑色居于左側(cè)而且分界點(diǎn)單調(diào)不升,

3.白色居于左側(cè)而且分界點(diǎn)單調(diào)不降,

4.白色居于左側(cè)而且分界點(diǎn)單調(diào)不升。

我們發(fā)現(xiàn)這樣會算重,

dp然后手動(dòng)容斥,

1,2會算重左面每列全是黑色

類似于

類似的3,4會算重左面全是白色

那么上面全是黑色我們也會算重(2,3)

上面全是白色我們?nèi)匀粫阒?/p>

手動(dòng)容斥

題解應(yīng)該都能看懂,實(shí)現(xiàn)稍難(不用說了我碼力太弱)

代碼

#include<bits/stdc++.h> using namespace std; #define ll long long #define A 1111 const ll mod=1e9+7; ll can[A][A][10],f[A][A][2],up[A][A],down[A][A]; //can定義為i行從1--j染成B剩下染成W是否合法 char ch[A][A]; ll n,m,flag1,flag2,ans; int main(){scanf("%lld%lld",&n,&m);for(ll i=1;i<=n;i++)scanf("%s",ch[i]+1);for(ll i=1;i<=n;i++){ll maxpos=0;for(ll j=1;j<=m;j++){if(ch[i][j]=='W') break;if(ch[i][j]=='B') maxpos=j;}for(ll j=maxpos+1;j<=m;j++)if(ch[i][j]=='B'){maxpos=m+1; break;}ll now=maxpos;while(ch[i][now]!='W'&&now<=m)can[i][now][1]=1,now++;}for(ll i=1;i<=n;i++){ll maxpos=m+1;for(ll j=m;j>=1;j--){if(ch[i][j]=='W') break;if(ch[i][j]=='B') maxpos=j;}for(ll j=maxpos-1;j>=1;j--)if(ch[i][j]=='B'){maxpos=-1; break;}ll now=maxpos;while(ch[i][now]!='W'&&now>=0)can[i][m-now+1][2]=1,now--;}for(ll i=0;i<=m;i++)up[0][i]=1,down[0][i]=1;for(ll i=1;i<=n;i++){for(ll j=0;j<=m;j++){if(!can[i][j][1]) continue;f[i][j][0]=up[i-1][j];f[i][j][1]=down[i-1][j]; // printf("up[%lld][%lld]=%lld down=%lld\n",i-1,j,up[i-1][j],down[i-1][j]); }for(ll j=0;j<=m;j++)up[i][j]=(up[i][j-1]+f[i][j][0])%mod/*,printf("f=%lld up=%lld\n",f[i][j][0],up[i][j])*/;for(ll j=m;j>=0;j--)down[i][j]=(down[i][j+1]+f[i][j][1])%mod; // printf("up=%lld down=%lld\n",up[n][m],down[n][0]); } /* for(ll i=1;i<=n;i++,puts("")){for(ll j=1;j<=m;j++){printf("%lld ",can[i][j][1]);}} */ memset(f,0,sizeof(f));ans=(ans+up[n][m]+down[n][0]+mod)%mod; // printf("ans=%lld\n",ans);for(ll i=1;i<=n;i++){for(ll j=0;j<=m;j++){if(!can[i][j][2]) continue;f[i][j][0]=up[i-1][j];f[i][j][1]=down[i-1][j];}for(ll j=0;j<=m;j++)up[i][j]=(up[i][j-1]+f[i][j][0])%mod;for(ll j=m;j>=0;j--)down[i][j]=(down[i][j+1]+f[i][j][1])%mod;} // printf("up=%lld down=%lld\n",up[n][m],down[n][0]);ans=(ans+up[n][m]+down[n][0]+mod)%mod; // printf("ans=%lld\n",ans);memset(f,0,sizeof(f));//減去左右重復(fù)for(ll i=1;i<m;i++){ll flag=0;for(ll j=1;j<=n;j++)if(!can[j][i][1]){flag=1;break;}if(!flag) ans--;}for(ll i=1;i<m;i++){ll flag=0;for(ll j=1;j<=n;j++)if(!can[j][i][2]){flag=1;break;}if(!flag) ans--;}//減去上下//若上面為B下面只能為Wfor(ll i=1;i<n;i++){ll flag=0;for(ll j=1;j<=i;j++)if(!can[j][m][1]){flag=1;break;}for(ll j=i+1;j<=n;j++)if(!can[j][0][1]){flag=1;break;}if(flag)continue;ans--;}for(ll i=n;i>=2;i--){ll flag=0;for(ll j=1;j<=i-1;j++)if(!can[j][0][1]){flag=1;break;}for(ll j=i;j<=n;j++)if(!can[j][m][1]){flag=1;break;}if(flag)continue;ans--;}for(ll i=1;i<=n;i++){if(!can[i][0][1]) flag1=1;if(!can[i][m][1]) flag2=1;}if(!flag1) ans-=3;if(!flag2) ans-=3;printf("%lld\n",(ans+mod)%mod); } View Code

題解

我們發(fā)現(xiàn)一條性質(zhì)我們子樹內(nèi)兩個(gè)點(diǎn)要變成黑色我們同時(shí)經(jīng)過樹外的邊不會使次數(shù)變優(yōu)(除了直接與lca相連的邊)

然后根據(jù)這條性質(zhì),我們發(fā)現(xiàn)我們一定存在一種最優(yōu)方案使任意兩條染色路徑互不相交

然后我們進(jìn)行貪心

首先題目中給的無要求的邊我們進(jìn)行縮邊

我們統(tǒng)計(jì)到當(dāng)前子樹都已經(jīng)全部染成黑色了,那么我們只用考慮與它相連就行

拿下面這個(gè)圖舉例(假設(shè)全部為白邊)

你考慮3時(shí)你6的子樹都處理完了,然后你遇到兩個(gè)白色邊(3,6)(3,7)你貪心直接染色就行,那么如果最后剩下一個(gè)沒有染色怎么辦,顯然我們不用管,我們發(fā)現(xiàn)與3相連的邊(1,3)這條邊是必定被染色的,2本來要和3進(jìn)行染色讓(1,2)(1,3)進(jìn)行染色,我們現(xiàn)在把這個(gè)邊拉過來變成(2,8)進(jìn)行染色就行了

那么依據(jù)上文說的,我們只需要讓與3相連白邊個(gè)數(shù)(除了父親與它相連邊)/2就行了

推廣到所有點(diǎn)統(tǒng)計(jì)白邊個(gè)數(shù)/2即可

然后這樣做對于根來說會出錯(cuò),特判一下就AC了(對于根來說沒有辦法再讓自己父親拉邊過來)

?

?

#include<iostream> #include<cstdio> #include<cstring> #include<queue> #include<algorithm> using namespace std; #define R register #define ll long long inline ll read()//------- {ll aa=0;char cc=getchar();while(cc<'0'||cc>'9') cc=getchar();while(cc<='9'&&cc>='0'){aa=(aa<<3)+(aa<<1)+(cc^48);cc=getchar();}return aa; } const int N=1000005; struct tree{int v,last; }tr[N<<1]; int tot,first[N]; inline void add(int x,int y) {tr[++tot]=(tree){y,first[x]};first[x]=tot;return; } int n,ans,mp[N],vi[N]; int dfs(int x,int fa) {int sum=0;vi[x]=1;for(R int i=first[x],v;i;i=tr[i].last){v=tr[i].v;if(v==fa)continue;dfs(v,x);sum^=1;if(!sum)++ans;}return sum; } int main() {//freopen("tight.in","r",stdin);//freopen("tight.out","w",stdout);n=read();mp[1]=++mp[0];for(R int i=2,x,y,z;i<=n;++i){x=read();y=read();z=read();if(!z){if(mp[i])mp[x]=mp[i];else if(mp[x])mp[i]=mp[x];else mp[i]=mp[x]=++mp[0];continue;}if(!mp[i])mp[i]=++mp[0];if(!mp[x])mp[x]=++mp[0];if(y)continue;add(mp[i],mp[x]);add(mp[x],mp[i]);}for(R int i=1;i<=mp[0];++i)if(!vi[i])if(dfs(i,i))++ans;printf("%d",ans);return 0; } View Code

?

轉(zhuǎn)載于:https://www.cnblogs.com/znsbc-13/p/11424317.html

總結(jié)

以上是生活随笔為你收集整理的NOIP模拟测试28「阴阳·虎·山洞」的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产精品久久久久9999爆乳 | 亚洲二区在线 | 老师的肉丝玉足夹茎 | 激情小说欧美色图 | 噜噜噜久久 | 久久精品国产亚洲AV无码麻豆 | 第四色影音先锋 | 久久久噜噜噜久久久 | 在线观看亚洲天堂 | 亚洲av无码一区二区三区性色 | 欧美日韩少妇 | 一区二区三区手机在线观看 | 亚洲精品乱码久久久久久久久久久久 | 亚洲一区二区免费 | 亚洲一区二区中文 | 神马老子午夜 | 国产日比视频 | 亚洲av无码一区二区三区网站 | 91xxxxx| 草草久久久无码国产专区 | 翔田千里在线播放 | 日日好av| 欧美久久久久久久久久久久久久 | 超碰天天操 | 国产精品88久久久久久妇女 | 青青青视频免费观看 | 无遮挡黄色 | 全黄一级片 | 日本三级韩国三级三级a级按摩 | 手机av免费在线观看 | 97人妻人人揉人人躁人人 | 青青青国内视频在线观看软件 | 森泽佳奈作品在线观看 | 免费看黄色片子 | 日韩黄片一区二区三区 | 国产77777| 久操视频精品 | 无法忍受在线观看 | 亚洲欧美精品一区二区 | 91婷婷| 正在播放木下凛凛xv99 | 国产超碰人人爽人人做人人爱 | 性欧美日本 | www.黄色免费 | 狠狠干五月 | 9色视频在线观看 | 女同性做爰全过程 | a级欧美| 色婷婷热久久 | 麻豆av电影在线观看 | 国产91精选 | 性猛交xxxx乱大交孕妇印度 | 午夜精品久久久久久久99黑人 | 亚洲无卡 | 视频三区在线 | 九色在线观看 | 国产又黄又粗又长 | 67194少妇在线观看 | 国产99在线 | 国产亚洲精品久久久久丝瓜 | 欧美在线你懂的 | 精品伦理一区二区 | 粉嫩av渣男av蜜乳av | 国内精品免费视频 | 黄色日韩视频 | 成人三级黄色片 | 午夜精品视频一区 | 国产一区二区自拍视频 | 五月天导航 | 欧美日韩一级二级 | 美女一级| аⅴ资源新版在线天堂 | 国产乱淫av免费 | 国产91精品露脸国语对白 | 免费伊人网 | 亚洲在线免费观看 | 日本三级中国三级99人妇网站 | 亚洲人无码成www久久 | 午夜激情福利在线 | 国产偷亚洲偷欧美偷精品 | 欧美情趣视频 | 国产成人自拍偷拍 | 国产精品一区二 | 五月激情小说 | 亚洲ⅴ国产v天堂a无码二区 | 国产又粗又长又大视频 | 欧美视频一区二区三区在线观看 | 伊人自拍 | 亚洲一二三精品 | 视频二区欧美 | 一区二区三区精品国产 | 一级黄色片网址 | 久久亚洲一区 | 婷综合| 午夜影院黄| 欧美黄色性生活 | 污网站免费观看 | 成人在线视频一区二区 | 激情宗合网 |