Noip2018 填數遊戲

2022-07-22 23:00:45 字數 1435 閱讀 1507

耳熟能詳,就不多說了

對於乙個不會推式子的蒟蒻,如何在考場優雅地通過此題

手玩樣例,發現對於 \(n=1\) , \(ans=2^m\) 。對於 \(n=2\) , \(ans=4\times 3^\) 。或者乾脆打出 \(n,m\le 3\) 的表

肉眼觀察法,發現似乎有 \(f(n,m+1)=3f(n,m)\),但這並不是正確的,但如果你僅僅是這麼認為了,你仍然能夠獲得很多分數

想結論,都是特別特別顯然的那種:

有了這麼多的性質,我們發現其實可以打表拿很多分了,於是開始愉快地搜尋,按照斜線一條條地搜,邊搜邊更新當前圖的點中\(a\)類的點,同時,每條斜線上只有 \(0\) 和 \(1\) 的交界處可能導致不合法,判斷一下它的上乙個點是否是\(a\)類點就可以了

打出表了,發現結論 \(f(n,m+1)=3f(n,m),m>n\) !於是就很開心地過了

這個搜尋是真的快,極限資料 \(n=8,m=9\) 都能在 \(0.6s\) 內過去,所以就連表都懶得打了,直接暴力就行了

#include#define ll long long

#define db double

#define reg register

using namespace std;

#define dbg1(x) cerr<<#x<<'='<<(x)<<' '

#define dbg2(x) cerr<<#x<<'='<<(x)<<'\n'

#define dbg3(x) cerr<<#x<<'\n'

inline int read()

while(ch>='0'&&ch<='9')

return x*f;

}const int p=1e9+7;

int add(int x,int y)

int mul(int x,int y)

int fp(int x,int y)

int n,m;ll ans=0;

int nm[20],x[20][20],y[20][20];

bool mk[10][10],mp[10][10];

inline void getmk(int now)

void dfs(int now)

{ int i,j,p=nm[now];getmk(now-1);

for(i=0;i<=p;++i)

{ if(i)mp[x[now][i]][y[now][i]]=true;

if((i==0||i==p)||(i>0&&im)swap(n,m);

if(n==1)return 0*printf("%d\n",fp(2,m));

int c=max(0,min(m-n,m-n-1));m-=c;

reg int i,j;

for(i=1;i<=n;++i)nm[i]=i;

for(i=n+1;i

NOIP 2018 提高組 填數遊戲

傳送門 小 d 特別喜歡玩遊戲。這一天,他在玩一款填數遊戲。這個填數遊戲的棋盤是乙個 n m n times m n m 的矩形 玩家需要在 的每個格仔中填入乙個數字 數字 0 00 或者數字 1 11 填數時需要滿足一些限制。下面我們來具體描述這些限制。為了方便描述,我們先給出一些定義 我們用每個...

NOIP 2018 考前須知

day 0day0 day0 來水一發 不要太死板,靈活分配時間,拿到盡量多得分 不失誤就是成功 noip2018 rp 以下by 官方 老師 一.考試進場前。1.早餐一定要吃,不用特別,不要吃得太飽。2.帶手錶一塊 鉛筆或簽字筆一到兩支 三證 學生證 准考證 身份證 二.進場以後 此時離考試開始一...

NOIP2018賽後總結

當我在考場裡看見day1t1時,我當時就懵逼了,這noip出原題?簡直比蒙古海軍奇襲北京計畫示意圖還扯淡。在當我確定這的確是積木大賽,並且沒有一點差別時,我整個人都爽了起來o o 開開心心打完t1,轉眼看到t2,我的表情是這樣的o o 這是什麼題?這道題要考什麼?莫非是像前年一樣的day1t2神仙題...