UVa - 1592 Database(STL,优化)
给一个n行m列的数据库表格,问有没有两个行 r1,r2 和 c1,c2,满足(r1,r2)的元素=(c1,c2)的元素。
n≤10000,m≤10。
直接枚举4个肯定会T的。可以只枚举c1 c2,然后枚举每一行,将c1 c2加入map里,下面再次枚举到就证明有。
pair是个很好用的东西。
#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
#include <map>
using namespace std; #define maxn 10000 + 100 int main()
{
int n, m;
while(scanf("%d%d", &n, &m) != EOF)
{
getchar();
vector<string> a[maxn];
string s;
for (int i = 1; i <= n; i++)
{
getline(cin, s);
int len = s.size();
string k = ""; for (int j = 0; j < len; j++)
if (s[j] == ',')
{
a[i].push_back(k);
k = "";
}
else k += s[j]; a[i].push_back(k);
} int canfind = 0;
int r1, r2, c1, c2; for (int k = 0; k < m; k++)
for (int j = k+1; j < m; j++)
{
map<pair<string, string>, int> ss;
for (int i = 1; i <= n; i++)
{
pair<string, string> t(a[i][k], a[i][j]);//pair的构造函数
if (ss.count(t))
{
canfind = 1;
r1 = ss[t], r2 = i;
c1 = k+1, c2 = j+1;
break;
}
else ss[t] = i;
}
if (canfind) break;
} if (canfind)
{
printf("NO\n");
printf("%d %d\n", r1, r2);
printf("%d %d\n", c1, c2);
}
else
{
printf("YES\n");
}
}
}
UVa - 1592 Database(STL,优化)的更多相关文章
- uva 1592 Database (STL)
题意: 给出n行m列共n*m个字符串,问有没有在不同行r1,r2,有不同列c1,c2相同.即(r1,c1) = (r2,c1);(r1,c2) = (r2,c2); 如 2 3 123,456,789 ...
- UVA 1592 DataBase
思路: 知识补充: ①make_pair和pair: /*pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存.另一个应用 ...
- UVa 1592 Database(巧用map)
Peter studies the theory of relational databases. Table in the relational database consists of value ...
- UVA - 1592 Database 枚举+map
思路 直接枚举两列,然后枚举每一行用map依次记录每对字符串出现的是否出现过(字符串最好先处理成数字,这样会更快),如果出现就是"NO",否则就是"YES". ...
- UVa 1592 Database (map)
题意:给出n行m列的数据库(数据范围: n 1~10000, m 1~10), 问你能不能找出两行r1, r2,使得这两行中的c1, c2列是一样的, 即(r1,c1)==(r2,c1) && ...
- Database UVA - 1592
对于每组数据,首先通过一个map将每个字符串由一个数字代替,相同的字符串由相同数字代替,不同的字符串由不同数字代替.那么题目就变为了询问是否存在行r1,r2以及列c1,c2使得str[r1][c1]= ...
- 【例题5-9 UVA - 1592】Database
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 枚举不同的列是哪两个列,然后枚举行. 把那一行的这两列的字符接在一起,然后用map判重. 为了防止逐个比较字符. 可以一开始先把字符 ...
- 1414. Astronomical Database(STL)
1414 破题 又逼着用stl 卡内存 trie树太耗了 水不过去 用set存字符串 set可以自己按一定顺序存 且没有重复的 再用lower_bound二分查找字符串的第一次出现 接着往后找就行了 ...
- UVa 340 Master-Mind Hints (优化查找&复制数组)
340 - Master-Mind Hints Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_on ...
随机推荐
- Win10+VirtualBox+Openstack Mitaka
首先VirtualBox安装的话,没有什么可演示的,去官网(https://www.virtualbox.org/wiki/Downloads)下载,或者可以去(https://www.virtual ...
- SSIS控件使用
1.转换控件: 2.执行SQL任务,返回一个值后,判断全量,还是增量?
- MVC中验证码的简单使用
首先新建一个MVC项目 添加类:验证码帮助类(ValidateCodeHelper) using System; using System.Collections.Generic; using Sys ...
- VS2012快捷键消失
我也是网上搜的不过我认为挺有效就自己摘录下来了,具体原作者也找不到,所以就下手了,望原谅. 开始菜单 -->所有程序-->Visual Studio 2012文件夹 --> Visu ...
- 第一天课程-html基础
一.课程内容: 1.安装需要的软件 安装了三个软件:Adobe Dreamweaver,EmEditor,FSCapture.分别是前端开发软件.功能强大的文本编辑器,截图录屏软件 2.了解文件格式. ...
- 一、单例模式(Singleton)
单例模式最初的定义出现于<设计模式>(艾迪生维斯理, 1994):“保证一个类仅有一个实例,并提供一个访问它的全局访问点.” 特点:一是某个类只能有一个实例: 二是它必须自行创建这个实例: ...
- css样式优先级问题
官方表述的CSS样式优先级如下: 通用选择器(*) < 元素(类型)选择器 < 类选择器 < 属性选择器 < 伪类 < ID 选择器 < 内联样式 那么,我们来举个 ...
- Easyui validatebox后台服务端验证
Easyui validatebox的验证提示十分好用,可是在实际项目的运用中,经常会遇到需要服务器验证后并返回验证结果信息,比如验证用户名.手机号.邮箱是否已存在.于是就想着怎么拓展Easyui的验 ...
- Python+Selenium之断言对应的元素是否获取以及基础知识回顾
# coding=utf-8 from selenium import webdriver driver = webdriver.Firefox() driver.maximize_window () ...
- BZOJ 4563: [Haoi2016]放棋子
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 389 Solved: 248[Submit][Status][Discuss] Descriptio ...