1. 程式人生 > >NYOJ-取石子(一)

NYOJ-取石子(一)

取石子(一)
時間限制:3000 ms | 記憶體限制:65535 KB
難度:2
描述
一天,TT在寢室閒著無聊,和同寢的人玩起了取石子游戲,而由於條件有限,他/她們是用旺仔小饅頭當作石子。遊戲的規則是這樣的。設有一堆石子,數量為N(1<=N<=1000000),兩個人輪番取出其中的若干個,每次最多取M個(1<=M<=1000000),最先把石子取完者勝利。我們知道,TT和他/她的室友都十分的聰明,那麼如果是TT先取,他/她會取得遊戲的勝利麼?
輸入
第一行是一個正整數n表示有n組測試資料
輸入有不到1000組資料,每組資料一行,有兩個數N和M,之間用空格分隔。
輸出
對於每組資料,輸出一行。如果先取的TT可以贏得遊戲,則輸出“Win”,否則輸出“Lose”(引號不用輸出)
樣例輸入

2
1000 1
1 100

樣例輸出

Lose
Win

AC//巴什博弈

#include <stdio.h>
int main()
{
    int n,N,M;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%d%d",&N,&M);
        if(N%(M+1)==0)
        {
            printf("Lose\n");//總是留下(M+1)的倍數個會輸 
        }
        else
        {
            printf
("Win\n"); } } return 0; }

巴什博弈:巴什博弈:只有一堆n個物品,兩個人輪流從這堆物品中取物, 規定每次至少取一個,最多取m個。最後取光者得勝。
顯然,如果n=m+1,那麼由於一次最多隻能取m個,所以,無論先取者拿走多少個,後取者都能夠一次拿走剩餘的物品,後者取勝。因此我們發現瞭如何取勝的法則:如果n=(m+1)r+s,(r為任意自然數,s≤m),那麼先取者要拿走s個物品,如果後取者拿走k(≤m)個,那麼先取者再拿走m+1-k個,結果剩下(m+1)(r-1)個,以後保持這樣的取法,那麼先取者肯定獲勝。總之,要保持給對手留下(m+1)的倍數,就能最後獲勝。

而這個問題是首先取光者獲勝,不難看出,只要將物品剩餘個數一直保持在(m+1)的倍數個時第一個取東西的人獲勝。
因此判斷條件是?n%(m+1)==0

相關推薦

NYOJ-石子

