码迷,mamicode.com
首页 > 其他好文 > 详细

UVa 1610 Party Games(思维)

时间:2016-05-22 20:03:29      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:

题意: 给出一系列字符串,构造出一个最短字符串(可以不在集合中)大于等于其中的一半,小于另一半。

析:首先找出中间的两个字符串,然后暴力找出最短的字符串,满足题意。

 1 #include <iostream>
 2 #include <string>
 3 #include <vector>
 4 #include <algorithm>
 5 #include <cstdio>
 6 
 7 using namespace std;
 8 vector<string> v;
 9 
10 int main(){
11 //    freopen("in.txt", "r", stdin);
12     int n;
13     while(scanf("%d", &n) && n){
14         v.clear();
15         string s;
16         for(int i = 0; i < n; ++i){
17             cin >> s;
18             v.push_back(s);
19         }
20 
21         sort(v.begin(), v.end());
22         int len = v.size();
23         string s1 = v[len/2 - 1];//找出中间的两个
24         string s2 = v[len/2];
25 
26         len = s1.size();
27         int p = 0;
28         string ans = "A";
29         while(p < len){//暴力求解最短的
30             while(ans[p] <= Z && ans < s1)  ++ans[p];
31             if(ans[p] <= Z && ans >= s1 && ans < s2)  break;
32             if(ans[p] != s1[p]) --ans[p];
33             ans += A;
34             ++p;
35         }
36         cout << ans << endl;
37     }
38     return 0;
39 }

 

UVa 1610 Party Games(思维)

标签:

原文地址:http://www.cnblogs.com/dwtfukgv/p/5517482.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!