hiho 挑戰賽10 01串 找規律決策

2021-07-01 18:20:48 字數 1332 閱讀 7627

時間限制:

7000ms

單點時限:

1000ms

記憶體限制:

256mb

給定兩個整數n和m,求是否存在恰好包含n個0和m個1的01串s,使得s中不存在子串"001"和"11"。

如果存在符合條件的01串則輸出字典序最小的s,否則輸出no。

一行兩個整數,表示n和m。(0<=n,m<=100000,0一行乙個字串,為字典序最小的s或者no。

樣例輸入

2 3

樣例輸出

10101

本題的關鍵在找規律

顯然一旦出現 』00『 後面不能有1

不能出現'11' 那麼1 必然單個出現

那麼相鄰的1之間有多少個0?

然後具體試試就胡亂貪出來了

#include#include#include#include#include#include#include#include#includeusing namespace std;

#define for(i,n) for(int i=1;i<=n;i++)

#define fork(i,k,n) for(int i=k;i<=n;i++)

#define rep(i,n) for(int i=0;i=0;i--)

#define forp(x) for(int p=pre[x];p;p=next[p])

#define forpiter(x) for(int &p=iter[x];p;p=next[p])

#define lson (x<<1)

#define rson ((x<<1)+1)

#define mem(a) memset(a,0,sizeof(a));

#define memi(a) memset(a,127,sizeof(a));

#define memi(a) memset(a,128,sizeof(a));

#define inf (2139062143)

#define f (100000007)

#define maxn (200000+10)

typedef long long ll;

ll mul(ll a,ll b)

ll add(ll a,ll b)

ll sub(ll a,ll b)

void upd(ll &a,ll b)

int n,m,a[maxn];

int main()

else if (a[i-1]==0 && m )

else

if (n<0||m<0)

{ cout<<"no"<

Wannafly挑戰賽5 B 數學規律

題目描述 這個比賽,歸根結底就是控制乙個虛擬的小拖拉機跑完整個賽道。一般一場比賽會有 9 個到 13 個賽道,最後看能跑完多少個賽道。通常在一場可程式設計拖拉機比賽中,分別會有實際參賽隊伍數 10 20 30 向下取整的隊伍獲得金 銀 銅牌,其餘隊伍獲得榮譽提名,俗稱 鐵牌 但是主辦方往往會多準備一...

百度之星資格賽1001 找規律 大搬家

problem description 近期b廠組織了一次大搬家,所有人都要按照指示換到指定的座位上。指示的內容是坐在位置i 上的人要搬到位置j 上。現在b廠有n 個人,一對一到n 個位置上。搬家之後也是一一對應的,改變的只有位次。雖然我們都知道度度熊的 機智 常常令人堪憂,但是不可思議的是,這回真...

Wannafly挑戰賽12 C刪除子串

鏈結 思路 a,b陣列存放到達變化數j所需要的最大長度,對於每次能夠到達的變化數j,一定是由b j 1 或a j 的狀態到達,加上當前字元的長度1,同理b陣列也有相應的達到過程。a j max a j 1,b j 1 1 b j max b j 1,a j 1 1 但是如何確實首字母一定是a的情況,...