洛谷刷题C语言:Bold、饱食、公平の意、DOM、

记录洛谷刷题C语言qaq


[COCI2020-2021#6] Bold

题目描述

Paula 给 Daniel 写了一封信,她需要加粗文本的字体,以便视力恶化的 Daniel 阅读。

信可以用 .# 组成的矩阵表示。对于所有信中原有的 #,Paula 需要将其向右下方扩展为 2 × 2 2 \times 2 2×2#

输入格式

第一行两个整数 n , m n, m n,m,表示信的尺寸。

接下来 n n n 行,每 m m m 个字符,表示信的内容。

保证最后一行与最后一列中没有 #

输出格式

n n n 行,每行 m m m 个字符,表示加粗后的信。

样例 #1

样例输入 #1

4 4
....
.#..
....
....

样例输出 #1

....
.##.
.##.
....

样例 #2

样例输入 #2

7 7
.......
.####..
.#...#.
.#...#.
.#...#.
.####..
.......

样例输出 #2

.......
.#####.
.######
.##..##
.##..##
.######
.#####.

样例 #3

样例输入 #3

9 7
.......
.####..
.#...#.
.#...#.
.####..
.#.....
.#.....
.#.....
.......

样例输出 #3

.......
.#####.
.######
.##..##
.######
.#####.
.##....
.##....
.##....

提示

数据规模与约定

对于 100 % 100\% 100% 的数据, 2 ≤ n , m ≤ 1 0 3 2 \le n, m \le 10^3 2n,m103。保证信中只包含 .#


说明

本题分值按 COCI 原题设置,满分 50 50 50

题目译自 COCI2020-2021 CONTEST #6 T1 Bold

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>


int n,m;
char a[1001][1001];
int book[1001][1001]={0};
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			scanf("\n%c",&a[i][j]);
			if(a[i][j]=='#') book[i][j]=1;
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(book[i][j]==1) a[i+1][j]=a[i][j+1]=a[i+1][j+1]='#';
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++) printf("%c",a[i][j]);
		printf("\n");
	}
	return 0;
}

「MCOI-05」饱食

题目背景

兔 21:33:19
改下题目背景啊

兔 21:33:21
要符合SHZY核心价值观!!1

一只书虫仔 21:33:35
改成随机抽 3 个兔兔吃掉!

题目描述

书虫背包里有 n n n 只兔兔,第 i i i 只兔兔被书虫编号为一个由大写字母组成的字符串 S i S_i Si

书虫会 +C+,他用 +C+ 编写出了 random 函数,随机抽取出了三只兔兔。

不过书虫暂时得了神经性厌食症,书虫能吃下这三只兔兔当且仅当:

  • 编号的首字母为 MCOI 中的任意一个。
  • 编号的首字母不能相同。

书虫想问有多少种选择方案使得他能吃下他选的的三只兔兔?

输入格式

第一行一个整数 n n n 代表兔兔个数。

接下来 n n n 行每行一个字符串 S i S_i Si 代表一只兔兔。

输出格式

一行一个整数代表答案。

样例 #1

样例输入 #1

5
MINE
CRAFT
OLYMPIAD
IN
INFORMATICS

样例输出 #1

7

提示

样例 1 解释

有如下 7 7 7 种选择方式:

  • MINECRAFTOLYMPIAD
  • MINECRAFTIN
  • MINECRAFTINFORMATICS
  • MINEOLYMPIADIN
  • MINEOLYMPIADINFORMATICS
  • CRAFTOLYMPIADIN
  • CRAFTOLYMPIADINFORMATICS
数据规模与约定

本题采用捆绑测试。

  • Subtask 1(10 pts): S i S_i Si 首字母均为 M
  • Subtask 2(30 pts): n ≤ 100 n \le 100 n100
  • Subtask 3(60 pts):无特殊限制。

