首页 > 其他分享 >题解:CF1032B Personalized Cup

题解:CF1032B Personalized Cup

时间:2024-08-20 17:39:59浏览次数:3  
标签:Cup CF1032B 题解 len int 字符串 Personalized

本题题意

给一个字符串,将其分成等长度的字符串,但是分的行数不能超过 \(5\) 行,每行的长度不得超过 \(20\)。如果无法等分的,则用 * 来补足长度。输出在行数最小的前提下,列数最少的一种方案。

思路

由于字符串范围最多也就 \(20\times5\),直接分类讨论即可。

AC code

#include<bits/stdc++.h>
using namespace std;
string s;
void q(int l,int len){ //输出行和每段长度
	cout<<l<<" ";
	int h=len/l;
	if(len%l>0) h++;//注意:如果len不整除l,则要+1
	cout<<h<<endl;
}
void out(int a,int b){//输出s的a到b项
	a--;
	b--;
  //由于字符串存储是从0开始的,a和b要往前一位
	for(int i=a;i<=b;i++){
		cout<<s[i];
	}
	cout<<endl;
}
void out_2(int a,int b){//输出有星号的
	cout<<"*";
	out(a,b);
}
int main(){
	cin>>s;
	int len=s.size();
	if(len<=20){//输出一行的情况
		q(1,len);
		out(1,len);
	}else if(len<=40){//输出两行的情况
		q(2,len);
		if(len%2==0){
			out(1,len/2);
			out(len/2+1,len);
		}
		else{
			out_2(1,len/2);
			out(len/2+1,len);
		}
	}else if(len<=60){//输出三行的情况
		q(3,len);
		if(len%3==0){
			out(1,len/3);
			out(len/3+1,len/3*2);
			out(len/3*2+1,len);
		}else if(len%3==1){
			out_2(1,len/3);
			out_2(len/3+1,len/3*2);
			out(len/3*2+1,len);
		}else{
			out_2(1,len/3);
			out(len/3+1,len/3*2+1);
			out(len/3*2+2,len);
		}
	}else if(len<=80){//输出四行的情况
		q(4,len);
		if(len%4==0){
			out(1,len/4);
			out(len/4+1,len/2);
			out(len/2+1,len/4*3);
			out(len/4*3+1,len);
		}else if(len%4==1){
			out_2(1,len/4);
			out_2(len/4+1,len/2);
			out_2(len/2+1,len/4*3);
			out(len/4*3+1,len);
		}else if(len%4==2){
			out_2(1,len/4);
			out_2(len/4+1,len/2-1);
			out(len/2,len/4*3+1);
			out(len/4*3+2,len);
		}else{
			out_2(1,len/4);
			out(len/4+1,len/2);
			out(len/2+1,len/4*3+2);
			out(len/4*3+3,len);
		}
	}else if(len<=100){//输出五行的情况
		q(5,len);
		if(len%5==0){
			out(1,len/5);
			out(len/5+1,len/5*2);
			out(len/5*2+1,len/5*3);
			out(len/5*3+1,len/5*4);
			out(len/5*4+1,len);
		}else if(len%5==1){
			out_2(1,len/5);
			out_2(len/5+1,len/5*2);
			out_2(len/5*2+1,len/5*3);
			out_2(len/5*3+1,len/5*4);
			out(len/5*4+1,len);
		}else if(len%5==2){
			out_2(1,len/5);
			out_2(len/5+1,len/5*2);
			out_2(len/5*2+1,len/5*3);
			out(len/5*3+1,len/5*4+1);
			out(len/5*4+2,len);
		}else if(len%5==3){
			out_2(1,len/5);
			out_2(len/5+1,len/5*2);
			out(len/5*2+1,len/5*3+1);
			out(len/5*3+2,len/5*4+2);
			out(len/5*4+3,len);
		}else{
			out_2(1,len/5);
			out(len/5+1,len/5*2+1);
			out(len/5*2+2,len/5*3+2);
			out(len/5*3+3,len/5*4+3);
			out(len/5*4+4,len);
		}
	}
    //最后说一句:一定要亲自测一遍!不然最后输出可能会存在问题!
    //又臭又长(((
	return 0;
}

标签:Cup,CF1032B,题解,len,int,字符串,Personalized
From: https://www.cnblogs.com/bubble-sort/p/18369932

