noi1816 畫家問題(技巧搜尋Dfs)

2022-05-15 23:53:35 字數 978 閱讀 5340

/*

problem 畫家問題

假設乙個ans陣列存的是對每乙個點的操作 0表示不圖 1表示圖

那麼 對於原圖 g 操作第三行時對第一行沒有影響 同樣往下類似的

所以 假設我們知道了ans的第一行就是最後答案的第一行 那麼對於ans的第二行 就必須是的第一行全變成黃色

以此類推 最後檢驗第n行 是不是全部黃色就好了

所以只需要列舉第一行的所有情況 共2的n次方種情況

*/#include

#include

#include

#define inff 0x7fffffff

using

namespace

std;

int n,ans[20][20],g[20][20],tmp[20][20],anss,minn=inff,tot;

char

s;void printf()//

計數 染了幾個

void pai()//

根據ans的第一行 逐行染色

}for(i=2;i<=n;i++)

for(j=1;j<=n;j++)

if(tmp[i-1][j]==1

)

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

最後檢驗最後一行是不是恰好全為黃色

if(tmp[n][i]==1)f=1

;

if(f==0

)printf();

}void dfs(int t)//

列舉ans的第一行的所有情況

ans[

1][t]=1;dfs(t+1

); ans[

1][t]=0;dfs(t+1);}

intmain()

dfs(1);

if(minn<0x7fffffff)cout

inf"

;}

luogu P1816 忠誠 題解

用st表來解決rmq問題。表示同時培訓學的st表,然後我就忘得差不多了,在這裡推薦一篇blog 大佬cym的 自己再 一篇 舉例 給出一陣列a 0 5 則區間 2,5 之間的最值為1。1 離線預處理 運用dp思想,用於求解區間最值,並儲存到乙個二維陣列中。具體解釋 1 離線預處理 st演算法使用dp...

洛谷P1816 忠誠

老管家是乙個聰明能幹的人。他為財主工作了整整10年,財主為了讓自已賬目更加清楚。要求管家每天記k次賬,由於管家聰明能幹,因而管家總是讓財主十分滿意。但是由於一些人的挑撥,財主還是對管家產生了懷疑。於是他決定用一種特別的方法來判斷管家的忠誠,他把每次的賬目按1,2,3 編號,然後不定時的問管家問題,問...

P1816 統計數字

某次科研調查時得到了n個自然數,每個數均不超過1500000000 1.5 10 9 已知不相同的數不超過10000個,現在需要統計這些自然數各自出現的次數,並按照自然數從小到大的順序輸出統計結果。第1行是整數n 1 n 200000 表示自然數的個數。第2 n 1行每行乙個自然數。輸出包含m行 m...