UVA1592 DataBase 解题报告

UVA1592 DataBase 解题报告

题目链接

https://vjudge.net/problem/UVA-1592

题目大意

输入一个n行m列的数据库(1≤n≤10000,1≤i≤10),是否存在两个不同行r1,r2和两个不同列c1,c2,使得这两行和这两列相同(即(r1,c1)和(r2,c1)相同,(r1,c2)和(r2,c2)相同)。

解题思路

直接写一个四重循环枚举r1,r2,c1,c2可以吗?理论上可以,实际上却行不通。枚举量太大,程序会执行相当长的时间,最终获得TLE(超时)。解决方法是只枚举c1和c2,然后从上到下扫描各行。每次碰到一个新的行r,把c1,c2两列的内容作为一个二元组存到一个map中。如果map的键值中已经存在这个二元组,该二元组映射到的就是所要求的r1,而当前行就是r2。
这里有一个细节问题:如何表示由c1,c2两列组成的二元组?一种方法是直接用两个字符串拼成一个长字符串(中间用一个其他地方不可能出现的字符分隔),但是速度比较慢(因为在map中查找元素时需要进行字符串比较操作)。更值得推荐的方法是在主循环之前先做一个预处理——给所有字符串分配一个编号,则整个数据库中每个单元格都变成了整数,上述二元组就变成了两个整数。

