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

方(芳)格(哥)取数

Time Limit: 3000ms

Memory Limit: 65536KB

64-bit integer IO format: %lld      Java class name: Main

Prev Submit Status Statistics Discuss Next

Font Size: 
+
 
-

Type:  
None Graph Theory 
    2-SAT     Articulation/Bridge/Biconnected Component
     Cycles/Topological Sorting/Strongly Connected Component
     Shortest Path 
        Bellman Ford         Dijkstra/Floyd Warshall
     Euler Trail/Circuit
     Heavy-Light Decomposition
     Minimum Spanning Tree
     Stable Marriage Problem
     Trees 
    Directed Minimum Spanning Tree 
    Flow/Matching         Graph Matching
             Bipartite Matching
             Hopcroft–Karp Bipartite Matching
             Weighted Bipartite Matching/Hungarian Algorithm
         Flow 
            Max Flow/Min Cut 
            Min Cost Max Flow 
DFS-like     Backtracking with Pruning/Branch and Bound
     Basic Recursion 
    IDA* Search     Parsing/Grammar
     Breadth First Search/Depth First Search
     Advanced Search Techniques
         Binary Search/Bisection
         Ternary Search
 Geometry 
    Basic Geometry     Computational Geometry
     Convex Hull 
    Pick‘s Theorem Game Theory
     Green Hackenbush/Colon Principle/Fusion Principle
     Nim 
    Sprague-Grundy Number 
Matrix     Gaussian Elimination
     Matrix Exponentiation
 Data Structures 
    Basic Data Structures 
    Binary Indexed Tree 
    Binary Search Tree 
    Hashing     Orthogonal Range Search
     Range Minimum Query/Lowest Common Ancestor
     Segment Tree/Interval Tree
     Trie Tree 
    Sorting     Disjoint Set
 String 
    Aho Corasick     Knuth-Morris-Pratt
     Suffix Array/Suffix Tree
 Math 
    Basic Math     Big Integer Arithmetic
     Number Theory 
        Chinese Remainder Theorem 
        Extended Euclid 
        Inclusion/Exclusion 
        Modular Arithmetic 
    Combinatorics         Group Theory/Burnside‘s lemma
         Counting 
    Probability/Expected Value 
Others     Tricky 
    Hardest     Unusual
     Brute Force 
    Implementation     Constructive Algorithms
     Two Pointer 
    Bitmask     Beginner
     Discrete Logarithm/Shank‘s Baby-step Giant-step Algorithm
     Greedy 
    Divide and Conquer 
Dynamic Programming

Tag it!

师大有三宝,妹子真不少,芳姐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<stdio.h>
#include<stdlib.h>
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);
    }
}
时间: 2024-08-02 19:12:01

BNUOJ34980方(芳)格(哥)取数(好坑)的相关文章

wioi 1043--方格取数

题目描述: 设有N*N的方格图(N<=10,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0.如下图所示(见样例): 某人从图的左上角的A 点出发,可以向下行走,也可以向右走,直到到达右下角的B点.在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0). 此人从A点到B 点共走两次,试找出2条这样的路径,使得取得的数之和为最大. 思路: (1)dp,4维,dp[i1,j1,i2,j2]表示两条路分别走到(i1,j1)点和(i2,j2)点时取到的最大值 1 #include<

hdu1569-方格取数-二分图网络流

方格取数(2) Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7211    Accepted Submission(s): 2311 Problem Description 给你一个m*n的格子的棋盘,每个格子里面有一个非负数.从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取数所在的2个格子不能相邻,并且取出的数的

HDU 1569 - 方格取数(2) - [最大点权独立集与最小点权覆盖集]

嗯,这是关于最大点权独立集与最小点权覆盖集的姿势,很简单对吧,然后开始看题. HDU1569: Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Description 给你一个m*n的格子的棋盘,每个格子里面有一个非负数.从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取数所在的2个格子不能相邻,并且取出的数的和最大. Input 包括多个测试实例,

NOIp模拟3 取数游戏