对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 1 0 5 1\le n\le10^5 1n105 1 ≤ ∣ S i ∣ ≤ 11 1 \le |S_i| \le 11 1Si11 S i S_i Si 由大写字母组成。

数据不保证 S i S_i Si 互不相同。

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>


int n;

char s[17];

long long s1, s2, s3, s4;

int main() {
	scanf("%d", &n);
	
	for (int i = 1; i <= n; i ++) {
		scanf("%s", s + 1);
		
		if (s[1] == 'M') s1 ++;
		if (s[1] == 'C') s2 ++;
		if (s[1] == 'O') s3 ++;
		if (s[1] == 'I') s4 ++;
	}
	
	printf("%lld\n", s1 * s4 * (s2 + s3) + s2 * s3 * (s1 + s4));
	
	return 0; 
}

[COCI2012-2013#1] DOM

题目描述

给定一个仅包含大写字母的单词,删除该单词中的以下九个字母: C,A,M,B,R,I,D,G,E \texttt{C,A,M,B,R,I,D,G,E} C,A,M,B,R,I,D,G,E

输入格式

一行一个字符串,表示给定的单词。

输出格式

一行一个字符串,表示删除字母后的字符串。

样例 #1

样例输入 #1

LOVA

样例输出 #1

LOV

样例 #2

样例输入 #2

KARIJERA

样例输出 #2

KJ

提示

【数据范围】

对于 100 % 100\% 100% 的数据,保证 3 ≤ 3 \le 3 单词长度 ≤ 100 \le 100 100

【说明】

本题分值按 COCI 原题设置,满分 50 50 50

题目译自 COCI2012-2013 CONTEST #1 T1 DOM

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>

int main()
{
	char s[1000];
	scanf("%s",&s);
	for(int i=0;i<=strlen(s);i++){
		if(s[i]=='C' || s[i]=='A' || s[i]=='M' || s[i]=='B' || s[i]=='R' || s[i]=='I' || s[i]=='D' || s[i]=='G'|| s[i]=='E')
			continue;
		else
			putchar(s[i]);
	}
	return 0;
}

「EZEC-8」凑数

题目描述

给定 1 1 1 n n n n n n 个正整数,请问能否恰好选择 k k k 个数,使选中的数之和为 s s s(每个数只能用 1 1 1 次)。

输入格式

本题有多组数据

第一行一个正整数 T T T,表示数据组数。

对于每组数据,一行 3 3 3 个正整数 n , k , s n,k,s n,k,s

输出格式

对于每组数据:

输出一行,一个字符串,YesNo,表示是否可以恰好选择 k k k 个数,使选中的数之和为 s s s

样例 #1

样例输入 #1

3
5 2 10
5 2 5
5 2 2

样例输出 #1

No
Yes
No

提示

本题采用捆绑测试。

  • Subtask 1(15 points): n ≤ 5 n\le5 n5
  • Subtask 2(15 points): n ≤ 15 n\le15 n15
  • Subtask 3(20 points): n ≤ 100 n\le100 n100
  • Subtask 4(15 points): k = 1 k=1 k=1
  • Subtask 5(15 points): s ≤ 15 s\le15 s15
  • Subtask 6(20 points):无特殊限制。

对于 100 % 100\% 100% 的数据, 1 ≤ T ≤ 1 0 3 1\le T\le10^3 1T103 1 ≤ k ≤ n ≤ 1 0 9 1\le k\le n\le10^9 1kn109 1 ≤ s ≤ 1 0 18 1\le s\le10^{18} 1s1018

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>


int T;

long long n,k,s,minSum,maxSum;

int main()
{
	scanf("%d",&T);
	while(T--)
	{
		scanf("%lld%lld%lld",&n,&k,&s);
		minSum=(k*k+k)/2;
		maxSum=(-(k*k)+(2*n+1)*k)/2; 
		if(s>=minSum&&s<=maxSum)
		{
			puts("Yes");
		}
		else
		{
			puts("No");
		}
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值