problem description
對於四川同胞遭受的災難,全國人民紛紛伸出援助之手,幾乎每個省市都派出了大量的救援人員,這其中包括搶險救災的武警部隊,**和防疫的醫護人員,以及進行心理疏導的心理學專家。根據要求,我校也有乙個奔赴災區救災的名額,由於廣大師生報名踴躍,學校不得不進行選拔來決定最後的人選。經過多輪的考核,形勢逐漸明朗,最後的名額將在「林隊」和「徐隊」之間產生。但是很巧合,2個人的簡歷幾乎一模一樣,這讓主持選拔的8600很是為難。無奈,他決定通過捐款來決定兩人誰能入選。
選拔規則如下:
1、最初的捐款箱是空的;
2、兩人輪流捐款,每次捐款額必須為正整數,並且每人每次捐款最多不超過m元(1<=m<=10)。
3、最先使得總捐款額達到或者超過n元(0< n< 10000)的一方為勝者,則其可以親赴災區服務。
我們知道,兩人都很想入選志願者名單,並且都是非常聰明的人,假設林隊先捐,請你判斷誰能入選最後的名單?
input
輸入資料首先包含乙個正整數c,表示包含c組測試用例,然後是c行資料,每行包含兩個正整數n,m,n和m的含義參見上面提到的規則。
output
對於每組測試資料,如果林隊能入選,請輸出字串」grass」, 如果徐隊能入選,請輸出字串」rabbit」,每個例項的輸出佔一行。
sample input
2 8 10
11 10
sample output
grass
rabbit
【題目鏈結】:
【題解】
每次只要給對手留m+1的整數倍的空間,就一定能贏;
比如只剩m+1個;
則對手不論選1..m中的哪乙個數字,我們都能最後用一次的機會,把剩下的空間填滿;
而對手無論一次填多少的空間;我們也總能選擇1..m中的某乙個數字;讓剩餘的空間是m+1的整數倍;
【完整**】
#include
using
namespace
std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define ll long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define rei(x) scanf("%d",&x)
#define rel(x) scanf("%i64d",&x)
typedef pair pii;
typedef pairpll;
//const int maxn = x;
const
int dx[9] = ;
const
int dy[9] = ;
const
double pi = acos(-1.0);
int main()
return
0;}
FZUOJ 1894 志願者選拔
fzuoj 1894 志願者選拔 從乙個數字序列中不斷的求當前序列的最大值。採用單調佇列。維護乙個單調遞減的佇列,注意刪除的時候,比較當前的最大元素即當前的佇列頭的位置,如果這個位置大於要刪除的位置,則不需要移動,否則就將隊首指標移動。程式如下 id csuchenan prog fzuoj 189...
FZU1894 志願者選拔
世博會馬上就要開幕了,福州大學組織了一次志願者選拔活動。參加志願者選拔的同學們排隊接受面試官們的面試。參加面試的同學們按照先來先面試並且先結束的原則接受面試官們的考查。面試中每個人的人品是主要考查物件之一。提高人品的方法有扶老奶奶過街,不闖紅燈等 作為主面試官的john想知道當前正在接受面試的同學隊...
FZJ 1894 志願者選拔 單調佇列
思路 單調佇列。維護乙個從變動的起點到當前為區間的最大值。這裡的離隊操作只需要判斷需要離隊的人是否在單調佇列中即可。include include include include include include include include define ll long long define i...