试题描述 有一个取数的游戏.初始时,给出一个环,环上的每条边上都有一个非负整数.这些整数中至少有一个0.然后,将一枚硬币放在环上的一个节点上.两个玩家就是以这个放硬币的节点为起点开始这个游戏,两人轮流取数,取数的规则如下: (1)选择硬币左边或者右边的一条边,并且边上的数非0: (2)将这条边上的数减至任意一个非负整数(至少要有所减小): (3)将硬币移至边的另一端. 如果轮到一个玩家走,这时硬币左右两边的边上的数值都是0,那么这个玩家就输了.如下图,描述的是Alice和Bob两人的对弈过程,其

网络流24题-方格取数

题目 方格中取数若干,两两不相邻,求最大选数和. 样例: 3 3 1 2 3 3 2 3 2 3 1 输出: 11 ans=2+3+3+3=11 黑白染色 建成二分图: 中间这些边连成INF(即不限制流量) 其实就是求最大独立集 定理:|二分图最大独立集|=|顶点数|-|二分图最大匹配数| 这个,我不会证明. 所以:|二分图最大独立集|=|总价值|-|二分图最大匹配价值| 考虑构图:s=>黑点=>白点=>t 首先,对与第[i][j]格,有价值为val[i][j] edge(s,黑点,va

[CH Round #61] 取数游戏

描述 SJY和CYF在玩一个取数游戏.他们将1~n分别写在n张纸上,随机排成一排,约定SJY先取,只能取走最边上的两张纸之一,然后CYF取:以此循环下去,取到1的人获胜.假设SJY和CYF足够聪明,求SJY获胜的概率. 输入 一个整数n 输出 SJY获胜的概率,保留最简分数形式(若为1,则输出1/1:若为0,则输出0/1). 样例 样例输入1 2 样例输出1 1/1 样例输入2 3 样例输出2 2/3 数据范围与约定 40%的数据,0<n≤7. 70%的数据,0<n≤1000. 100%的数据

P1288 取数游戏II

题目描述 有一个取数的游戏.初始时,给出一个环,环上的每条边上都有一个非负整数.这些整数中至少有一个0.然后,将一枚硬币放在环上的一个节点上.两个玩家就是以这个放硬币的节点为起点开始这个游戏,两人轮流取数,取数的规则如下: (1)选择硬币左边或者右边的一条边,并且边上的数非0: (2)将这条边上的数减至任意一个非负整数(至少要有所减小): (3)将硬币移至边的另一端. 如果轮到一个玩家走,这时硬币左右两边的边上的数值都是0,那么这个玩家就输了. 如下图,描述的是Alice和Bob两人的对弈过程,

洛谷 P2774 方格取数问题

题目背景 none! 题目描述 在一个有 m*n 个方格的棋盘中,每个方格中有一个正整数.现要从方格中取数,使任意 2 个数所在方格没有公共边,且取出的数的总和最大.试设计一个满足要求的取数算法.对于给定的方格棋盘,按照取数要求编程找出总和最大的数. 输入输出格式 输入格式: 第 1 行有 2 个正整数 m 和 n,分别表示棋盘的行数和列数.接下来的 m 行,每行有 n 个正整数,表示棋盘方格中的数. 输出格式: 程序运行结束时,将取数的最大总和输出 输入输出样例 输入样例#1: 3 3 1 2

【贪心】取数游戏

问题 N: [贪心]取数游戏 时间限制: 1 Sec  内存限制: 64 MB提交: 51  解决: 31[提交][状态][讨论版] 题目描述 给出2n(n≤100)个自然数(小于等于30000).将这2n个自然数排成一列,游戏双方A和B从中取数,只允许从两端取数.A先取,然后双方轮流取数.取完时,谁取得数字总和最大为取胜方:若双方和相等,属B胜.试问A方是否有必胜策略? 输入 共2行,第1行一个整数n:第2行有2*n个自然数. 输出 只有1行,若A有必胜策略,则输出“YES”,否则输出“NO”