uva-10132-排序
题意:
有很多文件,碎成了俩片,问,原来的文件是什么,如果有多个答案,任意一个答案就行,输入2N个字符串,拼接成N个文件.
直接排序,正确的答案一定是某个长度最短的和某个最长的连在一起.
#include <algorithm>
#include <iostream>
#include <string>
#include <stdio.h>
#include <memory.h> namespace cc
{
using std::cin;
using std::cout;
using std::endl;
using std::move;
using std::sort;
using std::string; int cmp(const string &a, const string &b)
{ return a.length() < b.length();
} const int N = ; void solve()
{
int n;
cin >> n;
getchar();
getchar();
int tt = ;
while (n--)
{
if (tt != )
cout << endl;
++tt;
string strs[N];
int total = ; string s;
int totalLength = ;
while (getline(cin, s))
{
if (s.length() == )
break;
strs[total++] = s;
}
sort(strs, strs + total, cmp);
totalLength = strs[].size() + strs[total - ].size();
int vis[N];
for (int i = ;; i++)
{
memset(vis, , sizeof(vis));
string temp = strs[i] + strs[total - ];
int count = ;
//vis[i] = vis[total - 1] = 1;
for (int j = ; j < total; j++)
{
for (int k = ; k < total; k++)
{
if (vis[j] || vis[k] || k == j || strs[j].length() + strs[k].length() != totalLength)
continue;
if (strs[k] + strs[j] == temp || strs[j] + strs[k] == temp)
{
vis[j] = vis[k] = ;
++count;
break;
}
}
}
if (count == total / )
{
cout << temp << endl;
break;
}
else
{
memset(vis, , sizeof(vis));
string temp = strs[total - ] + strs[i];
count = ;
for (int j = ; j < total; j++)
{
for (int k = ; k < total; k++)
{
if (vis[j] || vis[k] || k == j || strs[j].length() + strs[k].length() != totalLength)
continue;
if (strs[k] + strs[j] == temp || strs[j] + strs[k] == temp)
{
vis[j] = vis[k] = ;
++count;
break;
}
}
}
if (count == total / )
{
cout << temp << endl;
break;
}
}
}
}
} } // namespace cc int main()
{
#ifndef ONLINE_JUDGE
freopen("/Users/caicai/in", "r", stdin);
#endif // !ONLINE_JUDGE cc::solve(); #ifndef ONLINE_JUDGE while (true)
;
#endif // !ONLINE_JUDGE
return ;
}
uva-10132-排序的更多相关文章
- UVa 11039 (排序+贪心) Building designing
白书上的例题比较难,认真理解样例代码有助于提高自己 后面的练习题相对简单,独立思考解决问题,增强信心 题意:n个绝对值各不相同的非0整数,选出尽量多的数排成序列,使得该序列正负交错且绝对值递增. 解法 ...
- UVa 1611 (排序 模拟) Crane
假设数字1~i-1已经全部归位,则第i到第n个数为无序区间. 如果i在无序区间的前半段,那么直接将i换到第i个位置上. 否则先将i换到无序区间的前半段,再将i归位.这样每个数最多操作两次即可归位. # ...
- UVa 10132 - File Fragmentation
题目大意:有n个相同的文件,每个文件从中间分为两半,现在给你这2n个文件碎片,求原来完整的文件. 找出文件碎片长度的最大值和最小值,二者相加可得到原来文件的长度len.然后逐个进行拼接,将拼接后长度等 ...
- Uva 10305 给任务排序
题目链接:https://uva.onlinejudge.org/external/103/10305.pdf 紫书P167 拓扑排序. dfs——从一个点出发,dfs 与之相连的所有点,把本身放入到 ...
- uva 10905 Children's Game (排序)
题目连接:uva 10905 Children's Game 题目大意:给出n个数字, 找出一个序列,使得连续的数字组成的数值最大. 解题思路:排序,很容易想到将数值大的放在前面,数值小的放在后面.可 ...
- POJ 1002 UVA 755 487--3279 电话排序 简单但不容易的水题
题意:给你许多串字符串,从中提取电话号码,输出出现复数次的电话号码及次数. 以下是我艰难的AC历程:(这题估计是我刷的题目题解次数排前的了...) 题目不是很难理解,刚开始想到用map,但stl的ma ...
- UVA 11039-Building designing【贪心+绝对值排序】
UVA11039-Building designing Time limit: 3.000 seconds An architect wants to design a very high build ...
- UVa 10905 - Children's Game 排序,题目没有说输入是int 难度: 0
题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...
- UVA 10026 Shoemaker's Problem 鞋匠的难题 贪心+排序
题意:鞋匠一口气接到了不少生意,但是做鞋需要时间,鞋匠只能一双一双地做,根据协议每笔生意如果拖延了要罚钱. 给出每笔生意需要的天数和每天的罚钱数,求出最小罚钱的排列顺序. 只要按罚款/天数去从大到小排 ...
- UVA.10305 Ordering Tasks (拓扑排序)
UVA.10305 Ordering Tasks 题意分析 详解请移步 算法学习 拓扑排序(TopSort) 拓扑排序的裸题 基本方法是,indegree表示入度表,vector存后继节点.在tops ...
随机推荐
- DRP端口描述
DRP端口描述 1.信息来源 2.端口描述
- PHP-不同Str 拼接方法性能对比
问题 在PHP中,有多种字符串拼接的方式可供选择,共有: 1 . , .= , sprintf, vprintf, join, implode 那么,那种才是最快的,或者那种才是最适合业务使用的,需要 ...
- Micro QR 和QR码
QRcode.com 什么是QR码 QR码的种类 如何导入 QR码的成功之路 常见问题解答 咨询 Language Micro QR码 返回 QR码的种类 首页 二维码上只有一个定位图案,这就是M ...
- 卡尔曼滤波器实例:跟踪自由落体运动:设计与Matlab实现
[首发:cnblogs 作者:byeyear Email:byeyear@hotmail.com] 本文所用实例来自于以下书籍: Fundamentals of Kalman Filter ...
- 【springboot】之 解析@EnableWebMvc 、WebMvcConfigurationSupport和WebMvcConfigurationAdapter
springboot默认格式化日期只需要在application文件中配置 spring.jackson.date-format= yyyy-MM-dd HH:mm:ss spring.jackson ...
- 【支付专区】之微信支付构建请求参数xml
/** * <p>Desc:weChat构建请求参数</p> * <p>参数名ASCII码从小到大排序(字典序)</p> * @param params ...
- C++11--20分钟了解C++11 (上)
20分钟了解C++ 11 1 初始化列表 Initializer List //C++ 03中用初始化列表初始化数组 int arr[4] = {3, 2, 4, 5}; vector<int& ...
- Underscore.js部分讲解
underscore是非常好用的封装库,大小只有4KB,大多插件都是以underscore为基础: underscore分5大部分:集合:数组:函数:对象:工具 集合:集合就是伪数组,虽然长的和数组一 ...
- 部署redis5.0.3
一.准备环境 1.下载 # wget http://download.redis.io/releases/redis-5.0.3.tar.gz [root@localhost ~]# wget htt ...
- 简单的一个MySQL类的实现:
'''定义MySQL类:1.对象有id.host.port三个属性2.定义工具create_id,在实例化时为每个对象随机生成id,保证id唯一3.提供两种实例化方式,方式一:用户传入host和por ...