by---cxlove
題目:按照某種規律生成乙個序列,選中某段連續的序列玩nim遊戲,先手能必勝的有多少種。
乍一看毫無頭緒啊。序列貌似會形成迴圈,可是數量如此之大。
先按照規則生成序列。儲存前i個堆的異或值,存在nim[i]。
如果想要必勝,是選中連續的數異或不為0,如果存在nim[i]==nim[j]則表示i+1,i+2……j的異或值0,則是一組必敗的局面。
這樣我們便想到從對立而考慮,總共的選擇是n*(n+1)/2。
將nim排序,找出相同 的nim值有多少個,便可以統計出有多少必敗的局面。
同時注意nim[i]為0的話,現在從1----i便是必敗局面,也要減掉。
另外注意int溢位
#include#include#include#include#include#include#include#include#define c 240
#define time 10
#define inf 1<<25
#define ll long long
using namespace std;
int a[100005],nim[100005];
int main()
sort(nim,nim+n);
ll sum=(ll)n*(n+1)/2;
int len=1;
for(int i=1;i}
sum-=(ll)len*(len-1)/2;
printf("%lld\n",sum);
}return 0;
}
3 5 9 列舉型別
有時,變數的取值只在乙個有限的集合內。例如 銷售的服裝或服裝只有小 中 大 和超大的四種尺寸。當然,可以將這些尺寸分別編碼為1 2 3 4或s m l x。但這樣存在著一定的隱患。在變數中很可能儲存的是乙個錯誤的值 如0或m 針對這種情況,可以自定義列舉型別。列舉型別包括有限個命名的值。例如,enu...
大洋蛋 要走了 倒數359
大洋蛋 對不起,因為這個破學校的破網路我前兩天沒上網,沒能寫日誌.大洋蛋,生日快樂!我會記住昨天的,因為你給我機會讓我陪你提前過了個生日。雖然我兩都喝的有點高.真的是酒不醉人,人自醉.但是真的挺開心的。因為讓我陪你過了個生日.下午我也不想讓你等那麼久的。只是想給你個小小的驚喜。那個小兔子我可是找了好...
359 python中的計時器timeit
通常在一段程式的前後都用上time.time 然後進行相減就可以得到一段程式的執行時間,不過python提供了更強大的計時庫 timeit 匯入timeit.timeit from timeit import timeit timeit x 1 看x 1的執行時間,執行1次 number可以省略,預...