记录洛谷刷题C语言qaq,都是些不优雅的代码


远古档案馆(Ancient Archive)

题目背景

为了揭开月光能量背后的秘密,你来到了地下的远古档案馆。

远古一族的秘密与遗忘的知识悉数贮藏于这片被尘封的迷宫中,你能成功解谜,获知远古的知识吗?

题目描述

远古档案馆的中心是一个解谜:

  • 有一个 2 × 2 2\times 2 2×2 的网格,每个格子中要么有一个正整数,要么是空的;

  • 你可以进行若干次操作:每次操作中,你选择一个有正整数的格子和一个与之相邻的空格子,将正整数移到那个空格子中;

  • 给定网格的初始状态和最终状态,保证初始状态和最终状态中包含的正整数个数相同(设为 k k k 个),且它们就是前 k k k 个不同的正整数,问是否可以通过有限次操作从初始状态到达最终状态?

下图展示了一个包含三个正整数的网格经过两次操作的情况:

只有完成解谜,才能获得遗忘的知识,因此你希望尽快解决这个问题。

注意:网格中可能没有正整数,也可能没有空格。

输入格式

输入共包括四行,每行两个整数。

前两行描述了初始状态,后两行描述了最终状态,用 0 0 0 表示空格子。

输出格式

如果可以从初始状态到达最终状态,输出 Yes,否则输出 No

样例 #1

样例输入 #1

2 1
3 0
0 2
3 1

样例输出 #1

Yes

样例 #2

样例输入 #2

2 1
4 3
3 4
2 1

样例输出 #2

No

提示

【样例 1 解释】

如题目描述中图所示。


【样例 2 解释】

没有可移动的正整数,所以无法从初始状态到达与之不相等的最终状态。


【数据范围】

本题采用捆绑测试。

所有数据符合题目描述所述。

  • Subtask 1(40 points):不存在空格。
  • Subtask 2(60 points):无特殊限制。

