题意:

给出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. SQL标量函数-日期函数

    select day(createtime) from life_unite_product     --取时间字段的天值 select month(createtime) from life_uni ...

  2. hihoOffer收割练习20题目2

    题目2 : SCI表示法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 每一个正整数 N 都能表示成若干个连续正整数的和,例如10可以表示成1+2+3+4,15可以表示 ...

  3. Visual studio docker build no such file or directory

    在我构建新的镜像的时候, 发生 了  no such file or directory 的错误.  这个错误找了半天, 没头绪,项目结构是这样的: WebApplication1 建立在根目录下,是 ...

  4. java数组实现买彩票(平移覆盖思想)

    package com.wh.shuzu; /** * 买彩票 * @author 贾相如同学 * 平移覆盖思想 */ public class Lotery3 { public static voi ...

  5. WPF学习07:MVVM 预备知识之数据绑定

    MVVM是一种模式,而WPF的数据绑定机制是一种WPF内建的功能集,两者是不相关的. 但是,借助WPF各种内建功能集,如数据绑定.命令.数据模板,我们可以高效的在WPF上实现MVVM.因此,我们需要对 ...

  6. CCF|碰撞的小球

    import java.util.Scanner; public class Main { public static void main (String[] args) { Scanner scan ...

  7. 短视频SDK用于旅游行业

    超级简单易用的短视频SDK来自RDSDK.COM.锐动天地为开发者提供短视频编辑.视频直播.特效.录屏.编解码.视频转换,等多种解决方案,涵盖PC.iOS.Android多平台.以市场为导向,不断打磨 ...

  8. Java集合框架源码(二)——hashSet

    注:本人的源码基于JDK1.8.0,JDK的版本可以在命令行模式下通过java -version命令查看. 在前面的博文(Java集合框架源码(一)——hashMap)中我们详细讲了HashMap的原 ...

  9. R in action读书笔记(20)第十五章 处理缺失数据的高级方法

    处理缺失数据的高级方法 15.1 处理缺失值的步骤 一个完整的处理方法通常包含以下几个步骤: (1) 识别缺失数据: (2) 检查导致数据缺失的原因: (3) 删除包含缺失值的实例或用合理的数值代替( ...

  10. ES6语法糖集锦

    sublime3安装Es6插件 javascriptNext,然后安装即可 Java​Script​Next - ES6 Syntax()高亮插件 -------------------------- ...