/*
解題思路:
因為只有 0 和 1 ,我們可以發現 1 只要過一次就可以了,但是 0 需要過兩次,需要過兩次肯定就需要邊上 的來幫助。
1、比如1 0 0,num[0] = 1,走過去就不用管了,當走到num[1]=0;時會把num[1]=1;,我們需要 num[2]=0;的幫助 ,通過 num[2]=0;我們可以把num[1]=0;這是後num[2]=1;顯然num[2]=1;時最後乙個,沒有人可以幫助他,所以失敗。
2、比如1 0 0 0比上面多乙個 0 ,也就是num[3]=0; 這時候num[3]可以幫助nun[2],而且是可以成功的
3、比如1 0 0 1比上面多乙個 1 ,也就是num[3]=1; 這時候num[3]可以幫助num[2],但是num[3],自己有需要幫忙,最終失敗
不難看出,我們可以把這一串分成幾部分來處理,如1 0 1 0 1 1 0 1 0
劃分標準就是到目前為止,都可以關燈,下乙個是 0 出現時,前面就是一部分,關燈方法就是上面所講的
第一部分 1
第二部分 0 1 0 1 1
第三部分0 1 0
表達能力有限,多包涵*/
#include
#include
#include
#define max 1000005
using namespace std;
int num[max];
int main()
if (num[i]==1) continue ;
else}}
}if (p==1) printf("yes\n");
else printf("no\n");
}return 0;
}
杭電ACM 6463(思維)
突破口 乙個很大的數,假設是20位,其每個數字的平方的和不超過2000,因此只要將2000以內的鴿子數找出來,打表就可以。如下 include includeusing namespace std long long ge 150005 long long yes 2001 yes記錄2000以內的...
杭電2048 杭電2049錯排公式
這兩題只要知道錯排公式就可以ac了。題目杭電2048 和 杭電2049 錯排公式的說明在這裡 m n n 1 m n 2 m n 1 這個就是遞推公式。杭電2048只有有乙個這個公式就可以了,2049還不夠,還要有用組合數學。杭電2048的 include includeusing namespac...
杭電ACM 6491,時間間隔(思維)
對100取模很特別。一天有86400秒,一小時有3600秒,對100取模,都等於0,因此其實我們只需關注所給時間的分與秒即可,前面的年月份小時全都可以不考慮。如下 include include include includeusing namespace std char s1 50 s2 50 ...