luogu3877 TJOI2010 打掃房間

2021-08-14 05:37:53 字數 1752 閱讀 4348

(

題目描述

學校新建了一批宿舍,值日生小a要把所有的空房間都打掃一遍。這些宿舍的布局很奇怪,整個建築物裡所有的房間組成乙個n * m的矩陣,每個房間的東南西北四面牆上都有乙個門通向隔壁房間。另外有些房間是堆放雜物的,無需打掃。小a想設計若干條打掃路線,使得恰好進出每個需打掃的房間各一次,而且進出每個房間不能通過同乙個門。要求每條路線都是乙個閉合的環線,並且每條路線經過的房間數大於2。

如下面兩圖所示均為滿足要求的打掃方案(灰色格仔為放雜物的房間):

小a發現對於某些房間布局是不存在這樣的滿足要求的方案的。他請你寫乙個程式計算一下,對於一種給定的房間布局,滿足要求的方案是否存在。

輸入輸出格式

輸入格式:

輸入檔案的第一行是乙個整數t (1 ≤ t ≤ 10),表示該檔案中一共有t組資料。接下來依次是t組資料的資訊。每組資料的第一行包含兩個整數n和m,接下來的n行,每行包含m個字元,表示乙個房間布局。字元』.』表示該房間需要打掃,』#』表示該房間是堆放雜物的,無需打掃。

輸出格式:

共輸出t行,對每組資料輸出一行,為」yes」或」no」,表示打掃方案存在與否。

輸入輸出樣例

輸入樣例#1: 複製

4 3 4

…. ….

3 43 4

3 4輸出樣例#1: 複製

yes

no yes

no說明

對50%的資料,3 ≤ n,m ≤ 12

對100%的資料,3 ≤ n,m ≤ 30

每個測試點時限1秒

這題感覺和bzoj貪吃蛇那題有點像 但是確實是簡化版的那題 考慮先針對這個棋盤進行黑白染色 然後因為要求能夠構成環的話 我所有的格仔應該都是滿足度是2 一進一出 那麼我先針對棋盤進行一下黑白格染色 然後我把黑點放在左邊 白點放在右邊 然後每個黑點都向周圍的白點連1的點 從源點向每個黑點連權值為2的點 我可以把每個黑點的一進一出看作要發兩條邊 而白點的一進一出看成入兩條邊

每個白點向匯 連權值為2的點 然後這樣 這樣的話跑一下最大流 那麼判斷一下最大流是否滿流即可 如果我可打掃的房間是奇數的話 那顯然答案是不成立的

#include

#include

#include

#include

#define n 990

#define inf 0x3f3f3f3f

using

namespace

std;

char s[33][33];

int dx=,dy=,h[n],level[n],t,id[33][33],num=1,tt,n,m;

struct nodedata[32*n];

inline

void insert1(int x,int y,int z)

inline

bool bfs()

}return0;}

inline

int dfs(int x,int s)

}return ss-s;

}int main()t=tot+1;int sum=0;

//printf("****sd\n");

for (int i=1;i<=n;++i)

}else

}}int ans=0;while(bfs()) ans+=dfs(0,inf);

if (ans==sum) printf("yes\n");else

printf("no\n");

}return

0;}

luogu3847 tjoi2007 調整隊形

題目背景 學校藝術節上,規定合唱隊要參加比賽,各個隊員的衣服顏色不能很混亂 合唱隊員應排成一橫排,且衣服顏色必須是左右對稱的。例如 紅藍綠藍紅 或 紅藍綠綠藍紅 都是符合的,而 紅藍綠紅 或 藍綠藍紅 就不符合要求。合唱隊人數自然很多,僅現有的同學就可能會有3000個。老師希望將合唱隊調整得符合要求...

TJOI2015 Day2解題報告

在一棵n 10 5的樹上要求支援 從a點走到b點,求最大的value j value i 其中i,j是點,i在路徑中出現的位置先於j。將a b路徑上每個點的value加上v。自然可以用樹鏈剖分 lct做。每一段區間存四個數 後減前 型的最大值fmx,前減後 型的最大值bmx 這是由於有時候區間可能會...

Luogu食物鏈做法2

這個題的做法2比做法1好想 以下距離都在 mod 3意義下 到最後所有動物的關係可以用樹表示,d i 表示節點i到當前fa i 的距離,我們規定若d x 1 d y 規定成 1也可以 代表x吃y 那麼如果x y同族,那麼如果規定x當前祖先到y當前距離為的d y d x 這樣x到y祖先距離為d x 到...