CF551B
题目链接:http://codeforces.com/contest/551/problem/B
题目大意:给出字符串a, b, c。试图合理的安排a的字母顺序,使其中有尽可能多的与 c 或 b 相同的不重叠的子串.。
解题思路:You just need some power! 记录 a, b, c 中各个字母的个数,然后枚举 b 能出现的所有次数,再算出 c 相应的能出现的次数,两者相加即为一个ans,最终答案即为ans最大的时候对应的情况。最坏情况下的时间复杂度:O(|a| * 26).
AC代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<functional>
#include<list>
#include<map>
#include<istream>
#include<ostream>
#include<queue>
#include<set>
#include<sstream>
#include<string>
#include<stack>
#include<string>
#include<vector>
using namespace std;
typedef long long ll;
typedef pair<int,int> P;
const int maxn=+,inf=0x7ffffff;
int ca[],cb[],cc[];
int main(){
string a,b,c;
cin>>a;
cin>>b;
cin>>c;
for(int i=;i<a.size();i++) ca[a.at(i)-'a']++;
for(int i=;i<b.size();i++) cb[b.at(i)-'a']++;
for(int i=;i<c.size();i++) cc[c.at(i)-'a']++;
bool ending=false;
int ans=;
P as;
for(int i=;;i++){
int ta=;
int tempa[];
for(int j=;j<;j++)
tempa[j]=ca[j];
for(int j=;j<;j++){
if(tempa[j]<cb[j]*i){
ending=true;
break;
}
tempa[j]-=(cb[j]*i);
}
if(ending) break;
ta+=i;
int ti=inf;
for(int j=;j<;j++){
int ttt;
if(cc[j]>){
int ttt=tempa[j]/cc[j];
ti=min(ti,ttt);
}
}
if(ti!=inf){
ta+=ti;
}
if(ta>ans){
ans=ta;
if(ti!=inf)
as=make_pair(i,ti);
else
as=make_pair(i,);
}
}
int num_b=as.first,num_c=as.second;
for(int i=;i<;i++){
ca[i]-=(cb[i]*num_b);
ca[i]-=(cc[i]*num_c);
}
string ret;
while(num_b>){
ret+=b;
num_b--;
}
while(num_c>){
ret+=c;
num_c--;
}
for(int i=;i<;i++){
while(ca[i]>){
ret+=(i+'a');
ca[i]--;
}
}
cout<<ret<<endl;
return ;
}
CF551B的更多相关文章
随机推荐
- CF--思维练习-- CodeForces - 215C - Crosses(思维题)
ACM思维题训练集合 There is a board with a grid consisting of n rows and m columns, the rows are numbered fr ...
- 深度优先搜索理论基础与实践(java)
概论 深度优先搜索属于图算法的一种,是一个针对图和树的遍历算法,英文缩写为 DFS 即 Depth First Search.深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓 ...
- python进程/线程/协程
一 背景知识 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所 ...
- idea配置tomcat运行参数,防止中文乱码和内存问题
点击选择 Edit Configurations... 修改 VM options ,参数在最后可直接复制 -Xms550m -Xmx1250m -Dfile.encoding=UTF-8
- UML笔记之类图
1.类与类之间关系在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合( ...
- andorid jar/库源码解析之EventBus
目录:andorid jar/库源码解析 EventBus: 作用: 用于不同Activity,Service等之间传递消息(数据). 栗子: A页面:onCreate定义 EventBus.ge ...
- golang之reflect
reflect,反射. 利用reflect,可以得到一个struct的相关信息. package main import ( "fmt" "reflect" ) ...
- 学习bootstarp第一天
一.下载bootstarp(https://v3.bootcss.com/),解压并将文件放入自己项目里去使用即可 二.安装bootstarp <!DOCTYPE html> <h ...
- C# 基础知识系列- 17 小工具优化
0. 前言 不知道有没有动手能力强的小伙伴照着上一篇的内容写过程序呢?如果有的话,应该会在使用的时候发现以下几个问题: 每次启动都需要经过漫长的时间去遍历磁盘里的文件目录 因为数据是用的字典保存的,所 ...
- zookeeper(分布式协调框架)简介与集群搭建
ZooKeeper 的由来: Zookeeper最早起源于雅虎研究院的一个研究小组.在当时,研究人员发现,在雅虎内部很多大型系统基本都需要依赖一个类似的系统来进行分布式协调,但是这些系统往往都存在分布 ...