简单问题

时间限制:1000 ms  |  内存限制:65535 KB
难度:2
 
描述
给你一个n*m的矩阵,其中的元素每一行从左到右按递增顺序排序,每一列从上到下按递增顺序排序,然后给你一些数x,问这些书在不在这个矩阵中,若在,输出其列号最大的元素坐标。
 
输入
多组测试样例,首先两个数n,m(0<n,m<=1000)
然后n行m列的一个矩阵,其中的元素保证在32位整型范围
然后一个数cnt,表示询问数的个数(0<cnt<=100)
然后是cnt个要询问的元素
输出
如果存在,输出其列号最大的元素坐标
否则,输出“NO”
样例输入
  1. 4 4
  2. 1 2 8 9
  3. 2 4 9 12
  4. 4 7 10 13
  5. 6 8 11 15
  6. 3
  7. 7 8 14
样例输出
  1. 3 2
  2. 1 3
  3. NO
  4.  
  5. 解题思路:虽然用二分可以处理,但是用On+m)的复杂度过。由于矩阵是有特殊关系的。从每行左向右递增,每列从上向下递增。于是从第一行最右端起,如果元素大于要找的值,则往左移动,因为该列下边的值都比该元素,如果该元素小于要找的值,则向下移动,继续按照上边的方法判断,如果要找的位置不在矩阵内了,说明没有元素在矩阵中,否则输出位置即可。
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int a[2000][2000];
  4. int main(){
  5. int n,m,q,aim,x,y;
  6. while(scanf("%d%d",&n,&m)!=EOF){
  7. for(int i=0;i<n;i++){
  8. for(int j=0;j<m;j++)
  9. scanf("%d",&a[i][j]);
  10. }
  11. scanf("%d",&q);
  12. for(int j=0;j<q;j++){
  13. scanf("%d",&aim);
  14. int y=m-1,x=0;
  15. bool flag=0;
  16. while(true){
  17. if(a[x][y]>aim){
  18. y--;
  19. if(y<0){
  20. flag=1;
  21. break;
  22. }
  23. }else if(a[x][y]<aim){
  24. x++;
  25. if(x>=n){
  26. flag=1;
  27. break;
  28. }
  29. }else{ break;}
  30. }
  31. if(flag){
  32. printf("NO\n");
  33. }else{
  34. printf("%d %d\n",x+1,y+1);
  35. }
  36. }
  37. }
  38. return 0;
  39. }

  

nyoj 1205——简单问题——————【技巧题】的更多相关文章

  1. 简单的算法题, Find Minimum in Rotated Sorted Array 的Python实现。

    简单的算法题, Find Minimum in Rotated Sorted Array 的Python实现. 题目: Suppose a sorted array is rotated at som ...

  2. Linux学习之常用网络通信命令与shell简单应用技巧(四)

    (一)常用网络通信命令 (1)ping命令 (2)write命令 (3)wall命令 (4)ifconfig命令 (5)shutdown命令 (6)reboot命令 (二)shell简单应用技巧 (1 ...

  3. QDUOJ 一道简单的数据结构题 栈的使用(括号配对)

    一道简单的数据结构题 发布时间: 2017年6月3日 18:46   最后更新: 2017年6月3日 18:51   时间限制: 1000ms   内存限制: 128M 描述 如果插入“+”和“1”到 ...

  4. 实验吧之【简单的登录题(】CBC字节反转攻击)

    开始刷ctf题吧  慢慢来. 实验吧---简单的登录题 题目地址:http://ctf5.shiyanbar.com/web/jiandan/index.php 随便提交一个id,看到后台set了两个 ...

  5. 简单的leetcode题

    简单的leetcode题 环绕字符串中唯一的子字符串 把字符串 s 看作是\("abcdefghijklmnopqrstuvwxyz"\)的无限环绕字符串,所以 s 看起来是这样的 ...

  6. CTF实验吧-WEB题目解题笔记(1)简单的登陆题

    1.简单的登陆题 解题链接: http://ctf5.shiyanbar.com/web/jiandan/index.php  Burp抓包解密 乱码,更换思路.尝试id intruder 似乎也没什 ...

  7. NYOJ 821 简单求值【简单题】

    /* 解题人:lingnichong 解题时间:2014.10.18   00:46 解题体会:简单题 */ 简单求值 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描写叙述 ...

  8. 键盘快速启动工具Launchy的简单使用技巧

    打开电脑面对林林总总的图标,找到对应的程序,快速启动显得尤为重要.这样有利于提高我们的效率. 好了,直接上图: 就是这款小巧的工具,界面如上. 接下来介绍这款工具的使用技巧. 1.安装成功后:打开工具 ...

  9. 2019年华南理工校赛(春季赛)--I--炒股(简单思维水题)

    水题,想想就过了 题目如下: 链接:https://ac.nowcoder.com/acm/contest/625/I来源:牛客网 攒机一时爽,一直攒机一直爽. 沉迷攒机的胡老师很快就发现,他每天只能 ...

随机推荐

  1. 如何从Spring官网下载Spring的jar包

    Spring官网:https://spring.io/ 进入官网点击PRODECTS 然后点击Spring Framework 进入下面的页面点击小猫图标: 之后再下面的页面持续向下滚动,找到下图我标 ...

  2. 可变大小、颜色边框、样式的UISwitch

    1.CHSwitch.h // // 文 件 名:CHSwitch.h // // 版权所有:Copyright © 2018 lelight. All rights reserved. // 创 建 ...

  3. Java代码生成16位纯数字的订单号

    //生成16位唯一性的订单号 public static void getUUID(){ //随机生成一位整数 int random = (int) (Math.random()*9+1); Stri ...

  4. 5w5:第五周程序填空题1

    描述 写一个MyString 类,使得下面程序的输出结果是: 1. abcd-efgh-abcd- 2. abcd- 3. 4. abcd-efgh- 5. efgh- 6. c 7. abcd- 8 ...

  5. 关于C语言中printf函数“输出歧视”的问题

    目录 关于C语言中printf函数"输出歧视"的问题 问题描述 探索问题原因 另一种研究方法 问题结论 关于C语言中printf函数"输出歧视"的问题 问题描述 ...

  6. PEP 8 – Style Guide for Python Code

    原文:PEP 8 – Style Guide for Python Code PEP:8 题目:Python代码风格指南 作者:Guido van Rossum, www.yszx11.cnBarry ...

  7. 【MySQL】20个经典面试题

    转自:https://blog.csdn.net/suifenglie/article/details/78919045 Part1:经典题目 1.MySQL的复制原理以及流程 基本原理流程,3个线程 ...

  8. python安装环境配置、python模块添加、sublime text编辑器配置

    前提: 本文讲述的是  windows环境 python相应的安装配置. 进入官网找安装包,官网地址如下:https://www.python.org/downloads/ 找到相应2.7.x或3.x ...

  9. 【原创】SpringMVC同一RequestMapping返回不同的类型

    曾经在工作中遇到过导出文件时,需要根据不同情况返回不同的数据的情况. 例如: 如果没有数据,弹框提示"没有数据" 导出报错,弹框提示"系统错误" 正常情况下,下 ...

  10. hdu6437 Videos 费用流

    题目传送门 题目大意: 给出n,每天有n个小时.有m种电影,每个电影有开始时间和结束时间,和01两种种类,k个人,每一部电影只能被一个人看,会获得一个快乐值wi,如果一个人连续看两部相同种类的电影,快 ...