UVA 1610

UVa 1610 聚会游戏(Party Games) 题意: 输入一个n个字符串的集合D,找一个长度最短的字符串(不一定在D中出现)S, 使得D中恰好一半串小于等于S,另一半串大于S,如果有多解,输出字典序最小的解。 分析: vector 存,排序,取中间的两个,然后把第一个逐渐变大,例如 ABC -> AC -> B 这样,一次次检验和第二个的关系,一旦大于了就停止循环,要注意的是 如果是 AZC 按照算法会变成 A(Z+1) Z + ... 阅读详情

题目概要:输入一个n(2<=n<=1000&&n为偶数)个字符串的集合D,找一个长度最短的字符串S(不一定在D中出现),使得D中一半的字符串小于等于S,另一半大于S。

如果有多解,输出字典序最小的解。


一道注重细节的搜索题。

先排序,然后取中间两个进行处理。

WA了很多次,看了网上的题解,但是觉得题解if那么多情况,那是得多仔细才能搞出来。于是我宁愿牺牲一点效率也要把处理的难度降下来,用最简单的暴搜,逐个遍历26个字母,挑出第一个满足的即可。这里的搜索是深搜,采用的是直接迭代。

废话不多说,直接上代码:

#include<stdio.h>
#include<string>
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

string solve(const string& str1, const string& str2)
{
	int minsize = str1.size() < str2.size() ? str1.size() : str2.size();
	for (int i = 0;i != minsize;++i)
	{
		if (str1[i] != str2[i])
		{
			int index = i;
			string ret = str1.substr(0, i);
			for (char k = str1[index];k <= 'Z';++k)
			{
				string temp = ret;
				temp += k;
				if (temp >= str1&&temp < str2)
					return temp;
				if (k == 'Z')
				{
					ret += str1[index];
					k = 'A' - 1;
					if (++index == str1.size())
						break;
				}
			}
		}
	}
	return str1;
}
int main()
{
	int n;
	while (cin >> n && n)
	{
		vector<string> w;
		int cnt = n;
		while (cnt--)
		{
			string str;
			cin >> str;
			w.push_back(str);
		}
		sort(w.begin(), w.end());
		cout << solve(w[(n / 2) - 1], w[n / 2]) << "\n";
	}
	return 0;
}
很多人错都不知道错在哪,下面我给几个测试用例,这几个加上UVA给的能过的话,应该可以AC

input

2

AZZZCCC

B

2

AZZ

B

2

FIRD

FIREDIE

2

JEOAAA

JERAAS

0

OUTPUT


AZZZD

AZZ

FIRD

JEP





LabVIEW机器视觉通用软件 LabVIEW 通用视觉一款仿C模式的思想与方法 全网最精简零基础+通用视觉全套视频教程 只想把LabVIEW当作一种兴趣,结果却当成了职业 http://t.elecfans.com/c1181.html 本次(开源 )针对有一定视觉基础或项目开发经验的工程师量身打造视觉通用性系统(完全仿面向对象的原理),相对于一般的非标框架更具功能性,有效的解决复杂项目开发过程中的思路瓶颈。 LabVIEW通用视觉系统:通用软件可快速解决大部分简单的视觉开发项目,帮助众多软件工程师解决在非标视觉软件开发中的繁琐过程问 阅读详情

相关推荐

群晖NAS下docker安装MySql

本文将一步一步讲解如何在群晖NAS的docker中启用一个MySQL容器 , 算是初学者对问题解决的一个记录.

qq_46375248的博客 5976

uva 1610——Party Games

题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=51171 题意:给你n个串的集合D,然后求一个长度最短的串s,使得使得s大于等于D中一半的串,又同时小于另一半串。 思路:直接暴力。先对n个串排序,然后选择第n/2-1个串,从第一个字母开始找,在后面添加26个字母枚举,直至找到目标串。

坚持不懈 562

CH32V IAP跳转避坑指南:为什么你的APP跳不过去?从mstatus寄存器配置到函数属性详解

本文深入解析CH32V系列MCU的IAP跳转机制,从mstatus寄存器配置到函数属性优化,详细讲解如何避免APP跳转失败。文章涵盖地址准备、模式切换、跳转执行等关键步骤,并提供调试技巧与实战案例,帮助开发者快速解决CH32V IAP跳转中的常见问题。

weixin_30955617的博客 139

UVa:1610 Party Games(字符串处理)

题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=845&page=show_problem&problem=4485 题意:输入一个n(2 ≤n≤1000,n是偶数)个字符串的集合D,找一个长度最短的字符串(不一定在D中出现)S,使得D中恰好一半串小于等于S,另一半串大于

nullptr 620

Omnibox 2.11 NAS部署指南:家庭影音中枢的轻量化落地实践

