hdu 4770 列舉 dfs爆搜)

2021-06-26 03:13:00 字數 1072 閱讀 7647

思路:由於最多只有15個".",可以直接列舉放置的位置,然後判斷是否能夠全部點亮即可。需要注意的是,有乙個特殊的light,也需要列舉它的位置以及放置的方向。

#include #include #include #include using namespace std;

const int max_n = (200 + 22);

int n, m;

struct node

node(int _x, int _y) : x(_x), y(_y) {}

}node[17];

int n;

char g[max_n][max_n];

/*if kind == 0: 0 degree.

if kind == 1: 90 degree.

if kind == 2: 180 degree.

if kind == 3: 270 degree.

*/bool judge(int x, int y)

int find(int x, int y)

return -1;

}bool vis[17];

bool gao(int s, int kind)

else if (kind == 1) else if (kind == 2) else if (kind == 3)

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

} bool tag = true;

for (int i = 0; i < n; ++i) if (!vis[i])

if (tag) return true;

} return false;

}int main()

} if (n == 0)

int ans = -1;

for (int s = 0; s < (1 << n); ++s)

ans = (ans == -1 ? cnt : min(cnt, ans));}}

} printf("%d\n", ans);

} return 0;

}

hdu 4770 狀壓 列舉

長記性了,以後對大陣列初始化要注意了!140ms 原來是對vis陣列進行每次初始化,每次初始化要200 200的複雜度 一直超時,發現沒必要這樣,直接標記點就行了,只需要乙個15的陣列用來標記,vis陣列用來對映座標就行了 然後就是暴力加了一點優化,下面沒有加優化。include include d...

hdu 1692 列舉 剪枝

題意 給你一些井的資訊,井中原有的水,當井中的水滿足一定量後會被破壞並且這些水全部流入下乙個井中,用多少能量能直接破壞這個井。然後問要想破壞第n口井至少要多少能量。解題思路 這題首先是要找到從哪口井開始破壞,因為要破壞第n口井,要麼直接破壞n,要麼n之前有連續的幾口井一同被破壞,如果中間出現了乙個不...

HDU3721 列舉 最長路

題意 給你一顆n個節點n 1條邊的樹,每條邊都有乙個權值,現在讓你任意移動一條邊然後把這條邊連線到任意兩個點上,最後問你怎樣移動才能使樹上相距最遠的兩個點距離最小。思路 先求出樹的最長路,然後列舉移動最長路上的所有邊,移走這條邊後,原樹必定分為不連線的兩顆子樹,分別求這兩顆子樹的最長路,然後分別找到...