POJ3279 Fliptile 開關問題

2021-07-23 23:09:08 字數 2309 閱讀 3108

記錄乙個菜逼的成長。。

挑戰程式設計書上的**。

#pragma comment(linker, "/stack:1024000000,1024000000")

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define all(v) (v).begin(),(v).end()

#define cl(a,b) memset(a,b,sizeof(a))

#define bp __builtin_popcount

#define pb push_back

#define mp make_pair

#define fin freopen("d:","r",stdin)

#define fout freopen("d:","w",stdout)

#define lson t<<1,l,mid

#define rson t<<1|1,mid+1,r

#define seglen (node[t].r-node[t].l+1)

#define pi 3.1415926

#define exp 2.718281828459

typedef

long

long ll;

typedef

unsigned

long

long ull;

typedef pair pii;

typedef pairpll;

typedef

vector

vpii;

const

int inf = 0x3f3f3f3f;

const

int mod = 1e9 + 7;

template

inline

void read(t &x)

inline

bool dbread(double &num)

else

if(in=='.')

else num=in-'0';

if(!isd)

}if(in!='.')else

}if(isn) num=-num;

return

true;

}template

inline

void write(t a)

if(a >= 10) write(a / 10);

putchar(a % 10 + '0');

}/******************head***********************/

const

int maxn = 20;

const

int dx[5] = ;

const

int dy[5] = ;

int m,n;

int tile[maxn][maxn];

int opt[maxn][maxn]; //儲存最優解

int flip[maxn][maxn]; //儲存中間結果

//查詢(x,y)的顏色

int get(int x,int y)

}return c % 2;

}//求出第一行確定情況下的最小操作次數

//不存在解的話返回-1

int calc()}}

//判斷最後一行是否全白

for( int j = 0; j < n; j++ )

//統計反轉的次數

int res = 0;

for( int i = 0; i < m; i++ )

}return res;

}void solve()

int num = calc();

if(num >= 0 && (res < 0 || res > num))

}if(res < 0)

else }}

}int main()

}solve();

}return

0;}

poj 3279 Fliptile 列舉 模擬

簡要題意 踩乙個點翻轉周圍五個點,求全翻成白色的方案中殘磚次數最少而且字典序最小的。我們可以首先確定第一行的翻轉情況,這個用二進位制列舉。然後之後每一行的翻轉情況就已經可以確定了,然後模擬出來就可以了。算是比較經典的題,好像看到過不少類似的題。include include include incl...

反轉問題 POJ 3279 Fliptile

problem description 農夫約翰直到聰明的牛產奶多。於是為了提高牛的至上他準備了如下遊戲。有乙個n m的格仔,每個格仔可以翻轉正反面,它們一面是黑色,另一面是白色。黑色的格仔翻轉後就是白色,白色的格仔翻轉過來則是黒色。遊戲要做的就是把所有的格仔都翻轉成白色。不過因為牛蹄很大,所以每次...

poj 3279 Fliptile 暴力搜尋

當第一行確定後,後面的翻轉必須保證前一行正確,也就是可以通過前一行的情況,確定當前翻轉情況。那列舉第一行,計算答案就可以了 include include include includeusing namespace std int n,m,g 16 16 flip 16 16 ans,as 16 ...