题意:

给出n行m列共n*m个字符串,问有没有在不同行r1,r2,有不同列c1,c2相同。即(r1,c1) = (r2,c1);(r1,c2) = (r2,c2);

2 3

123,456,789

123,654,789

(1,3) 就对应(3,3)

如果有这种对应,就输出NO,然后输出两个行号, 两个列号。否则输出YES。

分析:

这题方法类似:http://www.cnblogs.com/Jadon97/p/6877791.html

总结就是先映射, 再操作

将每个字符串映射成一个值。

枚举任意两列,构成一对pair,枚举任意两行是否相等,任意两列组合C(10,2) = 45种 行最多有10000行。

其实这种方法很慢,只是为了练习STL,正常做法会用char数组和hash

代码参考刘汝佳第五章例题

 #include <bits/stdc++.h>
const int maxr = + ;
const int maxc = + ;
using namespace std;
typedef pair<int,int> PII;
int n, m, cnt;
int db[maxr][maxc];
map<string, int> id; void debug()//观察dp数组映射的值
{
for(int i = ; i < n; i++)
{
for(int j = ; j < m; j++)
{
cout << db[i][j] <<" ";
}
cout<< "\n";
} }
int ID(const string& s)
{
if(id.count(s))
return id[s];
else return id[s] = ++cnt;
}
void solve()
{
//寻找任意两列,观察任意两行是否相等 任意两列组合45种 行共有10000行 循环45W次
for(int c1 = ; c1 < m; c1++)
{
for(int c2 = c1 + ; c2 < m; c2++)
{
map<PII, int> d;//注意存活周期,只存在任意两列的循环中
for(int i = ; i < n ; i++)
{
PII p = make_pair(db[i][c1], db[i][c2]);
if(d.count(p))
{
printf("NO\n");
printf("%d %d\n",d[p]+, i+);
printf("%d %d\n",c1+,c2+);
return;
}
d[p] = i;
}
}
}
printf("YES\n");
}
int main()
{
// freopen("1.txt","r",stdin);
string s;
while(getline(cin,s))
{
stringstream ss(s);
if(!(ss >> n >> m)) break;
for(int i = ; i < n; i++)
{
string t;
getline(cin,t);
for(int j = ; j < t.length(); j++)
{
if(t[j] == ',') t[j] = ' ';
else if(t[j] == ' ') t[j] = '$';
}
stringstream st(t);
for(int j = ; j < m; j++)
{
string t1;
st >> t1;
// cout<<t1<<"\n";
db[i][j] = ID(t1);
}
}
// debug();
solve();
}
return ;
}

uva 1592 Database (STL)的更多相关文章

  1. UVa - 1592 Database(STL,优化)

    给一个n行m列的数据库表格,问有没有两个行 r1,r2 和 c1,c2,满足(r1,r2)的元素=(c1,c2)的元素. n≤10000,m≤10. 直接枚举4个肯定会T的.可以只枚举c1 c2,然后 ...

  2. uva 725 Division(除法)暴力法!

    uva 725  Division(除法) A - 暴力求解 Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & ...

  3. 全网最详细的Windows系统里Oracle 11g R2 Database(64bit)安装后的初步使用(图文详解)

    不多说,直接上干货! 前期博客 全网最详细的Windows系统里Oracle 11g R2 Database(64bit)的下载与安装(图文详解) 命令行方式测试安装是否成功 1)   打开服务(cm ...

  4. 全网最详细的Windows系统里Oracle 11g R2 Database(64bit)的完全卸载(图文详解)

    不多说,直接上干货! 前期博客 全网最详细的Windows系统里Oracle 11g R2 Database(64bit)的下载与安装(图文详解) 若你不想用了,则可安全卸载. 完全卸载Oracle ...

  5. C++标准模板库(STL)和容器

    1.什么是标准模板库(STL)? (1)C++标准模板库与C++标准库的关系 C++标准模板库其实属于C++标准库的一部分,C++标准模板库主要是定义了标准模板的定义与声明,而这些模板主要都是 类模板 ...

  6. 【常用技巧】标准模板库(STL)

    [常用技巧]标准模板库(STL) 在前几个章节中我们已经使用了诸如队列.堆.堆栈.vector 等标准模板库中的模板,切身感受到了它给我们带来的极大便利.在本节中,我们还要介绍两种标准模板——stri ...

  7. C++ 标准模板库(STL)——容器(Containers)的用法及理解

    C++ 标准模板库(STL)中定义了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量(vector).队列(queue).栈(stack).set.map等.这次主要 ...

  8. Three.js 3D打印数据模型文件(.STL)载入中

    3DPrint是现在和未来10年度科技产品的主流之中.广泛的. 对于电子商务类3D打印网站.一个主要功能就是商品3D呈现的方式,那是,3D数据可视化技术. HTML5(WebGL)它可以用于构建3D查 ...

  9. C++标准模板库(STL)之Vector

    在C中,有很多东西需要自己实现.C++提供了标准模板库(Standard Template Libray,STL),其中封装了很多容器,不需要费力去实现它们的细节而直接调用函数来实现功能. 具体容器链 ...

随机推荐

  1. Unix\Linux | 总结笔记 | 查看文件的方式

    0 目录 vi cat head tail more less 1.vi vi编辑器的内置命令 有些内置命令使用键盘组合键即可完成,有些内置命令则需要以冒号“:”开头输入.常用内置命令如下: Ctrl ...

  2. 【数据结构(C语言版)系列一】 线性表

    最近开始看数据结构,该系列笔记简单记录总结下所学的知识,更详细的推荐博主StrayedKing的数据结构系列,笔记部分也摘抄了博主总结的比较好的内容. 一些基本概念和术语 数据是对客观事物的符号表示, ...

  3. MFC显示文本文档 分类: MFC 2014-12-30 10:03 457人阅读 评论(1) 收藏

    新建基于对话框的MFC应用程序.资源视图的对话框上添加编辑框(Edit Control)和按钮(Button), 将编辑框属性:Mutiline.Auto HScroll.Auto VScroll设为 ...

  4. 454 4Sum II 四数相加 II

    给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0.为了使问题简单化,所有的 A, ...

  5. 表单<form></form>提交方式的区别

    <form action="" method="get/post"> 表单<form></form>的提交方式有两种:pos ...

  6. 掌握Spark机器学习库-09.3-kmeans算法实现分类

     数据集 iris.data 数据集概览 代码 package org.apache.spark.examples.hust.hml.examplesforml import org.apache.s ...

  7. iOS----创建静态库

    静态库 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.根据源代码的公开情况,库可以分为2种类型 开源库 公开源代码,能看到具体实现 比如SDWebImage.AFNetworkin ...

  8. Farseer.net轻量级ORM开源框架 V1.2.1版本升级消息

    提交版本V1.2.11.修复实体未设置主键时,无法找到主键ID字段,改为无主键时默认为"ID”字段2.新增:SqlServer2000Provider数据库驱动3.新增:DbContextI ...

  9. Int 1的实现过程 (一)

    闲话少说,直奔主题,首先OD载入一个程序,然后执行一下单步(调试器会将TF置1) 此时,CPU会在基于当前线程上下文的环境中,进入int 1的中断门,也就是KiTrap01 kd> !idt - ...

  10. 学习 微信小程序 大神不要笑