UVA 1592 DataBase_uvaqqh-程序员宅基地

技术标签: UVA  算法  c++  数据库  错题本  

优化技巧:

将字符串映射成数字,方便存储也加快比较速度(配合map的find函数)

#include<stdio.h>
#include<iostream>
#include<cstdlib>
#include<string.h>
#include<algorithm>
#include<unordered_map>
#include<map>
#include<vector>
using namespace std;
unordered_map<int,int>article[10001];//(没啥用了) article[i][j]代表第i行j列的字符串(所映射的数字)
unordered_map<string,int>word;//保存一下将字符串映射成数字的结果
int idx;
int n,m;
int have_ans=0;
int a[10001][11];
bool solve(int i,int j);
struct nodes
{
	int x,y;
	bool operator < (const nodes &temp) const
	{
//		if(x==temp.x&&y==temp.y) return false;
//		if(x==temp.x)
//		{
//			return y<temp.y;
//		}
//		return x<temp.x;
		return x<temp.x||(x==temp.x&&y<temp.y);
		
	}
};
void operate_str(const string &str,int row)//将一整行的字符分开.并把字符串映射
{
	if(have_ans)return ;
	
	string line;//储存一个格
	int column=1;
	for(int i=0;str[i];i++)
	{
		if(str[i]==',')
		{
			
			if(word.find(line)==word.end())
			{
				word[line]=++idx;
			}
			article[row][column]=word[line];
			
			a[row][column]=word[line];
			line.clear();
			column++;
		}
		else
		{
			line.push_back(str[i]);
		}
	}
	
}
void solve()//先确定两列,寻找是否有两行,他们对应的元素相同
{
	
	
	
	for(int c1=1;c1<=m;c1++)
	{
		for(int c2=c1+1;c2<=m;c2++)
		{
            map<nodes,int> t;//把同一列下的两个元素储存起来
			for(int r1=1;r1<=n;r1++)
			{
				nodes p={a[r1][c1],a[r1][c2]};
				//printf("%d -%d,%d %d-%d,%d\n",a[r1][c1],r1,c1,a[r1][c2],r1,c2);
				if(t.find(p)!=t.end())
				{
					
					have_ans=1;
					printf("NO\n");
					printf("%d %d\n%d %d\n",t[p],r1,c1,c2);
					return;
				}
				t[p]=r1;
			}
			t.clear();
		}
	}
}
void init()
{
	have_ans=0;
	idx=0;
}
int main()
{
	//freopen("uva1592.txt","r",stdin);
	//freopen("uva1592-out.txt","w",stdout);
	while(scanf("%d%d",&n,&m)!=EOF)
	{
		getchar();
		init();
		
		for(int i=1;i<=n;i++)
		{
			string str;
			getline(cin,str);
			
			str.push_back(',');
			operate_str(str,i);		
		}
		solve();
		if(have_ans)
		{
			//printf("NO\n");
			//printf("%d %d\n%d %d\n",ans.r1,ans.r2,ans.c1,ans.c2);
		}
		else
		{
			printf("YES\n");
		}
		
	}
	return 0;
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_34920482/article/details/125860503

智能推荐

问题:Element-ui中DateTimePicker设置了default-time和picker-options(时间选择范围)后无法选择当天日期_el-date-picker 不能选择当天时间-程序员宅基地

文章浏览阅读3.3k次。一、问题描述  在设置完default-time及picker-options两个属性后,当选择当天时间时,无法选中填入时间!!<el-date-picker v-model="dateTime" unlink-panels value-format="yyyy-MM-dd HH:mm:ss" type="daterange" range-separator="~" start-placeholder="开始日期" _el-date-picker 不能选择当天时间

guitar pro8值不值得买 ?guitarpro8多少钱-程序员宅基地

文章浏览阅读550次,点赞10次,收藏10次。Guitar Pro是一款备受吉他手喜爱的谱写软件,它提供了丰富的功能,使得谱写和学习吉他曲目变得更加轻松。随着时间的推移,软件也在进行不断地更新和升级,为用户带来了更多便利和功能。在最新的Guitar Pro 8版本中增加了新功能,下面来给大家介绍guitar pro8值不值得买?guitarpro8多少钱的具体内容。Guitar Pro 8是一款值得购买的音乐编奏软件。它有许多高效的功能,使得谱写、编辑和学习乐谱变得更加便利。下面是Guitar Pro 8的一些主要功能。_guitar pro8

成功替代SA605DK:不使用SA605的ISO15693中大功率中远距离RFID读写器设计实例,完美替代NXP/PHILIPS的SA605/NE605/SA615/SA636/SA605D-程序员宅基地

文章浏览阅读485次。不使用任何NXP/PHILIPS已停产的SA605/SA605D/SA605DK/NE605/SA615/SA636等混频器芯片的ISO15693中大功率中远距离RFID读写器,完美替代SA605DK,所有射频芯片均为全新且量产易购买的,单片机采用超低成本的国产STC单片机,通讯为:USB串口和TTL串口,发射功率为。更多资料:http://www.iso15693.com。

2016.10.21回顾-程序员宅基地

文章浏览阅读174次。1、处理了一些生活中的事情,就是身份证更换的事情2、看了一下decision tree,知道了怎么计算熵3、看到了一本书,叫财富公式,感觉这本书,值得一读

Ruby Unable to download data from https://rubygems.org/-SocketError: Failed to open TCP connect解决办法_failed to open tcp connection to ru-程序员宅基地

文章浏览阅读1.9k次。最近老是忘记Git的命令使用,想重新学习一下,在Github上看到githug这个项目,可以通过游戏的方式进行学习,还是很新奇的。Ruby安装githug报错解决办法:更换源为https://gems.ruby-china.com/_failed to open tcp connection to ru

Netty工作原理架构图_java netty架构图-程序员宅基地

文章浏览阅读979次。server端工作原理如下图:NettyServer整体架构图.pngserver端启动时绑定本地某个端口,将自己NioServerSocketChannel注册到某个boss NioEventLoop的selector上。server端包含1个boss NioEventLoopGroup和1个worker NioEventLoopGroup,NioEventLoopGroup..._java netty架构图

随便推点

【转载】struct dirent 和 DIR结构体 详解-程序员宅基地

文章浏览阅读356次。原文地址:https://blog.csdn.net/sin0803/article/details/375393131.包含头文件#include <dirent.h>2.struct dirent结构1 struct dirent2 {3 long d_ino; /* inode number 索引节点号 */4 off_t ..._struct dirnet

Simplicity Studio 4 用法_simplicity studio 4.0 uart-程序员宅基地

文章浏览阅读1.4w次,点赞2次,收藏8次。刚刚用了EFM32的Simplicity Studio 4 软件 来记录一下用法,软件可以去官网下载。第一步:首先连接好板子,打开这个软件,更新一下包,如图:后面的跟着步骤来就行,然后就等下载完成,根据网速吧,网速不好就需要等好久,趁这个时间可以泡一杯咖啡喝......第二步:配置芯片型号:点击左上角的箭头,右键选择 Device Configuration ,然后跳出一个窗口选择你所用到的芯片,..._simplicity studio 4.0 uart

yolov5 Tensorrt加速 zed取图像碰到的问题_yolov5_zed: /home/xu/tensorrt_yolov5_v6.0/src/yolo-程序员宅基地

文章浏览阅读1.4k次。原程序的功能是将samples文件夹里的照片一次性进行识别。想改变程序,用zed拍照,达到实时显示识别的目的,但是加了while(1)以及zed grab后,报错:[08/04/2020-16:01:13] [E] [TRT] …/rtSafe/safeContext.cpp (133) - Cudnn Error in configure: 7 (CUDNN_STATUS_MAPPING_ERROR)[08/04/2020-16:01:13] [E] [TRT] FAILED_EXECUTION: s_yolov5_zed: /home/xu/tensorrt_yolov5_v6.0/src/yolov5.cpp:73: nvinfer1::icuda

Linux命令可以在后台运行,不随shell的关闭而关闭_不结束shell界面命令挅作是-程序员宅基地

文章浏览阅读5.6k次。我们在服务器上运行的了一个服务,肯定不想CTRL+C退出日志打印平台后,服务就停止了,即使是我们关闭了远程访问服务器的Shell窗口,也不要关闭。下面就是解决这个问题的干货了:1、&在运行命令的后面添加&,表示让让程序在后台运行,所以你CTRL+C后退出了日志打印,服务仍然会运行到后台。2、nohup可是你发现没有,即使添加了&,我们关闭访问服务器的窗口后,服务还..._不结束shell界面命令挅作是

【30篇突击 android】源码统计 十八-程序员宅基地

文章浏览阅读411次。android手机控制电脑源码 android手机可视化控制电脑-无线鼠盘源码 自定义TextView跑马灯效果,可控制启动,停止,和速度 Android自定义Menu,所有功能已经完善 下拉菜单3级联动,天气预报模拟豆瓣。并获取一些个人信息。Android 仿QQ客户端及服务端源码android 斗地主源码分享ImageCache,图片缓存工具类,可直接用于项目(

ubuntu卸载显卡驱动和cuda_在乌班图安全模式下能删除显卡吗-程序员宅基地

文章浏览阅读1.7k次。2.卸载驱动sudo apt-get --purge remove nvidia*sudo apt autoremoveTo remove CUDA Toolkit:$ sudo apt-get --purge remove “cublas” “cuda*”To remove NVIDIA Drivers:$ sudo apt-get --purge remove “nvidia”..._在乌班图安全模式下能删除显卡吗

推荐文章

热门文章

相关标签