Database UVA
来源:互联网 发布:2017网络神曲 编辑:程序博客网 时间:2024/06/06 03:15
对于每组数据,首先通过一个map将每个字符串由一个数字代替,相同的字符串由相同数字代替,不同的字符串由不同数字代替。那么题目就变为了询问是否存在行r1,r2以及列c1,c2使得str[r1][c1]=str[r2][c1]且str[r1][c2]=str[r2][c2](此时所有单元格内都是数字,str[i][j]表示第i行第j列的数字)。也就是寻找两行和两列,它们相交所在的四个单元格中上面的两个与下面两个分别相等。
然后,由于行多列少,可以枚举列。对于每次枚举出的两列c1,c2,先清空map,然后从上往下扫描行。设当前扫描到的行是第k行,则建立二元组(str[k][c1],str[k][c2]),如果map中没有此二元组则将其放入map,并将值设为k;如果map中有此二元组,则表示前面有某行的c1,c2两列与这一行的c1,c2两列分别相同,那么由存入map的方法可知map[二元组]得到"某行",显然r1就是"某行",r2就是k,c1,c2就是枚举出的c1,c2。
#include<vector>#include<map>#include<string>#include<iostream>using namespace std;int n,m;int str[10001][11];typedef pair<int,int> P;int now;map<string,int> IDcache;//根据字符串取IDmap<P,int> m2;//存储由二元组映射到行号void getstring(string& s){s="";int a=getchar();while(a=='\n')a=getchar();while(a!='\n'&&a!=','){s+=(char)a;a=getchar();}}int main(){string s1;P p1;int i,j,k;bool flag;while(cin>>n>>m){flag=false;now=0;IDcache.clear();for(i=1;i<=n;i++)for(j=1;j<=m;j++){getstring(s1);if(IDcache.count(s1)==1)str[i][j]=IDcache[s1];else{IDcache[s1]=(++now);str[i][j]=now;}}//for(i=1;i<=n;i++)//for(j=1;j<=m;j++)//cout<<str[i][j]<<'\n';for(i=1;i<m;i++)for(j=i+1;j<=m;j++){m2.clear();for(k=1;k<=n;k++){//goto不应该乱用,但是跳出很多重循环可以用以简化程序//https://baike.baidu.com/item/goto%E8%AF%AD%E5%8F%A5p1=P(str[k][i],str[k][j]);if(m2.count(p1)==1){flag=true;cout<<"NO\n";cout<<m2[p1]<<' '<<k<<'\n';cout<<i<<' '<<j<<'\n';goto lab;}elsem2[p1]=k;}}lab:if(flag==false)cout<<"YES\n";}return 0;}
阅读全文
0 0
- Database UVA
- UVA - 1592 Database
- UVa 1592 - Database
- UVa 1592 Database
- UVA 1592(p128)----Database
- UVA 1592 Database
- UVa 1592 Database
- Database UVA 1592数据库
- Uva 1592 Database
- uva 1592Database
- Database, UVa 1592
- UVA 1592 Database(map)
- UVa 1592 Database
- uva-1592Database[STL应用]
- UVA - 1592 Database map+pair
- UVa 1592 - Database(pair+预处理)
- Problem 036——UVa 1592 - Database
- UVa #1592 Database (例题5-9)
- vi命令大全
- 算法:两种算法相比较(选择和插入排序)
- HDU 6034 Balala Power!【贪心】
- Hashtable源码解析
- java未来趋势 Java促进大数据的大发展
- Database UVA
- Vijos P1324 最优组播树(这再一次证明了状态函数设置恰当的重要性)
- 面试题:软件测试,如何测微信的朋友圈?
- App运行时发生OOM的原因你知道几种?应该如何避免?
- 成为Java顶尖程序员 ,看这11本书就够了
- HDU-1171-Big Event in HDU(01背包的简单变形)
- Android_Service获取系统服务
- Eclipse插件之动态刷新ToolBar的图片
- MA8601|HUB方案|中文规格书|MA8601一级代理|MA8601应用|