C. Naming Company 贪心
来源:互联网 发布:接单软件 编辑:程序博客网 时间:2024/06/06 20:08
转自:http://blog.csdn.net/ever_glow/article/details/71917393
题目大意:
有两个人,各自有一个字母集合,每个集合里的字母允许重复,而且两个人集合里的字母个数相同,现在他们要给一个公司取名字,名字的长度就是名字中字母的个数,保证名字长度和他们所有拥有的集合里的字母个数相同,他们轮流选一个字母放到名字字符串中的一个位置,而且一旦某个人从他的字母集合中取出一个字母,这个字母就会从他的字母集合中被排除,两个人轮流进行游戏,先进行游戏的人希望该名字尽量升序排列,后进行游戏的人希望名字尽量降序排列,他们两个轮流进行游戏,直到填满这个名字字母序列;(字母仅为小写字母)
基本思路:
(这个题目的意思里是两个人互相都知道对方的字母集合吧)首先第一个人想让名字尽量升序,所以按照从小到大的顺序对他的字符串进行排序,第二个人想要降序,所以将他的字母集合从大到小排序;然后开始轮流放置字母到名字字符串的某个位置,注意每一次放之前要比较当前从头开始记录位置的字母字典序大小:详细思路见代码注释;
tinkoffzscoder
fzfsirk
xxxxxxxxxxxx
xxxxxx
ioiimo
ioi
代码如下:
#include<bits/stdc++.h>
using namespace std;
const int maxn = 300000+10;
char s1[maxn];
char s2[maxn];
char s[maxn];
bool cmp1(char c1,char c2)
{
return c1<c2;
}
bool cmp2(char c1,char c2)
{
return c1>c2;
}
int main()
{
scanf("%s",s1);
scanf("%s",s2);
int l=strlen(s1);
sort(s1,s1+l,cmp1);
sort(s2,s2+l,cmp2);
int s1_s=0,s1_e=l%2==0?l/2:l/2+1;
int s2_s=0,s2_e=l/2;
s1_e--;
s2_e--;
int s_s=0,s_e=l-1;
for(int i=0;i<l;i++)
{
if(i&1)//第二个人放置;
{
if(s2[s2_s]>s1[s1_s]) //当前第二个最前面的字母字典序大于第一个人最前面的,要想降序最多,直接放在名字字符串当前未放的最前面的位置;
s[s_s++]=s2[s2_s++];
else
s[s_e--]=s2[s2_e--]; //当第二个人的字母小的时候,因为第一个是升序,第二个人是降序,所以以后第一个人最前面的字母一直比第二个人大
//第二个人想要降序最多,肯定放置当前未放位置的最后面;
}
else//情况类比第二个人放的情况;
{
if(s1[s1_s]<s2[s2_s])
s[s_s++]=s1[s1_s++];
else
s[s_e--]=s1[s1_e--];
}
}
s[l]='\0';//勿忘;
printf("%s\n",s);
return 0;
}
- C. Naming Company 贪心
- C. Naming Company 贪心
- Codeforces 794C Naming Company 贪心
- Codeforces 794 C. Naming Company (贪心)
- codeforces C. Naming Company 贪心+博弈
- codeforces 794C Naming Company(贪心)
- Codeforces Round #414 C. Naming Company 贪心
- C. Naming Company
- C. Naming Company 几何
- C. Naming Company
- Codeforces 794C. Naming Company
- codeforces 794C C. Naming Company
- 【Codeforces Round #414 C Naming Company】
- codeforces Naming Company 很思维题最优想法
- 山东省第八届ACM省赛J题company(C-DP,贪心)
- CF#321-B - Kefa and Company-贪心-
- naming
- naming
- 各种前端问题汇总,持续更新中.........
- python基础set
- 二分查找及其变形整理
- vue2.0双向绑定不起效果
- 如何从商品详情页面下载源图片
- C. Naming Company 贪心
- 调试 Dockerfile
- MySQL笔记图
- js 异步实现与编程
- centOS7,vsftpd,更改默认目录后nginx访问失败,403forbidden解决
- js实现增删改查
- bootstrapTable 插件使用注意点
- A
- 欢迎使用CSDN-markdown编辑器