取石子(一) 時間限制:3000 ms | 記憶體限制:65535 KB 難度:2 描述 一天,TT在寢室閒著無聊,和同寢的人玩起了取石子游戲,而由於條件有限,他/她們是用旺仔小饅頭當作石子。遊戲的規則是這樣的。設有一堆石子,數量為N(1<=N

nyoj 23-石子(博弈)

panel -c 遊戲 tdi print 個數 btn 最小值 accept 23-取石子(一) 內存限制:64MB 時間限制:3000ms Special Judge: No

石子NYOJ 833

取石子(七) 時間限制:1000 ms  |  記憶體限制:65535 KB 難度:1 描述 Yougth和Hrdv玩一個遊戲,拿出n個石子擺成一圈,Yougth和Hrdv分別從其中取石子,誰先取完者勝,每次可以從中取一個或者相鄰兩個,Hrdv先取,輸出勝利著

牛牛快遞從dfs到dijkstra以及堆優化的dijkstra

並不是 rim 鄰接表 != 性能 AD [] 鄰接矩陣 不同 由於上一篇博客的第三題“牛牛取快遞”上次還未ac,因此今天特意再來嘗試一下,上次使用暴力dfs搜索最短路徑超時的我,在大佬們解題思路的“熏陶”之下,終於在我的記憶深處找回了那被封印依舊的dijkstra算法。

BZOJ5435: 石子博弈佔位

5435: 取石子 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 35  Solved: 10[Submit][Status][Discuss] Descriptio

nyoj 整數劃分

先來談談寫這兩道題的感受,整數劃分(一)剛開始做這道題,dp和遞迴都不會寫,是用深搜寫的,不過用深搜寫 整數劃分(二)就不行了,鐵定超時。 昨晚和今晚終於把這兩道題的遞迴和dp全看懂了(看別人部

easyui.utils.js 自己封裝的 使用easyui過程中方便操作和

注意:該easyui.utils.js  會在我自己使用過程中不斷完善,大家一起進步。 在js上新增 以下 (function($){   function  其他方法。 })(jQuery); 的目的是為了防止該js檔案中的function與瀏覽器本身的一些functi

【NOI2015模擬9.9】石子博弈

The Solution 個人覺得這種題要不就切掉要不就爆0了,所以我們要大膽地猜結論,然後去證明。(這也是一種思路吧) 因為一次只能取走一顆石子,因此對於所有石子,我們能進行的操作總數就是 s = 石子總數 + 石子堆數 - 1 . 我們可以感

計蒜客OJ:程式設計:石子博弈論

蒜頭君和花椰妹今天都很無聊。兩個人相約一起玩遊戲。蒜頭君取出了一堆奇形怪狀的石子,並且把它分成了三堆。他和花椰妹輪流從裡面取石子,取出最後一顆石子的人勝利。花椰妹覺得這樣沒意思,於是她要求加入一個限制條件:每個人每次只能取出 1,3,71,3,7 或 99 顆石子。石子數目不夠的時候不能多取,如還剩 22 顆

nyoj 737 石子合併

#include<string.h> #include<stdio.h> #include<algorithm> using namespace std; #define INF 0x3fffffff int a[205],dp[205][205],sum[205]; in

nyoj 737 石子合併 【區間dp】

石子合併(一) 時間限制:1000 ms  |  記憶體限制:65535 KB 難度:3 描述    有N堆石子排成一排,每堆石子有一定的數量。現要將N堆石子併成為一堆。合併的過程只能每次

nyoj 737 石子合併 區間動規

描述    有N堆石子排成一排,每堆石子有一定的數量。現要將N堆石子併成為一堆。合併的過程只能每次將相鄰的兩堆石子堆成一堆,每次合併花費的代價為這兩堆石子的和,經過N-1次合併後成為一堆。求出總的代

NYOJ 石子合併經典區間DP

石子合併(一) 時間限制:1000 ms  |  記憶體限制:65535 KB 難度:3 描述    有N堆石子排成一排,每堆石子有一定的數量。現要將N堆石子併成為一堆。合併的過程只能每次將相鄰的兩堆石子堆成一堆,每次合併花費的代價為這兩堆石子的和,經過N-1次

NYOJ 737 石子合併(區間dp)

石子合併(一) 時間限制:1000 ms  |  記憶體限制:65535 KB 難度:3 描述    有N堆石子排成一排,每堆石子有一定的數量。現要將N堆石子併成為一堆。合併的過程只能每次將相鄰的兩堆石子堆成一堆,每次合併花費的代價為這兩堆石子的和,經過N-1次合

NYOJ 737 石子合併環形

描述     有N堆石子排成一排,每堆石子有一定的數量。現要將N堆石子併成為一堆。合併的過程只能每次將相鄰的兩堆石子堆成一堆,每次合併花費的代價為這兩堆石子的和,經過N-1次合併後成為一堆。求出總的代價最小值。 輸入有多組測試資料,輸入到檔案結束。 每組測試資料

NYOJ題目737石子合併區間dp

石子合併(一) 時間限制:1000 ms  |  記憶體限制:65535 KB 難度:3 描述    有N堆石子排成一排,每堆石子有一定的數量。現要將N堆石子併成為一堆。合併的過程只能每次將

nyoj 82迷宮尋寶

ret 接下來 set class 但是 ios char pre 移動 迷宮尋寶(一) 時間限制:1000 ms | 內存限制:65535 KB 難度:4 描述 一個叫ACM的尋寶者找到了一個藏寶圖,它根據藏寶圖找到了一個迷宮,這是一個很特別的迷宮,迷宮裏有N個編過號

用VLC讀取攝像頭產生RTSP流,DSS主動流轉發

sdp nco con alt 分享 pad 流轉 publish enc 用VLC讀取攝像頭產生RTSP流,DSS主動取流轉發(一) 攝像機地址是192.1.101.51,VLC運行在192.1.101.77上,DSS服務器架設在192.1.101.

Python爬蟲實例百度貼吧帖子中的圖片

選擇 圖片查看 負責 targe mpat wid agent html headers 程序功能說明:爬取百度貼吧帖子中的圖片,用戶輸入貼吧名稱和要爬取的起始和終止頁數即可進行爬取。 思路分析: 一、指定貼吧url的獲取 例如我們進入秦時明月吧,提取並分析其有效url如下

python 爬蟲 requests+BeautifulSoup 爬簡單網頁代碼示例

utf-8 bs4 rom 文章 都是 Coding man header 文本 以前搞偷偷摸摸的事,不對,是搞爬蟲都是用urllib,不過真的是很麻煩,下面就使用requests + BeautifulSoup 爬爬簡單的網頁。 詳細介紹都在代碼中註釋了,大家可以參閱。