代码

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;
using ld = long double;
#define endl '\n';
const int maxn = 1e4 + 10;
const int INF = 0x3fffffff;
const int mod = 1e9 + 7;
int n, m;
string str[maxn][15];
map<string, int> idCache;
map<int, string> strCahe;void Init(string s, int r) {string tmp = "";int c = 1;for (int i = 0; i < s.size(); i++) {if (s[i] == ',') {str[r][c++] = tmp;tmp = "";} else {tmp += s[i];}}str[r][c] = tmp;
}int getID(string s) {if (idCache.count(s))return idCache[s];int num = idCache.size() + 1;idCache[s] = num;strCahe[num] = s;return num;
}void solve() {cin.get();idCache.clear();strCahe.clear();for (int i = 1; i <= n; i++) {string s;getline(cin, s);Init(s, i);}for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {string s = str[i][j];// cout << s << ", ";getID(s);}// cout << endl;}map<pair<int, int>, int> mp;for (int c1 = 1; c1 <= m; c1++) {for (int c2 = c1 + 1; c2 <= m; c2++) {for (int r = 1; r <= n; r++) {auto p = make_pair(getID(str[r][c1]), getID(str[r][c2]));if (mp.count(p)) {cout << "NO\n";cout << mp[p] << " " << r << endl;cout << c1 << " " << c2 << endl;return;}mp[p] = r;}}}cout << "YES\n";
}int main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout << fixed;cout.precision(18);while (cin >> n >> m)solve();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/802332.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

五边形信息图表绘制方法

五边形信息图表绘制方法 在网络科技发展进步的当下&#xff0c;原来一些传统的统计图表都有了进一步的创新。以前企业的PPT都依赖微软的各应用软件来制作图表&#xff0c;现时企业的PPT展示的图表应用不再满足于原来的图表绘制方法&#xff0c;进而使用一些第三方应用软件来制作…

Linux_进程的优先级环境变量上下文切换优先级队列

文章目录 一、进程的优先级二、进程的四个重要概念三、上下文切换四、环境变量查看当前shell环境下的环境变量与内容 五、Linux2.6内核进程调度队列一个CPU拥有一个runqueue优先级活动队列过期队列active指针和expired指针 一、进程的优先级 什么是优先级&#xff1f; 指定一个…

如何使用宝塔面板搭建MySQL数据库并实现无公网IP远程访问

文章目录 前言1.Mysql服务安装2.创建数据库3.安装cpolar3.2 创建HTTP隧道 4.远程连接5.固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 宝塔面板的简易操作性,使得运维难度降低,简化了Linux命令行进行繁琐的配置,下面简单几步,通过宝塔面板cp…

免费-华为od-C卷-javascript-动态规划-贪心歌手.js

动态规划-贪心歌手 还有很多其他题&#xff0c;链接是github, 进去可以查看对应文件夹就行

rhce复习3

DNS DNS&#xff08;Domain Name System&#xff09;是互联网上的一项服务&#xff0c;它作为将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便的访问互联网。 DNS系统使用的是网络的查询&#xff0c;那么自然需要有监听的port。DNS使用的是53端口&#x…

本地MinIO存储服务通过Java程序结合cpolar实现远程连接上传文件

文章目录 前言1. 创建Buckets和Access Keys2. Linux 安装Cpolar3. 创建连接MinIO服务公网地址4. 远程调用MinIO服务小结5. 固定连接TCP公网地址6. 固定地址连接测试 前言 MinIO是一款高性能、分布式的对象存储系统&#xff0c;它可以100%的运行在标准硬件上&#xff0c;即X86等…

HarmonyOS 应用开发-使用colorPicker实现背景跟随主题颜色转换

介绍 本示例介绍使用image库以及effectKit库中的colorPicker对目标图片进行取色&#xff0c;将获取的颜色作为背景渐变色&#xff0c;通过swiper组件对图片进行轮播&#xff0c; 效果图预览 使用说明 直接进入页面&#xff0c;对图片进行左右滑动&#xff0c;或者等待几秒&a…

谷粒商城学习日志

谷粒商城学习日志 学习计划完成时间备注学习目录大纲 学习计划 每天学习2小节视频课程 完成时间 共407节&#xff0c;预计200天完成 备注 计划根据实际执行情况进行调整&#xff0c;7天为周期一调整 每天学习完成内容更新此大纲 学习目录大纲

对称排序(蓝桥杯)

文章目录 对称排序问题描述模拟 对称排序 问题描述 小蓝是一名软件工程师&#xff0c;他正在研究一种基于交换的排序算法&#xff0c;以提高排序的效率。 给定一个长度为 N 的数组 A&#xff0c;小蓝希望通过交换对称元素的方式对该数组进行排序。 具体来说&#xff0c;小蓝…

C语言 函数——函数原型

目录 如何合并成一个完整的程序&#xff1f; 函数原型与函数定义的区别 函数原型的作用 如何合并成一个完整的程序&#xff1f; 问题&#xff1a;在一个函数中调用另一个函数&#xff0c;需要具备哪些条件呢&#xff1f; 若函数的定义出现在函数调用之前 若函数的定义出现…

转让北京通信工程施工二级资质公司要求和价格

随着通信市场的不断扩大&#xff0c;通信工程企业的发展也越来越快。在通信施工市场中&#xff0c;拥有二级资质的企业才能够更好、更稳定地参与市场竞争&#xff0c;可是资质申请过程较为繁琐&#xff0c;对于很多中小企业而言缺少人力、财力、精力等情况下&#xff0c;其实资…

数据是一维数据,每一条数据对应一个标签,利用tensorflow深度学习框架写一个带自注意力机制的卷积神经网络,并进行预测训练

以下是一个使用 TensorFlow 实现带自注意力机制的卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09;进行训练和预测的示例代码&#xff1a; import tensorflow as tf# 定义模型的超参数 learning_rate 0.001 epochs 10 batch_size 32# 构建带自注意力…

网站压力测试和Locust

一、压力测试介绍 网站压力测试是一种评估网站性能、可靠性和稳定性的方法。它通过模拟大量用户同时访问网站,来测试网站的响应时间、吞吐量、资源利用率等指标,从而发现网站的潜在问题和瓶颈。下面我将从几个方面详细介绍网站压力测试: 1、压力测试的目的 评估网站在高并发…

ASTM F2613-19儿童折叠椅和凳子安全标准

ASTM F2613-19折叠椅和凳子安全标准 美国消费品安全委员会&#xff08;CPSC&#xff09;发布的 ASTM F2613-19 儿童折叠椅和凳子的强制性安全标准&#xff0c;已于2020年7月6日生效&#xff0c;并 被纳入联邦法规《16 CFR 1232儿童折叠椅和凳子安全标准》 。 折叠椅和凳子产品示…

用Python编写GUI程序将JPEG文件按文件名顺序插入PDF文件

在Python编程中&#xff0c;处理文件和图像是常见的任务之一。最近&#xff0c;我遇到了一个有趣的问题&#xff1a;如何通过编写一个GUI程序来将一个文件夹中的JPEG文件按文件名顺序插入到一个新的PDF文件中&#xff1f;在这篇博客中&#xff0c;我将分享我使用Python、wxPyth…

DC-DC芯片D1509适用于工控主板、TV板卡、安卓主板、车载功放电源等产品方案应用。

一、应用领域 适用于工控主板、TV板卡、安卓主板、车载功放电源等产品方案应用。 二、功能介绍 D1509是芯谷科技推出的一款输入耐压40V、输出电压1.23-37V可调、输出电流最大2.0A的高效率、高精度DC-DC芯片&#xff0c;其输出电压有固定3.3V、5.0V和12.0V的版本&#xff…

网络安全行业现在还能入吗?

这几年随着我国《国家网络空间安全战略》《网络安全法》《网络安全等级保护2.0》等一系列政策/法规/标准的持续落地&#xff0c;网络安全行业地位、薪资随之水涨船高。 未来3-5年&#xff0c;是安全行业的黄金发展期&#xff0c;提前踏入行业&#xff0c;能享受行业发展红利。…

【ArcPro 加载项】图层组排序子图层

最近做控规&#xff0c;CAD湘源用的比较多。 这里就需要再夸夸Pro3.0&#xff0c;对CAD和湘源的支持非常到位。顺便再鞭尸Pro3.2&#xff0c;规划人千万不要更新。 【ArcGIS 小贴士】Pro3.2逆向更新&#xff0c;不能正常显示CAD、湘源 等等&#xff0c;发现一个问题&#xf…

跨云迁移实操:AWS RDS for mysql 迁移至腾讯云mysql --DTS方式

实操场景&#xff1a;从AWS RDS for mysql 迁移至腾讯云云数据库Mysql&#xff0c;通过腾讯云数据传输服务DTS,进行实时全量增量迁移. 下面九河云给大家带来具体实践介绍 购买迁移数据库--目的端机器&#xff08;腾讯云MYSQL&#xff09; 可以源端为5.7所以新建一个参数模版 其…

常见的解析漏洞总结

文件解析漏洞 文件解析漏洞主要由于网站管理员操作不当或者 Web 服务器自身的漏洞&#xff0c;导致一些特殊文件被 IIS、apache、nginx 或其他 Web服务器在某种情况下解释成脚本文件执行。 比如网站管理员配置不当&#xff0c;导致php2、phtml、ascx等等这些文件也被当成脚本文…