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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

P7295-[USACO21JAN]Paint by Letters P【平面图欧拉公式】

發布時間:2023/12/3 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P7295-[USACO21JAN]Paint by Letters P【平面图欧拉公式】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正題

題目鏈接:https://www.luogu.com.cn/problem/P7295


題目大意

給出n?mn*mn?m的網格,每個格子上有字母,相同字母的四聯通相鄰格子為連通,每次詢問一個子矩陣求連通塊個數。

1≤n,m,q≤10001\leq n,m,q\leq 10001n,m,q1000


解題思路

首先一張連通的平面圖有歐拉公式
V+F=E+2V+F=E+2V+F=E+2
其中V,E,FV,E,FV,E,F分別表示點數,邊數,區域個數(對偶圖點數)。

然后不連通的對偶圖會共用一個無界域,設為CCC個連通塊,無界域會重復統計C?1C-1C?1次,然后聯立得
V+F?E=C+1V+F-E=C+1V+F?E=C+1
然后考慮怎么用這個求,首先是V,EV,EV,E,這個很容易搞,VVV直接計算,EEE用二維前綴和算就好了。

主要是FFF怎么搞,先構出不嚴格的對偶圖(就是每個格子邊上的點當做點),然后FFF就是對偶圖的連通塊數。

對于整張圖的每個連通塊,我們選擇任意一個點標記,然后記錄每個點對應連通塊的標記點,然后直接二維前綴和統計連通塊內的標記點個數,然后枚舉邊界減去邊上不完整被統計的的連通塊最后加上無界域就好了。

時間復雜度O(nm+q(n+m))O(nm+q(n+m))O(nm+q(n+m))


code

#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N=1100; const int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1}; int n,m,q,E[2][N][N],mx[N][N],my[N][N],F[N][N]; char s[N][N];bool v[N][N]; bool edg(int x,int y,int zx,int zy){if(zx<0||zy<0||zx>n||zy>m)return 0;if(zx>0&&zx<n&&zy==y+1)return (s[x][y+1]!=s[x+1][y+1]);if(zx>0&&zx<n&&zy==y-1)return (s[x][y]!=s[x+1][y]);if(zy>0&&zy<m&&zx==x+1)return (s[x+1][y]!=s[x+1][y+1]);if(zy>0&&zy<m&&zx==x-1)return (s[x][y]!=s[x][y+1]);return 1; } void dfs(int x,int y){if(x==1&&y==4)x++,x--;if(v[x][y])return;v[x][y]=1;for(int k=0;k<4;k++){int zx=x+dx[k],zy=y+dy[k];if(edg(x,y,zx,zy)){mx[zx][zy]=mx[x][y];my[zx][zy]=my[x][y];dfs(zx,zy);}}return; } #define Get(F,x1,y1,x2,y2) (F[x2][y2]-((x1)?F[x1-1][y2]:0)-((y1)?F[x2][y1-1]:0)+(((x1)&&(y1))?F[x1-1][y1-1]:0)) int check(int x,int y,int x1,int y1,int x2,int y2){if(!v[x][y]&&x>=x1&&x<=x2&&y>=y1&&y<=y2){v[x][y]=1;return 1;}return 0; } int main() {scanf("%d%d%d",&n,&m,&q);for(int i=1;i<=n;i++)scanf("%s",s[i]+1);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){E[0][i][j]=E[0][i-1][j]+E[0][i][j-1]-E[0][i-1][j-1];E[1][i][j]=E[1][i-1][j]+E[1][i][j-1]-E[1][i-1][j-1];if(s[i][j]==s[i][j+1])E[0][i][j]++;if(s[i][j]==s[i+1][j])E[1][i][j]++;}for(int i=0;i<=n;i++)for(int j=0;j<=m;j++)if(!v[i][j]){mx[i][j]=i;my[i][j]=j;F[i][j]++;dfs(i,j);}for(int i=0;i<=n;i++)for(int j=0;j<=m;j++)F[i][j]+=(i?F[i-1][j]:0)+(j?F[i][j-1]:0)-((i&&j)?F[i-1][j-1]:0);memset(v,0,sizeof(v));while(q--){int x1,y1,x2,y2,ans=0;scanf("%d%d%d%d",&x1,&y1,&x2,&y2);ans+=(x2-x1+1)*(y2-y1+1);if(y1!=y2)ans-=Get(E[0],x1,y1,x2,y2-1);if(x1!=x2)ans-=Get(E[1],x1,y1,x2-1,y2);x1--;y1--;ans+=Get(F,x1,y1,x2,y2);for(int i=x1;i<=x2;i++){ans-=check(mx[i][y1],my[i][y1],x1,y1,x2,y2);ans-=check(mx[i][y2],my[i][y2],x1,y1,x2,y2);}for(int i=y1;i<=y2;i++){ans-=check(mx[x1][i],my[x1][i],x1,y1,x2,y2);ans-=check(mx[x2][i],my[x2][i],x1,y1,x2,y2);}printf("%d\n",ans);for(int i=x1;i<=x2;i++){v[mx[i][y1]][my[i][y1]]=0;v[mx[i][y2]][my[i][y2]]=0;}for(int i=y1;i<=y2;i++){v[mx[x1][i]][my[x1][i]]=0;v[mx[x2][i]][my[x2][i]]=0;}}return 0; }

