博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA - 1592 Database
阅读量:5291 次
发布时间:2019-06-14

本文共 4014 字,大约阅读时间需要 13 分钟。

Peter studies the theory of relational databases. Table in the relational database consists of values that are arranged in rows and columns.

There are different normal forms that database may adhere to. Normal forms are designed to minimize the redundancy of data in the database. For example, a database table for a library might have a row for each book and columns for book name, book author, and author's email.

If the same author wrote several books, then this representation is clearly redundant. To formally define this kind of redundancy Peter has introduced his own normal form. A table is in Peter's Normal Form (PNF) if and only if there is no pair of rows and a pair of columns such that the values in the corresponding columns are the same for both rows.

How to compete in ACM ICPC Peter peter@neerc.ifmo.ru
How to win ACM ICPC Michael michael@neerc.ifmo.ru
Notes from ACM ICPC champion Michael michael@neerc.ifmo.ru

The above table is clearly not in PNF, since values for 2rd and 3rd columns repeat in 2nd and 3rd rows. However, if we introduce unique author identifier and split this table into two tables -- one containing book name and author id, and the other containing book id, author name, and author email, then both resulting tables will be in PNF.

$\textstyle \parbox{.5\textwidth}{\begin{center}\begin{tabular}{\vert l\vert l......\hlineNotes from ACM ICPC champion & 2 \\\hline\end{tabular}\end{center}}$$\textstyle \parbox{.49\textwidth}{\begin{center}\begin{tabular}{\vert l\vert ......ine2 & Michael & michael@neerc.ifmo.ru \\\hline\end{tabular}\end{center}}$

Given a table your task is to figure out whether it is in PNF or not.

 

Input contains several datasets. The first line of each dataset contains two integer numbers 
n
 and 
m
 ( 
1$ \le$n$ \le$10000, 1$ \le$m$ \le$10
), the number of rows and columns in the table. The following 
n
 lines contain table rows. Each row has 
m
 column values separated by commas. Column values consist of ASCII characters from space (ASCII code 32) to tilde (ASCII code 126) with the exception of comma (ASCII code 44). Values are not empty and have no leading and trailing spaces. Each row has at most 80 characters (including separating commas).

 

For each dataset, if the table is in PNF write to the output file a single word `` 
YES
" (without quotes). If the table is not in PNF, then write three lines. On the first line write a single word `` 
NO
" (without quotes). On the second line write two integer row numbers 
r1
 and 
r2
 ( 
1$ \le$r1,r2$ \le$nr1$ \ne$r2
), on the third line write two integer column numbers 
c1
 and 
c2
 ( 
1$ \le$c1c2$ \le$mc1$ \ne$c2
), so that values in columns 
c1
 and 
c2
 are the same in rows 
r1
 and 
r2
.

 

3 3How to compete in ACM ICPC,Peter,peter@neerc.ifmo.ruHow to win ACM ICPC,Michael,michael@neerc.ifmo.ruNotes from ACM ICPC champion,Michael,michael@neerc.ifmo.ru2 31,Peter,peter@neerc.ifmo.ru2,Michael,michael@neerc.ifmo.ru

 

NO2 32 3YES
 
 
本题考查字符串的处理,和map,pair的使用,不过时间有点长啊,有4s
 
 
#include 
using namespace std;int cnt = 0;map
id_table;map
, int> check;int A[10240][12];int get_id(string &x){ if(id_table.count(x)) return id_table[x]; return (id_table[x] = cnt++);}int main(){ int n, m; loop: while(cin >> n >> m) { getchar(); cnt = 0; int ch; for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) { string x; while((ch = getchar())!=EOF && ch!=',' && ch!='\n') x += ch; int id = get_id(x); A[i][j] = id; } } for(int c1 = 1; c1 < m; c1++) { for(int c2 = c1 + 1; c2 <= m; c2++) { check.clear(); for(int r = 1; r <= n; r++) { pair
x = make_pair(A[r][c1], A[r][c2]); if(check.count(x)) { printf("NO\n"); printf("%d %d\n", check[x], r); printf("%d %d\n", c1, c2); goto loop; } else check.insert(make_pair(x, r)); } } } printf("YES\n"); } return 0;}

转载于:https://www.cnblogs.com/kunsoft/p/5312785.html

你可能感兴趣的文章
idea从gitlab获取代码
查看>>
使用 RUP 管理小型项目和团队
查看>>
七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC
查看>>
php简单常用的API
查看>>
如何在 Mac 上创建一个 cocos2d 的项目
查看>>
kengenme2
查看>>
Android_adb详解
查看>>
Sitecore CMS中配置模板部分
查看>>
机器学习(一)——K-近邻(KNN)算法
查看>>
(总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解
查看>>
大數據超時處理。
查看>>
动态规划之切钢条
查看>>
# 第四十五篇 网络编程之CS架构
查看>>
C语言中assert的使用
查看>>
SVG.js 基础图形绘制整理(一)
查看>>
(1)SQL Server内存浅探
查看>>
html编码对照表
查看>>
Java 访问指示符
查看>>
vim如何选择ESC的键位绑定
查看>>
TFS中的项目门户网站远程无法访问的问题。
查看>>