CQOI2018 解鎖螢幕

2022-07-14 11:24:21 字數 1220 閱讀 1428

\(n\leq 20\)一眼狀壓。

設\(f[i][j]\)表示:訪問狀態為\(i\),當前在\(j\)點的方案數。

我們列舉乙個\(k\),表示下乙個要去的地方;要判斷\(j\)能不能轉移到\(k\),還要列舉\(l\),判斷\(j,k,l\)是否共線。判斷共線是基礎向量,一次點積+一次叉積帶走。

這樣複雜度\(o(n^32^n)\),期望得分\(30\%\)。

**:

#includeusing namespace std;

#define pii pair#define mp make_pair

#define x first

#define y second

const int mod=1e8+7;

int n,f[1<<20][20],lim,res;

pii p[20];

pii operator-(const pii &u,const pii &v)

int operator*(const pii &u,const pii &v)

int operator^(const pii &u,const pii &v)

int main()

// printf("%d\n",ok);

(f[i|(1<=4)for(int j=0;j考慮\(o(n^3)\)預處理出如果能從\(j\)轉移到\(k\)需要選擇的子集。這樣子就可以\(o(1)\)在dp時判斷(即判斷該子集是否是\(i\)的子集)。複雜度\(o(n^22^n)\)。期望得分\(100\%\)。

另:本題卡常,請隨手吸氧。

**:#pragma gcc optimize(3)

#includeusing namespace std;

#define pii pair#define mp make_pair

#define x first

#define y second

const int mod=1e8+7;

int n,f[1<<20][20],lim,res,blk[20][20];

pii p[20];

pii operator-(const pii &u,const pii &v)

int operator*(const pii &u,const pii &v)

int operator^(const pii &u,const pii &v)

int main()

CQOI2018 解鎖螢幕

使用過android手機的同學一定對手勢解鎖螢幕不陌生。android的解鎖螢幕由3x3個點組成,手指在螢幕上畫一條 線將其中一些點連線起來,即可構成乙個解鎖圖案。如下面三個例子所示 畫線時還需要遵循一些規則 1 連線的點數不能少於4個。也就是說只連線兩個點或者三個點會提示錯誤。2 兩個點之間的連線...

CQOI2018 解鎖螢幕

其實只有開了o2才能a.就是我們看到n的範圍這麼小,就想到狀壓dp。然後我們設狀態dp i 表示狀態為i的 二進位制表示該點選或者不選 方案數有多少個。但是我們發現因為還要列舉轉移下乙個點,所以我們還要記錄一下最後的那個點是什麼。於是我們修改狀態為 dp i j 表示當前狀態為i,最後乙個點的編號為...

CQOI 2018 解鎖螢幕

洛谷傳送門 使用過android 手機的同學一定對手勢解鎖螢幕不陌生。android 的解鎖螢幕由3x3 個點組成,手指在螢幕上畫一條線,將其中一些點連線起來,即可構成乙個解鎖圖案。如下面三個例子所示 畫線時還需要遵循一些規則 連線的點數不能少於4 個。也就是說只連線兩個點或者三個點會提示錯誤。兩個...