当前位置:网站首页>Uva1592 Database
Uva1592 Database
2022-07-06 04:33:00 【Pecksniff. k】
The original title is :
Ideas : Use one IDcache To assign all strings ID, recycling pair Form a binary . Maintain left endpoint c1, Enumerate right endpoints c2, At the same time through row Scan the assigned from top to bottom id library . Query the first row That's ok pair(c1,c2) Whether it exists or not .
Code :
#include<iostream>
#include<algorithm>
#include<string>
#include<sstream>
#include<set>// aggregate
#include<map>// mapping
#include<vector>// vector
#include<utility>//pair
#define DEBUG
using namespace std;
map<string,int> IDcache;// Record ID
map<pair<int,int>,int> Binary_pair;// Record where the binary is row
int cnt=0;
int ID(string s)// Distribute ID
{
if(IDcache.count(s))
{
return IDcache[s];
}
else
{
return IDcache[s]=cnt++;
}
}
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n,m;
while(cin>>n>>m)
{
IDcache.clear();
Binary_pair.clear();
vector<vector<int>> dict(n,vector<int>(m));// Deposit ID
string s;
cnt=0;
cin.get();// Eliminate line breaks
for(int i=0;i<n;i++)
{
getline(cin,s);
for(int j=0;j<s.length();j++)
{
if(s[j]==',')
{
s[j]=' ';// Replace commas with spaces
}
else if(s[j]==' ')
{
s[j]=',';// Replace the space with an impossible comma
}
}
stringstream ss(s);// Character stream
for(int j=0;j<m;j++)
{
string cur;
ss>>cur;
dict[i][j]=ID(cur);
}
}
#ifndef DEBUG// Debug statement
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cout<<dict[i][j]<<" ";
}
cout<<endl;
}
#endif
if(m>1)
{
for(int c1=0;c1<m-1;c1++)// Maintain left endpoint
{
for(int c2=c1+1;c2<m;c2++)// Enumerate right endpoints
{
Binary_pair.clear();
for(int row=0;row<n;row++)// Traverse from top to bottom
{
pair<int,int> temp(dict[row][c1],dict[row][c2]);
if(Binary_pair.count(temp))// Is not Peter normal form
{
cout<<"NO"<<endl;
cout<<Binary_pair[temp]+1<<" "<<row+1<<endl;
cout<<c1+1<<" "<<c2+1<<endl;
goto out;// Jump out of multiple loops
}
else
{
Binary_pair[temp]=row;
}
}
}
}
}
cout<<"YES"<<endl;
out:;
}
return 0;
}边栏推荐
- P2022 有趣的数(二分&数位dp)
- IDEA编译JSP页面生成的class文件路径
- One question per day (Mathematics)
- Tengine kernel parameters
- Mlapi series - 04 - network variables and network serialization [network synchronization]
- 深入浅出node模板解析错误escape is not a function
- How does computer nail adjust sound
- ue5 小知识 FreezeRendering 查看视锥内渲染的物体
- R note prophet
- Lombok原理和同时使⽤@Data和@Builder 的坑
猜你喜欢

Dry goods collection | Vulkan game engine video tutorial

About some basic DP -- those things about coins (the basic introduction of DP)

How to estimate the population with samples? (mean, variance, standard deviation)

IDEA编译JSP页面生成的class文件路径

Ue5 small knowledge points to enable the setting of lumen

The most detailed and comprehensive update content and all functions of guitar pro 8.0

Mysql数据库慢sql抓取与分析

10 exemples les plus courants de gestion du trafic istio, que savez - vous?

10個 Istio 流量管理 最常用的例子,你知道幾個?

The value of two date types is subtracted and converted to seconds
随机推荐
. Net interprocess communication
The value of two date types is subtracted and converted to seconds
CertBot 更新证书失败解决
How does vs change the project type?
【HBZ分享】云数据库如何定位慢查询
How do programmers teach their bosses to do things in one sentence? "I'm off duty first. You have to work harder."
CADD课程学习(8)-- 化合物库虚拟筛选(Virtual Screening)
Tengine kernel parameters
P2102 地砖铺设(dfs&贪心)
SharedPreferences 源码分析
动态规划(树形dp)
Mlapi series - 04 - network variables and network serialization [network synchronization]
NPM command -- install dependent packages -- Usage / explanation
Visio draw fan
E. Best Pair
[Yu Yue education] reference materials of complex variable function and integral transformation of Northwestern Polytechnic University
How to realize automatic playback of H5 video
MIT CMS. 300 session 8 – immersion / immersion
Hashlimit rate control
PTA tiantisai l1-078 teacher Ji's return (15 points) detailed explanation