![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计蒜客
文章平均质量分 67
MrCyilin
重庆市育才中学 NOIP信息学竞赛
Hacknet 首席执行官
Cmate执行总裁
展开
-
两仪剑法
#include <iostream>using namespace std;long long gcd(long long a,long long b) { if(b==0){ return a; } return gcd(b,a%b);}int main(){ int n; cin >> n; while (n--) { long long...原创 2018-05-06 17:27:09 · 535 阅读 · 0 评论 -
网络交友
在网络社交的过程中,通过朋友,也能认识新的朋友。在某个朋友关系图中,假定 A 和 B 是朋友,B 和 C 是朋友,那么 A 和 C 也会成为朋友。即,我们规定朋友的朋友也是朋友。现在要求你每当有一对新的朋友认识的时候,你需要计算两人的朋友圈合并以后的大小。输入格式第一行:一个整数 n(n\leq 5000)n(n≤5000),表示有 nn 对朋友认识。接下来 nn 行:每行输入两个名字。表示新认识...原创 2018-04-08 20:57:02 · 483 阅读 · 0 评论 -
时光机
蒜头君生活的宇宙有 nn 个星球,有 mm 条虫洞。蒜头君发明了时光机,利用虫洞进行时光旅行。这 mm 条虫洞,第 ii 条虫洞能实现星球 a_iai到 b_ibi 的单向旅行。蒜头君发明的时光机不稳定,通过第 ii 条虫洞能够使得时间前进或者倒退 c_ici(c_i \ge 0ci≥0 表示前进,c_i < 0ci<0 表示倒退)。如果通过时光机能够让时间无限倒退,那么将会...原创 2018-03-25 19:46:05 · 1177 阅读 · 0 评论 -
骑车比赛
蒜头君准备去参加骑车比赛,比赛在 nn 个城市间进行,编号从 11 到 nn。选手们都从城市 11 出发,终点在城市 nn。已知城市间有 mm 条道路,每条道路连接两个城市,注意道路是双向的。现在蒜头君知道了他经过每条道路需要花费的时间,他想请你帮他计算一下,他这次比赛最少需要花多少时间完成。输入格式第一行输入两个整数 n, mn,m(1 \leq n \leq 1,000, 1 \leq m \...原创 2018-03-25 15:16:46 · 659 阅读 · 0 评论 -
Dijkstra最短路算法
#include <iostream>#include <cstring>using namespace std;const int N = 1e3 + 9;const int M = 1e4 + 9;const int inf = 0x3f3f3f3f;struct edge { int v, w, fail; edge() {} edge(int _v...转载 2018-03-25 15:14:59 · 205 阅读 · 0 评论 -
蒜头君的城堡之旅
蒜国地域是一个 nn 行 mm 列的矩阵,下标均从 11开始。蒜国有个美丽的城堡,在坐标 (n, m)(n,m)上,蒜头君在坐标 (1,1)(1,1) 的位置上。蒜头君打算出发去城堡游玩,游玩结束后返回到起点。在出发去城堡的路上,蒜头君只会选择往下或者往右走,而在返回的路上,蒜头君只会选择往上或者往左走,每次只能走一格。已知每个格子上都有一定数量的蒜味可乐,每个格子至多经过一次。现在蒜头君请你来帮...原创 2018-03-20 21:36:02 · 445 阅读 · 0 评论 -
过河
在一个夜黑风高的晚上,有 nn 个小朋友在桥的这边,现在他们需要过桥,但是由于桥很窄,每次只允许不超过两人通过,他们只有一个手电筒,所以每次过桥后,需要有人把手电筒带回来,第 ii 号小朋友过桥的时间为 a[i]a[i],两个人过桥的总时间为二者中时间长者。问所有小朋友过桥的总时间最短是多少。输入格式第一行输入一个整数 nn (1 \le n \le 1000)(1≤n≤1000) ,表示有 nn...原创 2018-03-19 21:49:37 · 552 阅读 · 0 评论 -
蒜头君的购物袋1
蒜头君去超市购物,他有一只容量为 VV 的购物袋,同时他买了 nn 件物品,已知每件物品的体积 v_ivi。蒜头君想知道,挑选哪些物品放入购物袋中,可以使袋子剩余的空间最小。输入格式第一行输入一个整数 VV(1 \leq V \leq 20,0001≤V≤20,000),表示购物袋的容量。第二行输入一个整数 nn(1 \leq n \leq 301≤n≤30),表示蒜头君购买的 nn 件物品。接...原创 2018-03-11 20:45:50 · 554 阅读 · 0 评论 -
蒜头君的新游戏
工作空闲之余,蒜头君经常带着同事们做游戏,最近蒜头君发明了一个好玩的新游戏:nn位同事围成一个圈,同事 A 手里拿着一个兔妮妮的娃娃。蒜头君喊游戏开始,每位手里拿着娃娃的同事可以选择将娃娃传给左边或者右边的同学,当蒜头君喊游戏结束时,停止传娃娃。此时手里拿着娃娃的同事即是败者。玩了几轮之后,蒜头君想到一个问题:有多少种不同的方法,使得从同事 A 开始传娃娃,传了 mm 次之后又回到了同事 A 手里...原创 2018-03-11 20:44:48 · 680 阅读 · 0 评论 -
杨辉三角
杨辉三角是二项式系数在三角形中的一种几何排列。它的每个数等于它上方两数之和,每行数字左右对称,由 11 开始逐渐变大。1 12 1 1 3 1 2 1 4 1 3 3 1 5 1 4 6 4 1 61 5 10 10 5 1请求出杨辉三角的第 nn 行,第 mm 项的数字是什么...原创 2018-03-11 20:44:08 · 279 阅读 · 0 评论 -
墙壁涂色
蒜头君觉得白色的墙面好单调,他决定给房间的墙面涂上颜色。他买了 33 种颜料分别是红、黄、蓝,然后把房间的墙壁竖直地划分成 nn 个部分,蒜头希望每个相邻的部分颜色不能相同。他想知道一共有多少种给房间上色的方案。例如,当 n = 5n=5 时,下面就是一种合法方案。由于墙壁是一个环形,所以下面这个方案就是不合法的。#include <iostream>using namespace s...原创 2018-03-11 20:43:07 · 422 阅读 · 0 评论 -
接龙
蒜头君在玩一种接龙的游戏,蒜头君有 3000030000张卡片分别放在 3000030000 列,每列依次编号为 1,2,...,300001,2,...,30000。同时,蒜头君也把每张卡片依次编号为 1,2,...,300001,2,...,30000。游戏开始,蒜头君让让第 ii 张卡片处于第 i(i = 1,2,...,30000)i(i=1,2,...,30000) 列。然后蒜头君会发出...原创 2018-04-08 20:57:41 · 289 阅读 · 0 评论 -
判定欧拉回路
你学过一笔画问题么?其实一笔画问题又叫欧拉回路,是指在画的过程中,笔不离开纸,且图中每条边仅画一次,而且可以回到起点的一条回路。蒜头君打算考考你,给你一个图,问是否存在欧拉回路?输入格式第 11 行输入两个正整数,分别是节点数 N(1 < N < 1000)N(1<N<1000) 和边数 M(1 < M < 100000)M(1<M<100000);...原创 2018-04-08 21:50:55 · 282 阅读 · 0 评论 -
威虎山上的分配
每年过年的时候,座山雕都会给兄弟们分银子,分银子之前,座山雕允许大伙儿发表意见,因为要是没法满足所有人的意见,指不定谁要搞出什么大新闻。不过每个人在提意见的时候只能说:“我认为 A 分的银子应该比 B 多!”。座山雕决定要找出一种分配方案,满足所有人的意见,同时使得所有人分得的银子总数最少,并且每个人分得的银子最少为 100100两。输入格式第一行两个整数 n,m(0<n\leq 10000...原创 2018-04-01 20:28:45 · 449 阅读 · 0 评论 -
关押罪犯
#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int MAX_N=1e+5;struct node{ int a,b,c;};int fa[MAX_N];node crime[MAX_N];bool cmp(node a,node b){...原创 2018-05-05 19:47:19 · 301 阅读 · 0 评论 -
两数之和
给定一个包含n个整数的数组a,保证每个数字不重复,从中取出两个不等数,使得他们的值为s,求一共有几种不同的方案。输入 :n,s输出:满足条件的方案数、#include <iostream>#include <algorithm>using namespace std;const int MAX_N = 1e6+10;long long n,s;long long num[M...原创 2018-05-01 19:21:04 · 336 阅读 · 0 评论 -
昆虫的生活
一天蒜头君正在研究一种稀有昆虫的性行为。他们具有两种不同的性别,他假设他们只与异性昆虫互动。因为他们背上都印有数字,所以他们之间的一起互动,在实验室是很容易识别的。现在给出一些昆虫之间的互动,看看实验是否支持蒜头君的假设--只有异性互动。输入格式第一行输入两个整数 nn (1 \le n \le 2000)(1≤n≤2000) , mm(1 \le m \le 10^6)(1≤m≤106)。其中 ...原创 2018-04-19 20:52:42 · 364 阅读 · 0 评论 -
节点最近公共祖先
问题描述树是一种很常见的数据结构。现在蒜头君面临一个问题,在一个有 n 个节点的树上,节点编号分别是1…n。蒜头想知道一些节点之间的最近公共祖先是那些节点。 输入格式 第一行输入一个整数 n(2≤n≤10,000),表示树上有 n 个节点。 接下来的 n−1 行,每行输入俩个整数 a,b(1≤a,b≤n)代表节点 a,b 之间有一条 a 到 b 边,a 是 b 的父亲。 接下来输入一个整数 q,代...原创 2018-04-23 21:40:02 · 523 阅读 · 0 评论 -
连线问题
问题描述蒜头君和花椰菜君经常出难题考对方。一天,花椰菜君给蒜头君出了这样一道难题:花椰菜君在坐标系上随机画了 N 个点,然后让蒜头君给点之间连线,要求任意两点之间都是连通的,且所连的线段长度之和最小。聪明的你快来帮蒜头君解决一下吧。 输入格式 第一行输入一个整数 N(1≤N≤100),表示花椰菜君一共画了 N 个点。然后输入 N 行,每行输入两个整数 x,y(0≤x,y≤1,000),代表一个点的...原创 2018-04-23 21:38:18 · 717 阅读 · 0 评论 -
布设光纤
#include <iostream>#include <cstring>using namespace std;const int MAX_N = 1000;const int MAX_M = 100000;struct edge { int v, next; int len;} E[MAX_M];int p[MAX_N], eid;bool used[MAX...原创 2018-04-23 21:36:04 · 420 阅读 · 0 评论 -
穿越雷区
蒜头君最近迷上了一款 RPG 游戏,这次他要去森林里的 nn 个宝藏点收集宝藏,编号从 11 到 nn。森林里有 mm 条道路连接宝藏点,每条道路上都有数量不等的地雷,蒜头君想从中找出若干条道路,使得任意两个宝藏点都是连通的,这样蒜头君都能访问到每个宝藏点了。另外,每当遇到一个地雷,蒜头君会减少一定的血量。现在蒜头君知道了这 mm 条道路上的地雷数,蒜头君希望挑选若干条道路,使得挑选出的道路,地雷...原创 2018-04-22 20:12:16 · 368 阅读 · 0 评论 -
网络延时
某计算机网络中存在 nn 个路由,每个路由代表一个子网。路由之间有 n - 1n−1 条互通关系,使得这 nn 个网络之间任意两个网络都可以直接联通,或者通过其他网络间接连通。为了测试组建的网路的性能,假设相邻的路由之间的数据传输需要一单位时间,现在需要知道任意两个路由之间传输数据最多需要多长时间。输入格式第一行一个整数 n(2 \le n \le 50000)n(2≤n≤50000) 表示网络中...原创 2018-04-22 17:53:16 · 418 阅读 · 0 评论 -
蒜头君的训练室
蒜头君的训练室有 NN 个站点,另外有 MM 条单向边连接这些站点。第 ii 条路从 S_iSi 站到 E_iEi站,有高度为 H_iHi 的围栏,蒜头君是需要跳跃的。现在蒜头君们有 TT 个任务要完成。第 ii 个任务,蒜头君要从 A_iAi 站到 B_iBi 站,蒜头君想要他们路径中最高围栏尽可能小。请你确定这个高度。输入格式第一行输入三个整数 N, M, TN,M,T。(1\leq...原创 2018-03-28 21:36:38 · 553 阅读 · 0 评论 -
美好的邂逅
蒜头君走在校园里,邂逅了一个美女,可是蒜头君胆怯了,并没有上前搭讪。回到宿舍的蒜头君越想越难过,好在室友提出了一个很好的办法,可以通过同学的同学的同学这样的关系,当同学的同学这样的关系叠加到足够大的时候,覆盖的人群也就会足够多,这样就能找到这个美女了,而且蒜头君的室友很肯定的说,最多隔 66 个人,就一定能找到这个美女,蒜头君有点不相信了,想验证一下室友的想法,他和室友一起对 NN 个人展开了调查...原创 2018-04-03 21:09:47 · 482 阅读 · 0 评论 -
最长公共子序列
这次我们的问题非常简单,蒜头君有两个字符串 aa 和 bb,蒜头想知道两个字符串的最长公共子序列的长度。输入格式第一行输入一个字符串。第二行输入一个字符串。(字符串只包含字母,每个字符串长度不超过 10001000)输出格式输出二者的最长公共子序列的长度,占一行。#include <iostream>#include <cstring>#include <string...原创 2018-03-15 20:27:13 · 205 阅读 · 0 评论 -
8数码问题
八方块移动游戏要求从一个含 88 个数字(用 1-81−8 表示)的方块以及一个空格方块(用 00表示)的 3 \times 33×3 矩阵的起始状态开始,不断移动该空格方块以使其和相邻的方块互换,直至达到所定义的目标状态。空格方块在中间位置时有上、下、左、右 44 个方向可移动,在四个角落上有 22 个方向可移动,在其他位置上有 33个方向可移动。例如,假设一个 3\times 33×3 矩阵的...原创 2018-03-08 20:43:36 · 745 阅读 · 0 评论 -
统计单词
小明在学习英语单词,一边读,一边敲进程序的输入中,他希望他的程序可以统计一下某个特定的单词敲过多少次。例如:1computer true hello computer key word hi hello.统计 computer 单词的个数是 22。输入的每个单词之间只有一个空格,最后以英文句号 . 为终止符。输入要求:输入开头就是单词,单词之间只有一个空格,除了英文句号 .原创 2018-02-05 14:16:50 · 677 阅读 · 1 评论 -
报数
3 班的同学们在玩报数游戏,他们排成一排,第一个同学报数 11,第二个同学也报数 11,从第三个同学开始,每个同学报的数是前两个同学的报数之和。比如第三个同学该报数 22,第四个同学报数 33,现在排在第 nn 位的小明想提前知道轮到自己时该报什么数,你能帮帮他吗?输入格式输入一个数 nn,表示小明在第 nn 位(1\leq n \leq 501≤n≤50)输出格式原创 2018-02-05 14:15:30 · 679 阅读 · 0 评论 -
弹簧板
有一个小球掉落在一串连续的弹簧板上,小球落到某一个弹簧板后,会被弹到某一个地点,直到小球被弹到弹簧板以外的地方。假设有 nn 个连续的弹簧板,每个弹簧板占一个单位距离,a[i]a[i] 代表代表第 ii 个弹簧板会把小球向前弹 a[i]a[i] 个距离。比如位置 11 的弹簧能让小球前进 22 个距离到达位置 33。如果小球落到某个弹簧板后,经过一系列弹跳会被弹出弹簧板,那么小球就能从这个原创 2018-02-05 14:14:05 · 1448 阅读 · 0 评论 -
最大的蛋糕块
这一天蒜头君生日,他的朋友们一起来给蒜头君买一个大的蛋糕过生日。游戏做完后到了切蛋糕的时刻了,朋友们知道蒜头君喜欢吃蛋糕,便让蒜头君自己给自己切一块最大的。蒜头君看朋友们这么热情也就不客气了。这块蛋糕是由 R \times CR×C 的网格构成,每个网格上面都放有不同的水果。蒜头君把这些水果分为两类,一类是自己喜欢吃的水果,用'#'来表示;一类是自己不喜欢吃的水果,用'.'来表示。蒜头君对切出的蛋...原创 2018-02-09 16:13:02 · 701 阅读 · 0 评论 -
合并果子
蒜头君很想吃果子,正好果园果子熟了。在果园里,蒜头君已经将所有的果子打了下来,按照就近原则把果子合成了 nn 堆。蒜头君决定把所有的果子合成一堆。 因为蒜头君比较懒,为了省力气,蒜头君开始想点子了: 每一次合并,蒜头君可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过 n-1n−1 次合并之后,就只剩下一堆了。蒜头君在合并果子时总共消耗的体力等于每次合并所耗体力...原创 2018-02-09 16:10:19 · 244 阅读 · 0 评论 -
勤劳的蒜头君
蒜头君是一个勤学俭工的好学生,每天都会在图书馆担任图书管理员整理书籍,来赚取自己的生活费。但是图书馆的书籍实在是太多了,实在是记不过来。于是蒜头君找到了学习编程的你,想让你通过计算机编写一个程序,实现每查询一本书籍,就告诉他这本书对应的编号(每本书的编号对应它字典序的编号,书名相同的话算一本书)。知道了编号。蒜头君就可以轻松地知道这本书的位置了。输入格式第一行有两个整数 n(1 \le n \le...原创 2018-02-09 16:09:10 · 327 阅读 · 0 评论 -
角谷定理
角谷定理:输入一个自然数,若为偶数,则把它除以 22,若为奇数,则把它乘以 33 加 11。经过如此有限次变换后,总可以得到自然数 11。求一个数 xx 需要经过多少次变换以后可得到自然数 11。输入格式输入一个自然数 n(1 \le n < 2^{31})n(1≤n<231)。输出格式第一行输出变换的次数。接下来一行按照变换顺序输出每次变换以后的值,每两个数中间用一个空格隔开(输出包...原创 2018-02-09 16:08:03 · 1305 阅读 · 0 评论 -
锯木棍
有一根粗细均匀长度为 LL 的木棍,先用红颜色刻度线将它 mm 等分,再用蓝色刻度线将其 nn 等分(m>nm>n),然后按所有刻度线将该木棍锯成小段,计算并输出长度最长的木棍的长度和棍数。输入格式输入仅有一行,包含三个正整数 LL,mm 和 nn,两两之间用一个空格分隔。(1\leq L\leq 1000001≤L≤100000)输出格式输出包含两个正整数 a原创 2018-02-02 15:00:53 · 1679 阅读 · 0 评论 -
分割绳子
现有 NN 条绳子,它们的长度分别为 L_1L1,L_2L2,……,L_nLn,如果从它们中切割出 KK 条长度相同的绳子,这 KK 条绳子每条最长能有多长?输入格式输入共有两行,第一行包含两个正整数 NN 和 KK(1\leq N\leq 10001≤N≤1000,1\leq K\leq 10001≤K≤1000),用一个空格分隔;第二行包含 NN 个数,依次表示原创 2018-02-02 15:01:35 · 1946 阅读 · 2 评论 -
递归函数
有一个函数的定义如下\displaystyle f(x)= \begin{cases} 0 && x \le 0 \\ 1 && x=1 \\ 3f(\frac{x}{2})-1 && x > 1\ \ and\ \ \ x\%2=0 \\ 3f(\frac{x+1}{2})-1 && x > 1\ \ and\ \ \ x\%2=1 \end{cases}f(x)=⎩⎪⎪⎪⎨⎪⎪⎪⎧原创 2018-02-03 19:25:56 · 461 阅读 · 2 评论 -
石头剪刀布
小名和小志在玩石头剪刀布的游戏,谁输了就要做值日。为了保证公平,他们决定玩 nn 局,并且记录下每局两个人出的手势。游戏规则是石头胜剪刀,剪刀胜布,布胜石头,若两人手势相同则是平局。请你根据记录的内容,算出两个人分别赢了多少局。输入格式输入第一行是一个整数 nn(1\leq n\leq 1001≤n≤100)。第二行是一个长度为 nn 个字符的字符串,表示小原创 2018-02-05 14:17:39 · 844 阅读 · 0 评论 -
A+B问题
计算两个非负整数 A,BA,B 的和。不过这一次有些特殊,A,BA,B 可能会很大。输入格式第一行输入一个非负整数 AA。第二行输入一个非负整数 BB。A,BA,B 的长度不大于 500500。输出格式输出 A+BA+B 的值。不要有多余的前导零#include #include using namespace std;strin原创 2018-02-05 14:36:48 · 1166 阅读 · 0 评论 -
斐波那契数列
相信小伙伴们都学过斐波那契数列,它是这样的一个数列:1,1,2,3,5,8,13,21\cdots1,1,2,3,5,8,13,21⋯。用 f_nfn 表示斐波那契数列的第 nn 项,则有:f_1 = f_2 = 1f1=f2=1,f_n = f_{n-1} + f_{n-2} (n>2)fn=fn−1+fn−2(n>2)。输入一个 nn,求出 f_nfn。原创 2018-02-05 14:40:19 · 857 阅读 · 0 评论 -
单向公路
某地区有许多城镇,但并不是每个城镇都跟其他城镇有公路连接,并且有的公路并不能双向行驶。现在我们把这些城镇间的公路分布及允许的行驶方向告诉你,你需要编程解决通过公路是否可以从一个城镇到达另一个城镇。(我们规定,城镇自己跟自己可互相到达,即 AA 可到达 AA)。输入格式第一行只有一个数 NN ,下面将跟着 2N2N 行数据。在前 NN 行数据中,每行数据开头第一个数字 numbernumber ,表...原创 2018-03-08 20:42:38 · 665 阅读 · 0 评论