代码如下:

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>int a[5],b[5],num=0,k;int swap(int a,int b)
{a = a + b;b = a - b;a - a - b;
}
int judge1(){if(a[1]==b[3]&&a[2]==b[4]){ //a的第一行与b的第二行相同 if(a[1]!=0&&a[2]!=0) return 1;}if(a[3]==b[1]&&a[4]==b[2]){ //a的第二行与b的第一行相同 if(a[3]!=0&&a[4]!=0) return 1;}if(a[1]==b[2]&&a[3]==b[4]){ //a的第一列与b的第二列相同if(a[1]!=0&&a[3]!=0) return 1;}if(a[2]==b[1]&&a[4]==b[3]){ //a的第二列与b的第一列相同 if(a[2]!=0&&a[4]!=0) return 1;}return 0;
}
int judge2(){if(a[1]==b[1]&&a[2]==b[2]){ //a的第一行与b的第一行相同 if(a[1]==0||a[2]==0) return 1;}if(a[3]==b[3]&&a[4]==b[4]){ //a的第二行与b的第二行相同 if(a[3]==0||a[4]==0) return 1;}if(a[1]==b[1]&&a[3]==b[3]){ //a的第一列与b的第一列相同 if(a[1]==0||a[3]==0) return 1;}if(a[2]==b[2]&&a[4]==b[4]){ //a的第二列与b的第二列相同 if(a[2]==0||a[4]==0) return 1;}return 0;
}
int judge3(){if(a[1]==b[1]&&a[4]==b[4]|| //a,b左上与右下相同 a[2]==b[2]&&a[3]==b[3]){ //a,b右上与左下相同 return 1;   }return 0;
}
int same(){ //a,b四个格完全相同 if(a[1]==b[1]&&a[2]==b[2]&&a[3]==b[3]&&a[4]==b[4]) return 1;return 0;
}
int move(int x){swap(a[k],a[x]); //x格中数字移到空格位置 if((judge1()||judge2()||judge3())&&!same()) return 1;else swap(a[k],a[x]); //判断不成立,数字回到x格return 0;
}
int main(){scanf("%d %d %d %d",&a[1],&a[2],&a[3],&a[4]);scanf("%d %d %d %d",&b[1],&b[2],&b[3],&b[4]);for(int i=1;i<=4;i++){if(a[i]==0){num++; //记录空格个数 k=i; //记录空格出现位置 }}if(same()){ //四个格全部相同printf("Yes"); return 0;}if(num==0){ //四个格全部不为空printf("No"); return 0;}if(num>=2){ //空格个数两个及以上 printf("Yes");return 0;}//以下均为只存在一个空格的情况 if(judge1()||judge2()||judge3()){ //判断printf("No");return 0;}if(k==2||k==3){ //空格位置为2或3时 if(move(1)||move(4)){ //判断1,4格中数字移到空格位置时 printf("No");return 0;}}if(k==1||k==4){ //空格位置为1或4时if(move(2)||move(3)){ //判断2,3格中数字移到空格位置时  printf("No");return 0;} }printf("Yes"); //全部不成立,结束 return 0;
}

[COCI2013-2014#2] VOLIM

题目背景

本游戏改编自克罗地亚电视节目《我爱克罗地亚》中的游戏 I l o v e m y c o u n t r y \tt{I\ love\ my\ country} I love my country。

题目描述

有 8 8 8 个人坐成一圈,如图所示。

他们中的某一个人会拿着一个箱子,这个箱子会在比赛开始后 210 210 210 秒爆炸。

主持人会问拿箱人问题,拿箱人可以选择以下方式:

  • 若跳过或回答错误,主持人会接着问下一个问题。
  • 若回答正确,则拿箱人把箱子传递给他左手边第一个人,这个人成为新的拿箱人。

现在你知道对于每个问题,回答该问题的人所用的时间与回答情况。

给定游戏开始时拿箱人的编号与问题的数量,求出箱子爆炸时拿箱人的编号。

箱子传递时间与两个问题之间的时间忽略不计,数据保证箱子爆炸时箱子在某个人手上,且问题没有问完。

输入格式

第一行一个整数 K K K,表示游戏开始时拿箱人的编号。

第二行一个整数 N N N,表示问题的数量。

接下来 N N N 行,每行有一个整数 T T T 与一个字符,表示回答该问题的人所用的时间与回答情况:

  • 该字符为 T \tt T T,表示回答正确。
  • 该字符为 N \tt N N,表示回答错误。
  • 该字符为 P \tt P P,表示跳过。

输出格式

仅一行一个整数,即箱子爆炸时拿箱人的编号。

样例 #1

样例输入 #1

1
5
20 T
50 T
80 T
50 T
30 T

样例输出 #1

5

样例 #2

样例输入 #2

3
5
100 T
100 N
100 T
100 T
100 N

样例输出 #2

4

样例 #3

样例输入 #3

5
6
70 T
50 P
30 N
50 T
30 P
80 T

样例输出 #3

7

提示

数据规模与约定

对于 100 % 100\% 100% 的数据,有 1 ≤ K ≤ 8 1\le K\le 8 1≤K≤8, 1 ≤ N , T ≤ 100 1\le N,T\le 100 1≤N,T≤100。

来源

本题译自 COCI2013-2014 CONTEST 2 T1 VOLIM

按照原题数据配置,本题满分 50 50 50 分。

代码如下:

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>int main()
{int k, n;scanf("%d%d",&k,&n);int t;for (int i = 1; i <= n; i++){int x;char c;scanf("%d %c",&x,&c);t += x;if (t >= 210){printf("%d",k);return 0; }else{if (c == 'T'){if (k == 8){k = 1;}else{k++;}}}}return 0;
}

[COCI2012-2013#3] SAHOVNICA

题目背景

Mirko 已经成为一个铁杆爱国者,所以他要求你给他画一个克罗地亚棋盘。

题目描述

棋盘由红色格子和白色格子组成。棋盘左上角的格子是红色。其余的格子在棋盘中交替显示成白色和红色。我们在本题中用 X 表示红色区域,用 . 表示白色区域。Mirko 的棋盘应该由 r × c r\times c r×c 的格子组成,并且每个格子是由字符 X. 组成的 a × b a\times b a×b 的字符矩阵。请你帮助他画出这个棋盘。

输入格式

输入共两行。

第一行两个整数 r , c r,c r,c,分别表示棋盘的行数和列数。
第二行两个整数 a , b a,b a,b,分别表示每个格子中的字符矩阵行数和列数。

输出格式

输出共 r × a r\times a r×a 行,每行 c × b c\times b c×b 个字符,描述最终画出来的棋盘。

样例 #1

样例输入 #1

2 4
2 2

样例输出 #1

XX..XX..
XX..XX..
..XX..XX
..XX..XX

样例 #2

样例输入 #2

5 5
2 3

样例输出 #2

XXX...XXX...XXX
XXX...XXX...XXX
...XXX...XXX...
...XXX...XXX...
XXX...XXX...XXX
XXX...XXX...XXX
...XXX...XXX...
...XXX...XXX...
XXX...XXX...XXX
XXX...XXX...XXX

提示

【数据范围】

对于所有数据, 1 ⩽ r , c , a , b ⩽ 10 1\leqslant r,c,a,b\leqslant 10 1⩽r,c,a,b⩽10。

【题目来源】

本题来源自 COCI 2012-2013 CONTEST 3 T1 SAHOVNICA,按照原题数据配置,满分 50 50 50 分。

由 Eason_AC 翻译整理提供。

代码如下:

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>int main()
{int r, c, a, b;scanf("%d%d",&r,&c);scanf("%d%d",&a,&b);for(int i = 1;i <= r;i++){for(int y = 0;y < a;y++){for(int j = 1;j <= c;j++){if((i+j)%2 == 0){for(int x = 0;x < b;x++){printf("X");}}elsefor(int x = 0;x < b;x++){printf(".");}}printf("\n");}}return 0;
}

[COCI2016-2017#5] Tuna

题目描述

渔夫在昨晚捕到 N N N 条金枪鱼。他准备将这些鱼卖给一个平台。

对于每一条鱼,平台会给出两个估测值 P 1 , P 2 P_1,P_2 P1​,P2​。如果这两个值之差不超过 X X X,则取较大的值作为该条鱼的价值;否则如果差超过 X X X,则取另一个值 P 3 P_3 P3​。

现在给定 N N N 条鱼的值(可能会有 2 2 2 个或 3 3 3 个),求所有鱼的总价值。

输入格式

第一行,一个整数 N N N,表示金枪鱼的数量。

第二行,一个整数 X X X。

接下来的若干行分为 N N N 个部分用来表示每条鱼的信息。每部分的格式为下列二者之一:

  • 该部分仅有唯一一行,该行包含两个整数 P 1 , P 2 P_1,P_2 P1​,P2​。
  • 该部分共有两行,第一行包含两个整数 P 1 , P 2 P_1,P_2 P1​,P2​,第二行包含一个整数 P 3 P_3 P3​。

输出格式

输出所有鱼的总价值。

样例 #1

样例输入 #1

5
2
3 4
2 1
5 3
4 4
4 2

样例输出 #1

19

样例 #2

样例输入 #2

4
2
3 5
2 8
4
6 5
6 3
7

样例输出 #2

22

样例 #3

样例输入 #3

3
10
20 50
30
20 40
50
70 20
10

样例输出 #3

90

提示

【样例 2 解释】

渔夫捕到了 4 4 4 条金枪鱼,而 X X X 的值为 2 2 2:

金枪鱼编号 p 1 p_1 p1​ p 2 p_2 p2​ p 3 p_3 p3​ 差值 最终价值
1 1 1 3 3 3 5 5 5 / 2 ≤ 2 2 \le 2 2≤2 5 5 5
2 2 2 2 2 2 8 8 8 4 4 4 6 > 2 6 \gt 2 6>2 4 4 4
3 3 3 6 6 6 5 5 5 / 1 ≤ 2 1 \le 2 1≤2 6 6 6
4 4 4 6 6 6 3 3 3 7 7 7 3 ≤ 7 3 \le 7 3≤7 7 7 7

故价值总和为 5 + 4 + 6 + 7 = 22 5+4+6+7=22 5+4+6+7=22。

【数据规模与约定】

对于 100 % 100\% 100% 的数据, 1 ≤ N ≤ 20 1 \le N \le 20 1≤N≤20, 1 ≤ X ≤ 10 1 \le X \le 10 1≤X≤10, 1 ≤ P 1 , P 2 , P 3 ≤ 100 1 \le P_1,P_2,P_3 \le 100 1≤P1​,P2​,P3​≤100。

【提示与说明】

题目译自 COCI 2016-2017 CONTEST #5 T1 Tuna

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

代码如下:

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>int main()
{int n;scanf("%d",&n);int x;scanf("%d",&x);long long sum  = 0;for(int i = 0;i < n;i++){int a, b;scanf("%d%d",&a,&b);if(abs(a - b) > x){int c;scanf("%d",&c);sum = sum + c;}else{if(a > b)sum = sum + a;else if(b >= a)sum = sum + b;}}printf("%ld\n",sum);return 0;
}

[COCI 2011/2012 #5] KRIŽALJKA

题目描述

有两个单词 A , B A,B A,B,将 A A A 水平摆放, B B B 竖直摆放,两个单词重叠部分必须为同一字母,且这一字母须在 A , B A,B A,B 中第一次出现。

例如,当 A="ABBA",B="CCBB" 时,输出如下所示:

.C..
.C..
ABBA
.B..

输入格式

一行,两个字符串,由大写字母组成,分别表示 A A A 和 B B B。

输出格式

一个矩阵,表示摆放结果。

其中无字符用 . 表示。

样例 #1

样例输入 #1

BANANA PIDZAMA

样例输出 #1

.P....
.I....
.D....
.Z....
BANANA
.M....
.A....

样例 #2

样例输入 #2

MAMA TATA

样例输出 #2

.T..
MAMA
.T..
.A..

样例 #3

样例输入 #3

REPUBLIKA HRVATSKA

样例输出 #3

H........
REPUBLIKA
V........
A........
T........
S........
K........
A........

提示

数据保证有解。

字符串由大写字母构成。

题目译自 COCI 2011/2012 #5 T1。

代码如下:

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>int main()
{char a[1001], b[1001];scanf("%s %s",&a,&b);int lena = strlen(a);int lenb = strlen(b);int n = 0, m = 0;for(n = 0;n < lena;n++){for(m = 0;m < lenb;m++){if(a[n] == b[m]) break; }if(a[n] == b[m]) break;           }
//  printf("%d %d\n",n,m);for(int i = 0;i < lenb;i++){for(int j = 0;j < lena;j++){if(j == n){printf("%c",b[i]);}else if(i == m){printf("%c",a[j]);}elseprintf(".");}printf("\n");}return 0;
}

洛谷刷题C语言:远古档案馆(Ancient Archive)、VOLIM、SAHOVNICA、Tuna、KRIŽALJKA相关推荐

  1. 洛谷刷题C语言:潇湘の雨、分糖果、Addition、Ljeto、TRI

    记录洛谷刷题C语言QAQ 「PMOI-0」潇湘の雨 题目背景 (原 LZOI-1,改名已经 PMOI 成员同意) lhm-01 题目描述 言琢დ 在一个 2n×2n2n \times 2n2n×2n ...

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

    记录洛谷刷题C语言qaq [COCI2020-2021#6] Bold 题目描述 Paula 给 Daniel 写了一封信,她需要加粗文本的字体,以便视力恶化的 Daniel 阅读. 信可以用 . 和 ...

  3. 洛谷刷题C语言:陶瓷项链、Cow Gymnastics B、Where Am I? B、Hello, 2020!、SIR 模型

    记录洛谷刷题C语言 一.[NOI2000] 瓷片项链 题目描述 原始部落用一种稀有的泥土烧制直径相同的圆瓷片并串成项链,串的时候沿瓷片的直径方向顺次连接,瓷片之间没有空隙也不重叠,一条项链至少由一个瓷 ...

  4. 洛谷刷题C语言:切蛋糕、概率、Bridž、NOTE、DOMINO

    记录洛谷刷题C语言qaq [NOI Online 2021 入门组] 切蛋糕 题目描述 Alice.Bob 和 Cindy 三个好朋友得到了一个圆形蛋糕,他们打算分享这个蛋糕. 三个人的需求量分别为 ...

  5. 洛谷刷题C语言:Physics Problem、PARKING、Trol、信息学竞赛、POT

    记录洛谷刷题C语言 「dWoi R1」Physics Problem 题目背景 面对白板上的物理题,王马陷入了沉思 -- 题目描述 有 nnn 个状态,编号为 111 到 nnn.这 nnn 个状态之 ...

  6. 洛谷刷题C语言:Fergusonball Ratings、Don‘t Mozheng. /oh、gcd.、幻想乡扑克游戏、PMTD

    记录洛谷刷题C语言qaq [CCC2022 J2] Fergusonball Ratings 题目描述 现在有一个球队需要你评价. 球队中的第 i i i 个人进了 a i a_i ai​ 个球,犯规 ...

  7. 洛谷刷题C语言:闰年判断、Apples、洛谷团队系统、肥胖问题、三位数排序

    记录洛谷刷题QAQ 一.[深基3.例3]闰年判断 题目描述 输入一个年份,判断这一年是否是闰年,如果是输出 111,否则输出 000. 输入格式 输入一个正整数 nnn,表示年份. 输出格式 输出一行 ...

  8. 洛谷刷题C语言:数字反转、再分肥皂水、三角形面积、Apples Prologue/苹果和虫子、数的性质

    记录洛谷刷题QAQ,一些不大优雅的代码 一.[深基2.例7]数字反转 题目描述 输入一个不小于 100100100 且小于 100010001000,同时包括小数点后一位的一个浮点数,例如 123.4 ...

  9. 洛谷刷题C语言:Even? Odd? G、The Robot Plow G、pb的游戏(1)、询问学号、cover

    记录洛谷刷题QAQ 一.[USACO09OCT]Even? Odd? G 题目描述 Bessie's cruel second grade teacher has assigned a list of ...

最新文章

  1. 细说Android事件传递
  2. 如何禁用文本选择突出显示
  3. java好还是python好-现在学Python还是Java好呢?
  4. 荣耀 6 安装 SD 卡,提示:SD卡已安全移除
  5. 省市区联动三级下拉列表实现
  6. 前端学习(1883)vue之电商管理系统电商系统之每次只能打开一个菜单项并解决边框问题
  7. 阿里云开放国内首个云端数据库测试平台,云已成为数据库新标准;华为5G随行WiFi发布;科大讯飞推出 AI 专用语音芯片系列……...
  8. centos7 mysql.h_centos7下致命错误:mysql/mysql.h:没有那个文件或目录
  9. mysql编程流程控制_MySql流程控制结构
  10. 死磕算法!35 篇算法设计实例+6 本超赞好书打包送你
  11. C++ 单链表基本操作
  12. Linux(Ubuntu14.04)下Google Chrome / Chromium标题栏乱码问题
  13. 基于微信小程序的小区防疫监管小程序-计算机毕业设计源码+LW文档
  14. python题目练习001--A+B Problem
  15. 前端7大常用布局方式
  16. matlab怎么计算矩阵的迹,求Matlab中矩阵的秩和迹
  17. HTML CSS——层叠
  18. 计算机大作业的范本,计算机应用基础大作业.doc
  19. ElasticSearch分布式搜索引擎安装教程
  20. ctrl+enter键

热门文章

  1. php相册源码无数据库,EasyImage|简单强大无数据库的PHP图床源码
  2. element-ui—DatePicker 日期选择器 设置最大值
  3. python微信好友比例分析_python分析微信好友分布
  4. 读刘守英教授人大毕业致辞总结
  5. 2020 版上海《米其林指南》“米其林餐盘“ + “必比登推介”
  6. Overlay和Underlay网络协议区别及概述讲解
  7. 导入excel表格识别表格中数据得到一个List集合
  8. Smart Home,让黑客攻击更加Smart
  9. 东风风神S30 1.5MT 模仿中进步
  10. Jetson Xavier NX 安装pip3