YCOJ之旅
ACautomata
YCOJ一蒟蒻
展开
-
铺瓷砖
铺瓷砖Description今天小信装修新家,给家里买了一种 1×2的长方形(如图1)新瓷砖。小信是个懂得审美的人,毕竟人生除了金钱,还有诗和远方。这个时候小信就在想,这种长方形的瓷砖铺到一个 n×m 的地面上有多少种方案(如图2:是 4×4 地面的一种方案)?Input输入两个整数 n,m,(1≤MIN(n,m)≤10, 1≤MAX(n,m)≤100)。Output输出方案总数(最...原创 2019-08-05 08:41:28 · 1316 阅读 · 0 评论 -
YCOJ引爆炸弹
引爆炸弹Description在一个 n × m 的方格地图上,某些方格上放置着炸弹。手动引爆一个炸弹以后,炸弹会把炸弹所在的行和列上的所有炸弹引爆,被引爆的炸弹又能引爆其他炸弹,这样连锁下去。现在为了引爆地图上的所有炸弹,需要手动引爆其中一些炸弹,为了把危险程度降到最低,请算出最少手动引爆多少个炸弹可以把地图上的所有炸弹引爆。Input第一行输两个整数 n,m,用空格隔开。接下来 n...原创 2019-02-13 13:59:04 · 506 阅读 · 0 评论 -
超市促销
超市促销Description最近怡购搞促销,用m(m>1)个瓶子就可以换1瓶啤酒,因此特别爱喝酒的Tom同学也不例外,他买了n(n<=100)瓶啤酒,喝完之后就可以拿去怡购换,可是现在的问题是,到最后,Tom同学一共能得到多少瓶啤酒呢?Input输入数据首先包括一个整数t(1<=t<=50),表示测试数据的个数,然后是t行数据,每一行包括两个整数,n和m。Out...原创 2019-02-18 10:49:06 · 447 阅读 · 0 评论 -
素数圆环
素数圆环Description如图所示为一个由n个圆圈构成的圆环。将自然数1,2,…,n放入圆圈内,并且要求任意两个相邻的圆圈内的数字之和为素数。请问给你圆圈数,你能给出放置自然数的所有正确方案吗?注意:圆圈中的数字一定是从1开始的,并且连续不重复。Input输入包含多组测试数据。每组输入占一行,为整数n(0<n<=20),表示圆圈数。Output对于每组输入,输出所有...原创 2019-02-18 10:23:24 · 2383 阅读 · 0 评论 -
c++二分查找法
二分查找法是从区间[i,j]上连续不断将sum(a)·sum(b)&lt;0的函数ans=sum(x),通过循环实现把函数sum(x)的0点所在区间一分为二,如此循环,使区间[i,j]的两个端点逐渐像0点靠近,得到0点近似值的方法。可以实现空间优化,适用于数据较大的题目。时间复杂第O(log(2n))。在使用c++的二分查找法,要先将数据排序,二分查找法的基本思想可以这样总结:我们设数据是按升序...原创 2019-02-18 08:56:32 · 1641 阅读 · 0 评论 -
全排列
全排列Description从 n 个不同元素中任取 m(m ≤ n) 个元素,按照一定的顺序排列起来,叫做从 n 个不同元素中取出 m 个元素的一个排列。当 m=n 时所有的排列情况叫全排列。今天这道题目很简单就是给你一个整数 n ,计算 [1,n] 所有数字的排列组合。Input第一行输入一个整数 n ( 1 ≤ n ≤ 10).Output第一行输出一个全排列的方案总数 m。接下...原创 2019-02-17 20:29:27 · 162 阅读 · 0 评论 -
合并石子
合并石子Description在一个操场上一排地摆放着N堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。计算出将N堆石子合并成一堆的最小得分。Input第一行为一个正整数N (2≤N≤100);以下N行,每行一个正整数,小于10000,分别表示第i堆石子的个数(1≤i≤N)。Output一个正整数,即最小得分。...原创 2019-02-17 08:03:16 · 185 阅读 · 0 评论 -
YCOJ装载问题(load)
装载问题(load)Description有一批共n个集装箱要装上艘载重量为c的轮船,其中集装箱i的重量为wi。找出一种最优装载方案,将 轮船尽可能装满,即在装载体积不受限制的情况下,将尽可能重的集装箱装上轮船。Input第一行有2个正整数n和c。n是集装箱数,c是轮船的载重量。接下来的1 行中有n个正整数,表示集装箱的重量。Output计算出的最大装载重量Sample Input...原创 2019-02-08 14:11:24 · 1479 阅读 · 0 评论 -
YCOJ踏青C++
踏青Description小白和他的朋友周末相约去召唤师峡谷踏青。他们发现召唤师峡谷的地图是由一块一块格子组成的,有的格子上是草丛,有的是空地。草丛通过上下左右 4 个方向扩展其他草丛形成一片草地,任何一片草地中的格子都是草丛,并且所有格子之间都能通过上下左右连通。如果用’#‘代表草丛,’.'代表空地,下面的峡谷中有 2 片草地。##……##处在同一个草地的 2 个人可以相互看到,空地看...原创 2019-02-15 20:08:21 · 457 阅读 · 0 评论 -
YCOJ组合+判断素数
组合+判断素数Description已知 n 个整数b1,b2,…,bn以及一个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。例如当 n=4,k=3,4 个整数分别为 3,7,12,19 时,可得全部的组合与它们的和为:3+7+12=22 3+7+19=29 7+12+19=38 3+12+19=34。现在,要求你计算出和为素数的组合共有多少种...原创 2019-02-13 14:31:20 · 841 阅读 · 0 评论 -
兔子问题(Rabbit problem)
兔子问题Description有一种兔子,出生后一个月就可以长大,然后再过一个月一对长大的兔子就可以生育一对小兔子且以后每个月都能生育一对。现在,我们有一对刚出生的这种兔子,那么,n 个月过后,我们会有多少对兔子呢?假设所有的兔子都不会死亡。Input输入文件仅一行,包含一个自然数 n。Output输出文件仅一行,包含一个自然数,即 n 个月后兔子的对数。Sample Input 1...原创 2019-02-13 20:33:40 · 1077 阅读 · 0 评论 -
工作分配问题(job)
工作分配问题(job)Description设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为c_{ij} 。试设计一个算法,为每一个人都 分配一件不同的工作,并使总费用达到最小。设计一个算法,对于给定的工作费用,计算最佳工作分配方案,使总费用达到最小。Input第一行有1个正整数n (1≤n≤20)。接下来的n行,每行n个数,第i行表 示第i个人各项工作费用Output计...原创 2019-02-14 17:35:05 · 3505 阅读 · 0 评论 -
最小乘车费用
Description某条街上每隔一公里就有一汽车站,乘车费用如下表:公里数 1 2 3 4 5 6 7 8 9 10费用 12 21 31 40 49 58 69 79 90 101而一辆汽车从不行驶超过 10 公里。某人想行驶 n 公里,假设他可以任意次换车,请你帮他找到一种乘车方案使费用最小(10 公里的费用比 1 公里小的情况...原创 2019-07-29 16:43:29 · 731 阅读 · 0 评论 -
小信的微信好友
Description小信最近看了看自己的微信,发现自己的微信多了好多好友,想要找个人太不容易了(朋友太多也是错^_^)。于是想给自己的好友排个序,他给出了两个值,一个是好友亲密度,一个是认识时间(单位年)。首先按照好友亲密度排序(亲密度大的排在前面),如果亲密度相同再按照认识时间排序(认识时间长的排在前面)。Input第一行输入一个整数 n(1 < n ≤ 10^5),表示好友个数...原创 2019-06-01 16:13:34 · 223 阅读 · 0 评论 -
弹簧板
Description有一个小球掉落在一串连续的弹簧板上,小球落到某一个弹簧板后,会被弹到某一个地点,直到小球被弹到弹簧板以外的地方。假设有 n 个连续的弹簧板,每个弹簧板占一个单位距离,a[i] 代表代表第 i 个弹簧板会把小球向前弹 a[i] 个距离。比如位置 1 的弹簧能让小球前进 2 个距离到达位置 3。如果小球落到某个弹簧板后,经过一系列弹跳会被弹出弹簧板,那么小球就能从这个弹簧板弹...原创 2019-06-01 16:11:38 · 692 阅读 · 0 评论 -
完全图判定
Description输入一个无向图,判断这个图是不是一个完全图。Input输入第一行两个整数 n(1 <= n <= 100) 和 m(1 <= m <= 20000),表示输入点数和边数。接下来 m 行,每行输入两个整数 u, v(1 <= u, v <= n),表示 u 和 v 之前有一条无向边。输入中不存在自己到自己的边,但是可能会有重复的边。...原创 2019-06-01 16:07:19 · 4609 阅读 · 1 评论 -
水果店
Description小信经营着一个不大的水果店。他认为生存之道就是经营最受顾客欢迎的水果。现在他想要一份水果销售情况的明细表,这样就可以很容易掌握所有水果的销售情况了。小信告诉你每一笔销售记录的水果名称,产地和销售的数量,请你帮他生成明细表。Input第一行是一个整数 N(0 < N <= 1000),表示工有 N 次成功的交易。其后有 N 行数据,每行表示一次交易,由水果名称...原创 2019-06-01 16:06:22 · 209 阅读 · 0 评论 -
小信学英语
Description小信快要考托福了,这几天,小信每天早上都起来记英语单词。小白时不时地来考一考小信:小白会询问小信一个单词,如果小信背过这个单词,小信会告诉小白这个单词的意思,不然小信会跟小白说还没有背过。单词是由连续的大写或者小写字母组成。注意单词中字母大小写是等价的。比如You和you是一个单词。Input首先输入一个 n(1 <= n <= 100000) 表示事件数。...原创 2019-06-01 16:04:49 · 171 阅读 · 0 评论 -
计算集合的并
Description给你两个集合,计算其并集,即 {A} + {B}。注:{A} + {B} 中不允许出现重复元素,但是 {A} 与 {B} 之间可能存在相同元素。Input输入数据分为三行,第一行有两个数字 n, m(0<n,m<= 10000),分别表示集合 A 和集合 B 的元素个数。后两行分别表示集合 A 和集合 B。每个元素为不超出 int 范围的整数,每个元素之间...原创 2019-06-01 16:03:56 · 267 阅读 · 0 评论 -
面积(acreage)
面积Description编程计算由星号号围成的下列图形的面积。面积计算方法是统计星号所围成的闭合曲线中水平线和垂 直线交点的数目。如下图所示,在 10乘10 的二维数组中,有星号围住了 15 个点,因此面积为 15。0 0 0 0 0 0 0 0 0 00 0 0 0 * * * 0 0 00 0 0 0 * 0 0 * 0 00...原创 2019-02-14 14:26:03 · 1464 阅读 · 0 评论 -
YCOJ消息传递
消息传递Description有 n 个同学( 编号为 1 到 n)正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 n 的同学的信息传递对象是编号为 T_i的同学。游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象( 注意:可能有人可以从若干人那里获取信息,但是每人只会把信息告诉一个人,即自己的信息传递...原创 2019-02-15 16:35:50 · 293 阅读 · 0 评论 -
YCOJ混合背包
混合背包Description一个旅行者有一个最多能装V公斤的背包,现在有n件物品,它们的重量分别是W_1,W_2,…,W_nW1 ,W2 ,…,Wn ,它们的价值分别为C_1,C_2,…,C_nC1 ,C2 ,…,Cn 。有的物品只可以取一次(01背包),有的物品可以取无限次(完全背包),有的物品可以取的次数有一个上限(多重背包)。求解将哪些物...原创 2019-01-29 21:04:32 · 243 阅读 · 0 评论 -
YCOJ完全背包问题
完全背包问题Description设有n种物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为M,今从n种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于M,而价值的和为最大。Input第一行:两个整数,M(背包容量,M≤200)和N(物品数量,N≤30);第2…N+1行:每行二个整数Wi,Ci,表示每个物品的重量和价值。Outpu...原创 2019-01-29 20:33:28 · 162 阅读 · 0 评论 -
最长公共子序列
最长公共子序列最长公共子序列Description一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说,若给定序列X=<x_1,x_2,…,x_m><x 1,x 2,…,x m>,则另一序列Z=<z_1,z_2,…,z_k><z 1,z 2,…,z k>是X的子序列是指存在一个严格递增的下标序列<i_1,i_2,…,i_k&...原创 2019-01-27 20:27:46 · 124 阅读 · 0 评论 -
汉诺塔
汉诺塔请编写一个程序,对于一个有n个盘子的汉诺塔,列举将这n个盘子从柱子A移动到柱子C需要的所有移动步骤,每个步骤占一行。例如,将一个盘子从A移动到C,即表示为:A to C输入一个数n,表示圆盘的个数。输入样例3输出样例 A to CA to CA to BC to BA to CB to AB to CA to C代码如下:#include #include &amp;...原创 2018-12-02 18:31:49 · 214 阅读 · 0 评论 -
八数码问题
八数码问题八方块移动游戏要求从一个含 8 个数字(用 1-8 表示)的方块以及一个空格方块的 3 × 3 矩阵的起始状态开始,不断移动该空格方块以使其和相邻的方块互换,直至达到所定义的目标。空格方块在中间位置时有上、下、左、右 4 个方向可移动,在四个角落上有 2个方向可移动,在其他位置上有 3 个方向可移动。例如,假设一个 3× 3 矩阵的初始状态为:8 0 3 2 1 4 7 6 5目标...原创 2018-12-02 18:34:03 · 388 阅读 · 0 评论 -
字母统计2
字母统计Description输入一串字符,包含英文字母、空格和标点符号,请统计其中英文字母出现的次数,不区分大小写。Input输入一串字符Output按顺序输出英文字母和出现次数,如未出现,则不要输出。Sample Input 1Goats like to eat grass.Sample Output 1a 3e 2g 2i 1k 1l 1o 2r 1s 3...原创 2018-12-08 15:51:14 · 178 阅读 · 0 评论 -
数组
1.一维数组的定义:当数组中每个元素只带有一个下标时,我们称这样的数组为一维数组 类型说明 数组名 [常量表达式]; 其中,类型说明符是任一种基本数据类型或构造数据类型。数组名是用 户定义的数组标识别。方括号中的常量表达式表示数据元素的个数,也 称为数组的长度。 在程序中可以使用下标变量,即说明这些变量的整体为数组,数组中的 每个变量的数据类型是...原创 2018-12-08 15:52:30 · 230 阅读 · 0 评论 -
YCOJ过河卒C++
#过河卒过河卒是一道~~较简单 ~~的问题,用递归或者动态规划都可以完成,但今天主要不是递归或者动态规划,而是用深度优先搜索做的。虽然会有两组TLE深搜是一种向下搜索的算法(如图所示)它能有效的统计中点到起点的所有路径,与BFS不同的是,BFS(广搜)是一层一层的搜索,而DFS(深搜)是往下搜,直到边界然后回溯,再搜另一边。所以,BFS用于找最短路,而DFS用于统计路径总数。现在,再来看看...原创 2019-01-26 20:12:19 · 2587 阅读 · 2 评论 -
YCOJ传娃娃
#传娃娃Description学习空闲之余,xx经常带着同学们做游戏,最近xx发明了一个好玩的新游戏:n 位同学围成一个圈,同学 A 手里拿着一个布娃娃。xx喊游戏开始,每位手里拿着娃娃的同学可以选择将娃娃传给左边或者右边的同学,当xx喊游戏结束时,停止传娃娃。此时手里拿着娃娃的同学即是败者。玩了几轮之后,xx想到一个问题:有多少种不同的方法,使得从同学 A 开始传娃娃,传了 m 次之后又回...原创 2019-01-26 20:29:53 · 305 阅读 · 0 评论 -
YCOJN皇后
#N皇后在 N*N 的棋盘上放置 N 个皇后而彼此不受攻击(即在棋盘的任一行,任一列和任一对角线上 不能放置 2 个皇后),编程求解所有的摆放方法。输入 输出4 2这道题是有规律的,其皇后在同一行上,则行号相...原创 2019-01-26 20:57:42 · 229 阅读 · 1 评论 -
YCOJ逃生
逃生Description小信在玩一款逃生的游戏。在一个 n×m 的矩形地图上,小信位于其中一个点。地图上每个格子有加血的药剂,和掉血的火焰,药剂的药效不同,火焰的大小也不同,每个格子上有一个数字,如果格子上的数字是正数说明是一个药剂代表增加的生命值,如果是负数说明是火焰代表失去的生命值。小信初始化有 v 点血量,他的血量上限是 c,任何时刻他的生命值都不能大于血量上限,如果血量为 0 则会...原创 2019-01-28 18:50:16 · 177 阅读 · 0 评论 -
YCOJ挖地雷
挖地雷Description在一个地图上有N个地窖(N&lt;=200),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径,并规定路径都是单向的,也不存在可以从一个地窖出发经过若干地窖后又回到原来地窖的路径。某人可以从任一处开始挖地雷,然后沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使他能挖到最多的地雷。Input第一行一个整数n表示...原创 2019-01-28 19:07:21 · 386 阅读 · 0 评论 -
YCOJ拦截导弹
拦截导弹Description某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。Input每个测试文件只包含一组测试数据,每组输入若干个整数,表示导弹依次飞来的高度(雷达给出...原创 2019-01-28 19:44:28 · 687 阅读 · 1 评论 -
YCOJ01背包
01背包Description一个旅行者有一个最多能装 M 公斤的背包,现在有 n 件物品,它们的重量分别是W1,W2,…,Wn,它们的价值分别为C1,C2,…,Cn,求旅行者能获得最大总价值。Input第一行:两个整数,M(背包容量,M≤200)和N(物品数量,N≤30);第2…N+1行:每行二个整数Wi,Ci,表示每个物品的重量和价值。Output仅一行,一个数,表示最大总价值。...原创 2019-01-29 19:49:27 · 167 阅读 · 0 评论 -
堆积木
堆积木Description小白有 n 块积木,编号分别为 1 到 n。一开始,小白把第 i 块积木放在位置 i。小白进行 m 次操作,每次操作,小白把位置 b 上的积木整体移动到位置 a 上面。比如 1 位置的积木是 1,2 位置的积木是 2,那么把位置 2 的积木移动到位置 1 后,位置 1 上的积木从下到上依次为 1,2。Input第一行输入 2 个整数 n,m(1 <= n ...原创 2019-02-15 14:42:41 · 545 阅读 · 1 评论 -
最近公共祖先
最近公共祖先Description前面我们学习过了树这种特殊的数据结构。我们知道除了根结点,树上的每个都有父结点。这里我们提到另外一个概念,祖先 结点。所谓祖先结点,就是父结点的父结点,父结点的父结点的父结点…,所有沿着父亲结点向根结点走的结点都能称为祖先结点。特殊的是,自己也可以称为自己的祖先结点。两个结点的最近公共祖先结点就是这两个结点沿着父节结点一直到根结点的路径上第一个相遇的结点。给...原创 2019-02-15 09:57:46 · 166 阅读 · 0 评论 -
快速幂
快速幂Descriptionx^y 相信大家都会计算(for 循环相乘),但是当 y 很大的时候怎么办?(如:y=10^18 )蒜头君经研究发现,想到了一个好办法,公式如下f(x,y) 等于 : f(x, y/2) * f(x, y/2), y%2=0,y&gt;0 : 1, y=0 : f(x, y/2) * f(x, y/2) * x, y%2=1,y&gt;0当然这不...原创 2019-02-15 08:51:36 · 269 阅读 · 1 评论 -
小信的面试
Description小信来应聘程序员的时候,曾经遇到这样一个面试题:给定 n 个整数,求里面出现次数最多的数,如果有多个重复出现的数,求出值最大的一个。当时可算是给小信难住了。现在小信来考考你。Input第一行输入一个整数 n(1 <= n <= 100000),接下来一行输入 n 个 int 范围内的整数。Output输出出现次数最多的数和出现的次数,中间用一个空格隔开...原创 2019-02-14 19:42:48 · 200 阅读 · 0 评论 -
稀疏图判定
稀疏图判定Description输入一个有向图,判断这个图是不是一个稀疏图。这里我们定义,如果一个图的边数小于等于点数的 10 倍,我们称这个图为稀疏图,否则,这个图是稠密图。Input输入第一行一个整数 n(1 <= n <= 100) 表示图的点数。接下里 n 行,每行输入 n 个 0 或者 1 的整数,表示这个图的邻接矩阵。注意,可能存在自环,但是不算边数。Out...原创 2019-02-14 19:32:16 · 5558 阅读 · 3 评论