家庭影音平台本质是本地化内容调度中枢,其核心在于聚合NAS媒体库、统一管理直播/IPTV/音频/视频等多源内容,并通过智能元数据匹配与硬解加速实现零门槛播放体验。技术原理上依赖Java轻量Web容器(Jetty)、SQLite嵌入式数据库双缓存架构,以及宿主机FFmpeg动态链接与HTTP/2直播代理治理能力。该方案显著降低4K播放卡顿、EPG加载失败、海报缺失等高频问题,适用于群晖、飞牛、绿联等主流NAS设备,尤其适配ARM64芯片与Realtek网卡等国产硬件生态。本文聚焦Omnibox 2.11在真实

weixin_30846347的博客 469

基于ENVI5.3的Landsat条带去除、辐射定标、大气校正

基于ENVI5.3的Landsat条带去除、辐射定标、大气校正坏带修复辐射定标大气校正 坏带修复 1.下载landsat_gapfill插件,放入“安装目录\Exelis\ENVI53\extensions”,重启ENVI 2. 加载拟处理文件(MTL.txt格式) 3.打开landsat_gapfill 4.选择存放位置并命名文件 5.选择处理文件 辐射定标 1.选择工具Radiometric Calibration 2.选择已修复坏带文件 3.修改参数,选择输出位置及命名文件 大气校正 1

u010198950的博客 1万+

UVA1610 聚会游戏 Party Games 题解

