UVa 10132 - File Fragmentation
题目大意:有n个相同的文件,每个文件从中间分为两半,现在给你这2n个文件碎片,求原来完整的文件。
找出文件碎片长度的最大值和最小值,二者相加可得到原来文件的长度len。然后逐个进行拼接,将拼接后长度等于len的加入到map中,最后map中出现次数最多的就是原文件。
#include <cstdio>
#include <iostream>
#include <string>
#include <map>
using namespace std;
#define FILEN 150
#define SIZEN 256*8+10 string str[FILEN];
map<string, int> m; int main()
{
#ifdef LOCAL
freopen("in", "r", stdin);
#endif
char s[];
int T;
scanf("%d", &T);
getchar();
gets(s);
while (T--)
{
int n = ;
while (gets(s))
{
if (!s[]) break;
str[n++] = s;
}
int min_len = , max_len = ;
for (int i = ; i < n; i++)
{
if (str[i].size() < min_len) min_len = str[i].size();
if (str[i].size() > max_len) max_len = str[i].size();
}
int len = max_len + min_len;
map<string, int>::iterator it;
m.clear();
for (int i = ; i < n; i++)
for (int j = i+; j < n; j++)
{
string t = str[i] + str[j];
if (t.size() == len)
{
it = m.find(t);
if (it != m.end()) m[t]++;
else m[t] = ;
}
t = str[j] + str[i];
if (t.size() == len)
{
it = m.find(t);
if (it != m.end()) m[t]++;
else m[t] = ;
}
}
int lmax = ;
string ans;
for (it = m.begin(); it != m.end(); it++)
if (it->second > lmax)
{
lmax = it->second;
ans = it->first;
}
cout << ans << endl;
if (T) printf("\n");
}
return ;
}
UVa 10132 - File Fragmentation的更多相关文章
- UVa Problem 10132 File Fragmentation (文件还原) 排列组合+暴力
题目说每个相同文件(01串)都被撕裂成两部分,要求拼凑成原来的样子,如果有多种可能输出一种. 我标题写着排列组合,其实不是什么高深的数学题,只要把最长的那几个和最短的那几个凑一起,然后去用其他几个验证 ...
- Uva 12361 File Retrieval 后缀数组+并查集
题意:有F个单词,1 <= F <=60 , 长度<=10^4, 每次可以输入一个字符串,所有包含该字串的单词会形成一个集合. 问最多能形成多少个不同的集合.集合不能为空. 分析:用 ...
- UVA题目分类
题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics ...
- (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO
http://www.cnblogs.com/sxiszero/p/3618737.html 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年 ...
- ACM训练计划step 1 [非原创]
(Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成 ...
- 算法竞赛入门经典+挑战编程+USACO
下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...
- File System Design Case Studies
SRC=http://www.cs.rutgers.edu/~pxk/416/notes/13-fs-studies.html Paul Krzyzanowski April 24, 2014 Int ...
- Disk IO Performance
一,使用 Performance counter 监控Disk IO问题 1,Physical Disk vs. Logical Disk Windows可以在一个Physical Disk上划出若干 ...
- [To be translated] Nova:libvirt image 的生命周期
翻译自:http://www.pixelbeat.org/docs/openstack_libvirt_images/ The main stages of a Virtual Machine dis ...
随机推荐
- 고서--做完A之后做B, B受A影响
1. 합격 소식을 듣고서 매우 기뻤어요.. 2. 친구하고 심하게 다투고서 마음이 안 좋았어요. 3. 급한 일을 먼저 끝내고서 이야기합시다.' 4. 창문을 열고서 상쾌한 공기를 마서 ...
- ERROR: No pool defined. at least one pool section must be specified in config file
root@ubuntu:/opt/php7# /opt/php7/sbin/php-fpm [22-Sep-2015 14:29:00] WARNING: Nothing matches the in ...
- linux创建vg、lv
LVM磁盘管理 一.LVM简介... 1 二. LVM基本术语... 2 三. 安装LVM... 3 四. 创建和管理LVM... 4 2. 创建PV.. 6 3. 创建VG.. 7 4. 创建LV. ...
- C# 经典入门11章,比较
1类型比较 所有的类懂从System.Object中继承了GetType()方法,这个方法和typeof()运算符一起使用,可以确定对象的类型.例如: if(myObj.GetType()==type ...
- zf-关于荆州首页鼠标移动到导航栏上去触发的js 显示 问题解决办法
是我copy代码的 时候 这个触发的属性没有修改,导致出现BUG,改成mopen('m2') 就好了
- linux shell——md5sum,sha1sum,sort,uniq (转)
1.文件校验 1. md5sum eg: md5sum filename 注:生成一个128位的二进制位,即32位的十六进制字符串 1.验证文件的正确性: md5sum file1 file2 &g ...
- Qt5:Qt中一些函数功能介绍
1 .setContentsMargins 该函数用于设置窗口客户区中,四周空白边框的尺寸 , 类似于 word 中的 页边距设置 2.canonical Path 返回文件路径的规范路径 , 也就 ...
- codeforce 611B New Year and Old Property
暴力搞 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> u ...
- CCS设计手段——相对定位
1.认识相对定位 相对定位就是让元素相对自己原来的位置进行位置调整. 2.相对定位的本质特性 不脱标,老家留坑,形影分离. 3.用途 ①微调位置 ②做绝对定位的参考,子绝父相 4.相对定位的定位置 相 ...
- DHCP详解
概述 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分 ...