總結

以上是生活随笔為你收集整理的P7295-[USACO21JAN]Paint by Letters P【平面图欧拉公式】的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 三级视频网 | 国产情侣呻吟对白高潮 | 亚洲第一视频网站 | www99re| 国产小视频在线看 | 北岛玲一区二区 | 老司机亚洲精品 | 国产精品视频一区二区三区在3 | 欧美三级韩国三级日本三斤在线观看 | 4444亚洲人成无码网在线观看 | 亚洲视频免费在线观看 | 一区二区三区不卡在线观看 | 日本欧美激情 | 秋霞欧美视频 | 色图18p | 亚洲美女自拍视频 | 日本美女a级片 | 四虎在线播放 | 亚洲红桃视频 | av成人在线播放 | 中文字幕在线播放不卡 | 影音先锋制服 | 国产99久久久国产精品免费看 | 国产亚洲精品自拍 | 天天插视频 | 国产乱子伦视频一区二区三区 | av黄在线 | 成人免费视频网站在线看 | 桥本有菜aⅴ一区二区三区 在线午夜电影 | 麻豆久久久久久久久久 | 韩国精品一区二区三区 | 97精品人妻一区二区三区 | 涩涩视频在线免费看 | 操欧美老逼 | 好吊色这里只有精品 | 青草视频免费在线观看 | 五月婷六月 | 国产盗摄视频在线观看 | 欧美国产三级 | 我和岳m愉情xxxⅹ视频 | 手机在线看永久av片免费 | 国产女主播一区二区三区 | 淫欲少妇| 一本久久综合亚洲鲁鲁五月天 | 日韩在线观看不卡 | 精品一区精品二区 | 国产精品网站入口 | 97伦伦午夜电影理伦片 | 国产毛片一区二区三区 | 久久久成人免费视频 | 丁香花国语版普通话 | 国产一区二区在线播放视频 | 久草福利在线观看 | 欧美精品福利 | 亚洲在线激情 | 精品人伦一区二区三区蜜桃网站 | 国产女人18毛片水18精 | 污污网站在线观看视频 | 快播日韩| 国产美女永久免费 | 国产精品亚洲一区 | 国产精品91久久久 | 农村搞破鞋视频大全 | 日韩福利 | 黄色在线播放视频 | 欧美一区二三区 | 一本色道久久88加勒比—综合 | 阿拉伯性视频xxxx | 在线观看av网页 | 黄色男女网站 | 亚洲精品成人区在线观看 | 麻豆伊甸园 | 一级视频黄色 | 亚洲av无码一区二区三区网站 | 日韩午夜三级 | 钰慧的mv视频在线观看 | 国产成人精品一区二区三区四区 | 男女在楼梯上高潮做啪啪 | 欧美黄色片视频 | 亚洲国产日韩在线观看 | 亚洲精品乱码久久久久久蜜桃不卡 | 欧美老女人性生活 | 久久图库 | 台湾少妇xxxx做受 | 久久久一级黄色片 | 中文字幕色| 国产欧美视频在线播放 | 午夜精品久久 | 五月天婷婷在线播放 | av桃色| 美女扒开腿让男人操 | 激情欧美一区二区三区精品 | 狠狠干精品 | 在线亚洲不卡 | 免费精品国产 | 91制服诱惑 | 国产色自拍 | 可以在线看黄的网站 | 性高潮在线观看 |