時間限制:
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的情況,...