程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> BNUOJ34980方(芳)格(哥)取數(好坑)

BNUOJ34980方(芳)格(哥)取數(好坑)

編輯:C++入門知識

BNUOJ34980方(芳)格(哥)取數(好坑)


方(芳)格(哥)取數

3000ms 65536KB 64-bit integer IO format: %lld Java class name: Main Prev Submit Status Statistics Discuss Next Font Size:

師大有三寶,妹子真不少,芳姐or芳哥,認路本領好!

眾所周知,師大的芳哥帶隊本領高強,被眾粉絲尊稱為“地圖”!芳哥對任意時刻,任意地點,任意地形都駕輕就熟,比如校園,密室,KTV,地鐵,機場,山間,田野,丘陵等等等等。

嗯,有一天芳哥帶著小伙伴來到一片丘陵,這片丘陵廣袤無垠,層巒疊嶂,就像一個二維數組的樣子,於是芳哥花了0.2333秒記住了這片土地。

芳姐將這片丘陵分為N*M個區域,然後她記住了每個區域的海拔。厲害吧~而且芳哥發現一個有趣的地方,就是對於同一個緯度,東邊總是比西邊高;對於同一個經度,南邊總是比北邊高。

晚上在芳哥清點人數時發現小胖不見了,趕緊打電話給小胖,小胖也不知道自己現在在哪兒,只知道自己現在所在位置的海拔為K。芳哥太擔心小胖以至於不能思考了,於是判斷小胖是否還在這片丘陵的任務就落到了你的頭上。值得欣慰的是,芳姐最多還能回答你N+M次詢問,你可以詢問她X,Y這個坐標的海拔是多少。如果你發現某個位置的海拔恰好等於小胖所在的海拔,那麼你就認為小胖還在這片丘陵。

如果你發現小胖還在這片丘陵,輸出YES,否則輸出NO。如果你沒在限定的次數內判斷出來,芳哥讓我給你一個WA。

Input

首先是一個整數T(T<=50),表示數據組數。

每組數據首先是三個整數N, M(1 <= N, M <= 1000), K(int范圍),表示矩陣行數、列數和小胖所在的海拔。

然後對於你的程序的每個詢問,結果也會作為輸入返回,保證詢問結果都在int內。

Output

在確定答案之前,每行輸出一個詢問,為兩個整數X,Y,用空格隔開,表示詢問A[X][Y]這個數是多少。

當你的程序能夠判斷結果時,按照題意輸出一行結果 “YES” 或 “NO”(引號作為強調),如果答案正確將直接進入下一組數據,否則本次提交結果為WA。

注意不合法的詢問或判斷將直接導致WA、RE或TLE。

Hint

比如這片丘陵是這個樣子的:

大小為4 x 3

1 9 99

2 19 100

30 300 3000

99 999 9999

如果小胖告訴你他所在的海拔為300。一種可能判斷過程如下:

詢問1 2

芳哥告訴你9

詢問4 3

芳哥告訴你9999

詢問3 2

芳哥告訴你300

這時你可以判斷小胖還在這片丘陵上。輸出YES即可。

注意:二維數組的下標從1開始。

===============================

特別鳴謝Liserious贊助題目名。

===============================

特別注意:

對於C/C++選手,請在每個輸出後加上fflush(stdout);

對於JAVA選手,請在每個輸出後加上System.out.flush();

對於Python選手,請在每個輸出後加上sys.stdout.flush()。需要import sys。

對於Pascal選手,請在每個輸出後加上Flush(StdOut),或者使用writeln()來輸出。

Source

第十二屆北京師范大學程序設計競賽決賽

Author

zhaoli
#include
#include
int n,m,k,t,nm,x,y,flag,a;
int main()
{
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d%d",&n,&m,&k);
        nm=n+m; flag=0;
        x=1,y=m;//這樣一定可以判斷k是否在裡面
        while(nm)
        {
            nm--;
            printf("%d %d\n",x,y);fflush(stdout);
            scanf("%d",&a);
            if(a==k)
            {
                printf("YES\n");flag=1;fflush(stdout);
                break;
            }
            if(a>k)y--;
            else x++;
            if(x>n||y<=0)break;
        }
        if(flag==0)printf("NO\n"),fflush(stdout);
    }
}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved