資料小,暴力搜尋可以搞定。但是推薦使用dfs,每個節點(數)有取與不取兩個分支。注意: 0是必須出現的。
證明如下:
最終得到的結果序列中,0是必須出現的,證明如下:
如果存在另乙個滿足要求的結果序列s=,其最小值為a1 = n > 0,
那麼序列s' = s ^ n 是滿足條件的最小解,且首元素為0 /*
id: xpli1
prog: hamming
lang: c++
*/#include
#include
#include
#include
#include
using namespace std;
#define out cout
#define in cin
ofstream fout ("hamming.out");
ifstream fin ("hamming.in");
int n,b,d;
bool ham[256][256] = ;
int res[65];
int dat[65];
int max;
bool finded = false;
bool ham_dis(int a,int b)
return dis < d ? false : true;}
void init()
if(dep == max) return;
int i;
for(i=0; i
dfs(k,dep+1); }
void output()
USACO Closed Fences 解題報告
幾何題看著就很有畏懼感。這裡用的是最 的演算法,時間複雜度應該在n 2。還沒看別人的解題報告,不過我猜nlogn的解法是有的。比如判斷乙個fence是不是valid的時候,這裡將所有的線段兩兩比較,看是否相交。但是有個叫line sweep的演算法,可以在nlogn的時間複雜度內完成。既然accep...
Wiggle Subsequence解題報告
這道題和最長子序列,divisible subset題目類似,都可以用o n2 的時間複雜度完成。可以想象,對於第i個數,dp i dp j 1,當且僅當dp j 1 dp i 而且nums j 和nums i 的差值和j所處位置的差值符號相反。所以,如下 class solution if dp ...
The XOR Largest Pair 解題報告
描述 在給定的n個整數a1,a2 an中選出兩個進行xor運算,得到的結果最大是多少?輸入格式 第一行乙個整數n,第二行n個整數a1 an。輸出格式 乙個整數表示答案。樣例輸入 31 2 3 樣例輸出 資料範圍與約定 對於100 的資料 n 10 5,0 ai 2 31。解題思路 由於只要求在n個數...