524 憤怒的小鳥 狀壓DP 重複覆蓋問題

2022-09-07 04:42:08 字數 1447 閱讀 7846

題目:

題意:給你一些點,求最少需要經過原點的拋物線經過所有點。

#include #include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

//#include

//#include

//#include

//#define int long long

#define pb push_back

#define pii pair#define mpr make_pair

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

#define x first

#define y secondtypedef

long

long

ll;const

int inf = 0x3f3f3f3f

;const ll inf = 0x3f3f3f3f3f3f3f3f

;const

int n = 18, m = 1

<< 18

;const

double eps = 1e-8

;using

namespace

std;

typedef pair

pdd;

intn, m;

pdd q[n];

//記錄點

int path[n][n]; //

倆個點構成一 條直線,存的是這條直線經過的點壓完後的二進位制數

int f[m]; //

dpint cmp(double x, double

y) signed main(

int argc, char

const *ar**)

path[i][j] =state;

//存下這個二進位制狀態,每一位是1代表這條線經過這個點

} }

memset(f,

0x3f, sizeof

(f));

f[0] = 0

;

//這裡跑的狀態,所以每一位0至少都會被列舉一遍

for (int i = 0; i < 1

<< n; i++)

}for (int j = 0; j

j++)

}cout

<< f[(1

<< n) - 1] <

}return0;

}

view code

NOIP2016 憤怒的小鳥(狀壓DP)

輸入格式 第一行包含乙個正整數 t,表示遊戲的關卡總數。下面依次輸入這 t個關卡的資訊。每個關卡第一行包含兩個非負整數 n,m,分別表示該關卡中的小豬數量和 kiana 輸入的神秘指令型別。接下來的 n行中,第 ii 行包含兩個正實數 如果 m 0,表示kiana輸入了乙個沒有任何作用的指令。如果 ...

P2831 憤怒的小鳥 狀壓dp

n nn個點,每次可以射掉在函式y a x2 b xy ax 2 bx y ax2 bx上的點 a,b a,ba,b自定但是要求a 0a 0 a 0 求最少射擊次數。考慮狀壓,我們發現如果一次射掉兩個或以上的點那麼一定是一條固定的線 如果a 0 a geq 0 a 0的話就沒有了 計算cov eri...

Noip2016 憤怒的小鳥(狀壓DP)

題意大概就是座標系上第一象限上有n只豬,每次可以構造一條經過原點且開口向下的拋物線,拋物線可能會經過某一或某些豬,求使所有豬被至少經過一次的拋物線最少數量。原題中還有乙個特殊指令m,對於正解並沒有什麼卵用,第一行乙個數t,表示資料組數 對於每組資料,第一行2個整數n,m,接下來n行每行2個正實數想x...