个人认为一个比较好理解的解法. 思路: 先对所有字符串进行排序. 只需考虑中间那两个串.先预先判断一下两个串的相同部分,让下标k预先到两个串不同的部分. 设第n/2个串为a串,它下一个串为b串 当遇到不同的字符直接跳出循环,如果k到了a串的最后一个字符都还没发现不同的,那么a串本身就满足条件(此处没考虑k是否超出b串的长度,不过最后提交上去也ac了,代码如下 int i=n/2; string ans; ...

qq_34920482的博客 700

PHP 对接建行生活订单推送接口

php对接建行订单推送

qq_43647026的博客 560

UVA1610 聚会游戏 Party Games

写到这里,我觉得我的代码肯定没问题,就提交了,但是中间出错了,后来借助网上的样例算是知道了哪里错了,就是我们去掉构造字符串末尾连续的Z的那个步骤,那个步骤之前需要判断一下整个字符串是不是都是Z,如果都是Z还执行后面的操作很显然就会出错,如果都是Z,那么说明当前的长度已经达到最大的字典序了,答案不可能是比当前长度更长的字符串了,这时退出循环就可以了,这样这个题就完成了,虽然没有一次性写对,但是觉得我的思路还是不错的,只是细节还是没有做全面,

m0_73035684的博客 243

基于Landsat-8数据的山西省吕梁市地表温度反演研究过程(大气校正法)

1.数据下载:本实验采用的数据是 ①从地理空间数据云下载的来自landsat8 卫星,云量<=1%,时间为2017年5月12日的山西省吕梁市影像数据。为全面覆盖吕梁市,选用了两片影像。 ②吕梁市边界矢量图 2.数据预处理 ...

weixin_45747376的博客 6601

使用C#调用百度地图并实现坐标点的设置以及读取

使用C#调用百度地图申请百度地图密钥以及查看百度API程序实现功能:最终图利用webBrowser控件展示地图 申请百度地图密钥以及查看百度API 网址:http://lbsyun.baidu.com/apiconsole/key#/home 网址:http://lbsyun.baidu.com/jsdemo.htm#c1_3 程序实现功能: 1、输入网址那可以调用本地的html文件,也可以访问其他网站 2、输入坐标、添加坐标按钮,可以将坐标值传入html文件中,显示在经纬度的文本框中 3、定位按钮可以

qq_39261042的博客 3734

UVA-1610

这个题感觉好绕,最后绕出来了,发现uDebug里面的也有错?? 直接暴力求解法就出来了,不用比较啥的。 如果用注释掉的“比较法”代码,估计错就错在是’A’到’Z’的序列,如果超过Z还要长度加一的。 #include&lt;bits/stdc++.h&gt; using namespace std; int main(void){ int n; while(scanf("%d",&...

wrnge的博客 218

SAC-IA算法点云粗配准

SAC-IA(Sample Consensus Initial Alignment)是PCL库中的一种初始点云配准算法,它使用特征匹配和RANSAC(随机抽样一致性)框架来估计两个点云之间的初始刚性变换。其目标是通过特征描述符找到一组可靠的匹配点对,并使用这些点对估计初始对齐的变换矩阵。

twnkie的博客 1445

[UVa 1610] 聚会游戏(Party Games)

Judge:https://vjudge.net/problem/UVA-1610 题意:输入一些字符串,找一个长度最短的字符串(不一定是输入的字符串),使得输入的字符串中有一半小于等于该字符串,另一半大于该字符串。若有多解,输出字典序最小的解。

StarlitNight的博客 653

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

uva 1610 Party Games

题目大意:就是给定n个不同的名字,n为偶数,现在问使得其中一半小于或者某个字符串,而另一半大于这个字符串的长度最小的(若有多解,则字典序最小)的串是什么。 解题:题目意思很好懂,做题步骤是先排序,然后查找满足题意的串 这里主要是要注意一点。。。一定要先考虑长度,再考虑字典序。 同时注意到  最终的串的前缀是mid-1和mid+1串的共同前缀。不同和陷阱也就是在后面的字符该如何确定。。。 设

最爱她! 1836

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

uva1610 聚会游戏(细节处理)

uva1610 聚会游戏(细节处理) 输入一个n(n<=1000且为偶数)个字符串的集合D,找一个长度最短的字符串(不一定要在D中出现)S,使得D中恰好一半字符串小于等于S,另一半大于S。如果有多解,输出字典序最小的解。 首先找到两个中位字符串S1和S2。显然,答案S必须夹在S1和S2之间。由于要找最短的字符串,我们可以用迭代加深的思路,根据|S|迭代加深枚举。每次枚举长度时,...

161

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

UVA 1610 Party Games

https://vjudge.net/problem/UVA-1610 题目 给偶数个互不相同的仅包含大写字母的字符串,要求找出最短的仅包含大写字母的字符串,使一半的字符串小于等于它,一半的字符串大于它。 字符串A小于字符串B有以下情况: 1.$K=\min\{len(A),len(B)\}, \exists 0\leqslant i < K, \forall 0<=...

176

UVa 1610 聚会游戏

https://vjudge.net/problem/UVA-1610 题意:输入一个n个字符串的集合D,找一个长度最短的字符串S,使得D中恰好有一半串小于等于S,另一半串大于S。 思路:先拍序,然后选择中间的两个,比较他们就可以了。可以用枚举法来比较。 1 #include<string> 2 #include<iostream> 3 #inclu...

weixin_30802171的博客 81

Party Games UVA - 1610

点击打开链接

356

习题 8-2 聚会游戏(Party Games, Mid-Atlantic 2012, UVa1610)

原题链接:https://vjudge.net/problem/UVA-1610 分类:贪心法 备注:注意字母范围 #include<bits/stdc++.h> using namespace std; const int maxn=1005; int n; string s[maxn]; int main(void){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); while(cin&g

TK_wang_的博客 364

UVa1610 习题8-2 聚会游戏

原题链接: UVa-1610 题目大意:  输入一个n个(偶数个)字符串的集合D,输出一个字符串S,使得S尽量短的前提下满足大于等于一半的D,小于另一半的D。 参考博客: http://blog.youkuaiyun.com/yeyeyeguoguo/article/details/45047301 http://blog.youkuaiyun.com/wcr1996/article/detai

Miracle42的博客 386

UVA1610:Party Games(聚会游戏)

作者:xq的acm之路题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4485题目大意:给出n个字符串,求一个字符串,这个字符串比n中的一半的字典序小,大于等于另一半。n为偶数思路:排序,然后一个个字符的比较就行,,,刚开始用if讨论情况,漏了几种

xqacmer 861

习题8-2 聚会游戏 UVa1610

1.题目描述:点击打开链接 2.解题思路:这道题把我坑的快死。。。由于紫书上注释了一句话:”本题看似简单,实际暗藏陷阱,需要考虑细致,周全“,我开始还不以为然,经过了若干次WA的血的教训才让我发现,这道题的细节还真是多的令我头疼:需要分好多情况:两个串的位置i后面都有字母时,枚举到某个串的最后一个位置时,还要注意如果是字母‘Z’的这个最隐蔽的特殊情况。。。到了最后对拍都找不出任何能够hack我程

Skyline 753

uva 1610

题意:给一个数字n。输入n串字符。你需要给出一串字符x,可以把n串字符分为两份。一份 x。首先考虑x最短,其次考虑字典序最小。 思路:最先可以想到的是,把字符串排序,找到最中间的两串。接下来比较麻烦的是如何通过比较两串得到x。 设s1, s2为中间的两串字符串且s1 一:比较的字符是否是s1串的最后一个。 二:比较的字符是否差别是大于一且比较字符为s2的最后一个字符:如s1 = ABCC

DickensTone的博客 410

uva 1610 Party Games

这是第八章的第二个习题。这是细节上的问题, 想清楚不太难的。。。 #include #include using namespace std; string haha[1003]; int number; string str,s; char ans[100]; void work(); int main() { /*freopen("1610.in","r",stdin); freop

Lighting_的博客 433
上一篇: UVA 10603 了解搜索与图论的联系
下一篇: UVA 437 DAG最长路
ziscor
博客等级 码龄12年 3粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值