相关文章

  • 题解:P9944 [USACO21FEB] Comfortable Cows B
    思路由于每次输入\(x\)和\(y\)只改变其上下左右的值,所以每次只要更新其相邻的值即可。当某个位置相邻的奶牛数达到\(3\)时,舒适度加一。当某个位置相邻的奶牛数达到\(4\)时,舒适度减一。注意:每增加一头奶牛以后,如果该位置相邻正好有三头奶牛,则舒适度也要加一。ACcod......
  • 题解:P8690 [蓝桥杯 2019 国 B] 填空问题
    试题\(\mathrm{A}\):平方序列枚举\(x\),通过\(x^2-2019^2\)求出它们的公差\(c\),再计算\(x^2+c\)是否为完全平方数即可。code#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;signedmain(){ for(inti=2020;1==1;i++){ intc=i*i-2019*2019; i......
  • Android逆向题解-攻防世界-Ph0en1x-100
    jeb反编译apk主要代码是if那个判断,getFlag取字符串用getSecret加密,和输入字符串encrypt加密后再getSecret加密,进行比较,两边同样都是getSecret加密,那比较可以简化成this.getFlag()==this.encrypt(s)。也就是输入字符经过encrypt加密后等于getFlag的字符串即可。protec......
  • ABC077D / ARC084B Small Multiple 题解
    AtCoderLuogu考虑数位和的来源:从\(1\)开始进行若干次\(\times10\)和\(+1\)操作可以得到任意正整数,此时\(+1\)操作的次数为其数字和。注意不能连续进行\(10\)次及以上\(+1\)操作。不难列出转移,设\(f(i)\)表示\(i\)的数字和,则:\(f(10i)=f(i)\)\(f(i+1)=......
  • [AtCoder - tdpc_game] :ゲーム 题解
    [AtCoder-tdpc_game]:ゲーム题解一道小清新\(dp\)题。定义\(dp_{i,j}\)为第一堆山还有\(i\)个物品,第二堆山还有\(j\)个物品,すぬけ君能取得物品的最大价值。由于只能取两座山最上面的物品,假设当前两座山分别有\({x,y}\)个物品,すぬけ君选后只能有两种情况,分别为\(d......
  • 题解:P10279 [USACO24OPEN] The 'Winning' Gene S
    思路建议升蓝。算法一考虑暴力。我们先枚举\(K,L\),考虑如何求解。直接枚举每一个\(K\)-mer,再枚举里面的每一个长度为\(L\)的子串,找到最大的子串并在起始部分打一个标记。最后直接看有几个地方被打标记就行。时间复杂度:\(O(n^4)\)。预计能过测试点\(1-4\)。算法二我们......
  • [题解]P4052 [JSOI2007] 文本生成器
    P4052[JSOI2007]文本生成器正难则反,我们发现用总字符串个数\(26^m\),减去不可读的字符串个数,就是答案。要使一个字符串不可读,就不能让任何模式串在其中出现。如果某个主串的第\(i\)位与自动机的节点\(j\)相匹配,那么如果状态\(j\)包含模式串(即有一个前缀是一个模式串),那么不管主......
  • 关系代数、函数依赖、Armstrong公理及软考试题解析
    注:本文面向于软考高级—系统架构设计师,具体来说是数据库部分,知识点偏零碎化。想要系统学习数据库原理的,可考虑去看《数据库原理》,清华大学出版社或其他出版社皆可。概述概念关系,就是二维表。特性:列不可分性:关系中每一列都是不可再分的属性,即不能出现如下复合属性行列无序性:......
  • P1543 [POI2004] SZP 题解
    P1543[POI2004]SZP题解传送门。题目简述有\(n\)个人,每个人都会监视另一个人,要求选出尽可能多的同学,使得选出的每一名同学都必定会被监视到。且选出的同学不可再监视其他人。思路简述因为任意一个人只能被另一个人管,那么就想到,如果没人管的同学就不能被选(不被监视)。若某......
  • 题解:[TJOI2018] 游园会
    所谓dp套dp,实际上就是在说求解一个dp的过程中,我们用另一个dp求解出他应该从某个状态转移到另一个状态。考虑一下这道题,首先求LCS的dp如下:\[dp_{i,j}=\max\{dp_{i-1,j},dp_{i,j-1},dp_{i-1,j-1}+[s_i==t_j]\}\]显然,当\(i\)固定的时候,\(dp_{i,j}\)是单调不降的,且相邻两......