牛牛的DRB迷宮II 構造

2021-10-02 16:09:24 字數 1343 閱讀 8525

face

首先看1e9

<230

1e9 < 2^

1e9<23

0, 想到二進位制拆分構造乙個橫座標為30的矩陣, 對角線是2的k次方的方案數, 如果n在二進位制表示的第i位上是1, 就要貢獻到答案裡:

#include

#include

using

namespace std;

#define _rep(n, a, b) for (ll n = (a); n <= (b); ++n)

#define _rev(n, a, b) for (ll n = (a); n >= (b); --n)

#define _for(n, a, b) for (ll n = (a); n < (b); ++n)

#define _rof(n, a, b) for (ll n = (a); n > (b); --n)

#define oo 0x3f3f3f3f3f3f

#define ll long long

#define db double

#define eps 1e-8

#define bin(x) cout << bitset<10>(x) << endl;

#define what_is(x) cerr << #x << " is " << x << endl

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

#define all(x) x.begin(), x.end()

#define pii pair

#define pdd pair

const ll mod =

1e9+7;

const ll maxn =

100;

char mat[35]

[35];

signed

main()

_rep

(i,2,32

) mat[i]

[i -2]

=((val >>

(i -2)

)&1)

?'b'

:'r'

;_rep

(j, i-1,

min(i, m)

)_rep

(j, i +

1, m)

} cout << n +

1<<

" "<< m+

1<< endl;

_rep

(i,1

, n)

_rep

(i,1,31

)}

牛客寒假訓練營3 A 牛牛的DRB迷宮I

題目描述 牛牛有乙個n m的迷宮,對於迷宮中的每個格仔都為 r d b 三種型別之一,r 表示處於當前的格仔時只能往右邊走 d 表示處於當前的格仔時只能往下邊走,而 b 表示向右向下均可以走。我們認為迷宮最左上角的座標為 1,1 迷宮右下角的座標為 n,m 除了每個格仔有向右移動以及向下移動的限制之...

基於建立型模式的「迷宮」構造

本文在gof 設計模式 一書 建立型模式 一章的例子和模式的基礎上,將各個建立型模式有機的結合在一起。實現了 迷宮 構造過程的封裝,增強了構造不同迷宮的可擴充套件性。建立型模式 抽象工廠 工廠方法 生成器原型 單件其中,抽象工廠是由工廠方法組成的,是一組相互關聯的工廠方法的集合。迷宮 構造類圖 以下...

lintcode 439 線段樹的構造 II

線段樹是一棵二叉樹,他的每個節點包含了兩個額外的屬性start和end用於表示該節點所代表的區間。start和end都是整數,並按照如下的方式賦值 對於給定陣列設計乙個build方法,構造出線段樹 說明wiki segment tree interval tree 樣例給出 3,2,1,4 線段樹將...