
YCOJ
文章平均质量分 62
herobrineAC
信息学社会团体团长
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
自然数的拆分问题
题目:Description任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。Input待拆分的自然数n。Output对于数字N,输出每种拆分方式。拆分方式的排序方式为第一个数字小的在前面,如果第一个数字一样,则看第二个数字,以此类推。Sample Input7Sample Output1+1+1+1+1+1+11+1+1+1+1+21+1+1+1+3...原创 2019-07-07 14:27:40 · 1510 阅读 · 0 评论 -
常用基础数据结构
1.1. 动态数组有些时候想开一个数组,但是却不知道应该开多大长度合适,因为我们需要用到的数组可能会根据情况变动。这时候我们就需要用到动态数组。所谓动态数组,也就是不定长数组,数组的长度是可以根据我们的需要动态改变的。动态数组的实现也不难,在 C++ 里面有已经写好的标准模板库(StandardTemplate Library),就是我们常说的 STL 库,实现了集合、映射表、栈、队列等数...转载 2019-02-14 07:53:31 · 695 阅读 · 1 评论 -
A+B Problem——经典中的经典
A+B Problem,这道题,吸收了天地的精华,是当之无愧的经典中的经典中的经典。自古以来OIer都会经过它的历练(这不是白说吗?),下面就有我herobrine来讲讲这道题的各种做法。好吧,同志们,我们就从这一题开始,向着蒟蒻 呸,大佬的路进发。任何一个伟大的思想,都有一个微不足道的开始。前方高能C#include <stdio.h>int main() { i...原创 2019-02-13 20:41:28 · 9672 阅读 · 6 评论 -
混合背包
题目混合背包Description一个旅行者有一个最多能装V公斤的背包,现在有n件物品,它们的重量分别是W_1,W_2,...,W_nW 1 ,W 2 ,...,W n ,它们的价值分别为C_1,C_2,...,C_nC 1 ,C 2 ,...,C n 。有的物品只可以取一次(01背包),有的物品可以取无限次(完全背包),有的物品...原创 2019-02-12 20:00:25 · 387 阅读 · 2 评论 -
完全背包问题
题目:完全背包问题Description设有n种物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为M,今从n种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于M,而价值的和为最大。Input第一行:两个整数,M(背包容量,M≤200)和N(物品数量,N≤30);第2…N+1行:每行二个整数Wi,Ci,表示每个物品的重量和价值。O...原创 2019-02-12 20:01:13 · 247 阅读 · 0 评论 -
01背包&&采药
题目:题目描述辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”如...原创 2019-02-12 20:01:58 · 325 阅读 · 0 评论 -
洛谷 P1006 传纸条&城堡之旅_YCOJ
这道题是一个二维的DP,和方格取数非常的相似因为他有来回走,所以我们可以开一个四维数组来存。每道DP题都有自己的公式,这道题的公式就是:dp[i][j][ii][jj]=max(dp[i-1][j][ii-1][jj],max(dp[i-1][j][ii][jj-1],max(dp[i][j-1][ii-1][jj],dp[i][j-1][ii][jj-1])))+mp[i][j]+mp[ii]...原创 2019-02-12 20:04:09 · 258 阅读 · 2 评论 -
洛谷 P1219八皇后
DFS暴力解题思路:dfs:以行数来进行递归,一行一行地看,如果这一排能放一个,就继续递归,否则直接return。还要定义一个数组来存前三个方案。void dfs(int dep){ if(dep>m){ ans++ ; if (ans<=3){ for (int i=1;i<=m;i++){ cout原创 2019-02-12 20:09:22 · 239 阅读 · 0 评论 -
c++的文件读入方式
这里用A+B问题做例子#include <bits/stdc++.h>using namespace std;int main(){ int a,b; freopen("in.in","r",stdin); freopen("out.out","原创 2019-02-12 20:13:50 · 607 阅读 · 0 评论 -
YCOJ装载问题(load)
题目Description有一批共n个集装箱要装上艘载重量为c的轮船,其中集装箱i的重量为wi。找出一种最优装载方案,将 轮船尽可能装满,即在装载体积不受限制的情况下,将尽可能重的集装箱装上轮船。Input第一行有2个正整数n和c。n是集装箱数,c是轮船的载重量。接下来的1 行中有n个正整数,表示集装箱的重量。Output计算出的最大装载重量Sample Inp...原创 2019-02-14 12:46:24 · 982 阅读 · 0 评论 -
YCOJ二进制数问题
题目:Description若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为A类数,否则就称其为B类数。例如: 13=1101 其中1的个数为3,0的个数为1,则称此数为A类数; 10=1010 其中1的个数为2,0的个数也为2,称此数为B类数; 24=11000 其中1的...原创 2019-02-14 14:59:50 · 2355 阅读 · 0 评论 -
目录
YCOJ:找数字&&洛谷P1036选数等边三角形中国邮递员问题家谱迷宫解的方案数踏青工作分配问题(job)黑熊过河二进制数问题装载问题(load)弹地小球字母统计弹簧板2传娃娃数塔问题城堡之旅01背包完全背包问题混合背包洛谷:采药城堡之旅数字三角形 Number Triangles迷宫八皇后陶陶摘苹果(升级版)三连击小A点菜...原创 2019-03-01 19:19:43 · 242 阅读 · 0 评论 -
图论之最小生成树之Kruskal算法
Kruskal算法,又称作为加边法,是配合并查集实现的。图示:如图,这是一个带权值无向图我们要求它的最小生成树。首先,我们发现在1的所有边上,连到3的边的边权值最小,所以加上这条边。然后在3上,连到4的边权值最小,加上这条边。最后,4连到2的边是最小的,加上这条边。现在,所有点都连通了,所以这个图的最小生成树就是2+2+1=5从上述操作中可以看出,Kruskal算法是...原创 2019-06-08 19:41:15 · 348 阅读 · 0 评论 -
单向公路
题目:描述某地区有许多城镇,但并不是每个城镇都跟其他城镇有公路连接,并且有的公路并不能双向行驶。现在我们把这些城镇间的公路分布及允许的行驶方向告诉你,你需要编程解决通过公路是否可以从一个城镇到达另一个城镇。(我们规定,城镇自己跟自己可互相到达,即 a 可到达 a)。输入第一行只有一个数 N ,下面将跟着 2N 行数据。在前 N 行数据中,每行数据开头第一个数字 number,表明这一行总...原创 2019-06-01 16:15:44 · 423 阅读 · 0 评论 -
并查集(入门)
并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。如下图:我们通过反复地合并,可以将其转化为下面的集合:合并所以,并查集的其中一个操纵就是合并,也就是合并两个点所在集合,转换为代码:void merge(int x, int y){fa[get(x)] =...原创 2019-05-18 16:13:34 · 531 阅读 · 1 评论 -
关押罪犯
题目:描述S 城现有两座监狱,一共关押着 NNN 名罪犯,编号分别为 111 ~ NNN。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用 “怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为 ccc 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为 ccc 的冲...原创 2019-05-25 16:24:44 · 600 阅读 · 0 评论 -
排队
Description今天,学校老师让同学们排成一队,准备带大家出去玩,一共有 n 名同学,排队的时候同学们向老师提了 m 条要求,每一条要求是说同学 x 一定要排在同学 y 之前,老师现在想找到一种排队方式可以满足所有的要求,你能帮帮他吗?Input第一行两个整数 n,m(1≤n≤10410^4104,1≤m≤10510^5105),表示同学数和要求数;以下 m 行,每行两...原创 2019-05-03 17:22:44 · 301 阅读 · 0 评论 -
洛谷P1993 小K的农场
题目描述小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述:农场a比农场b至少多种植了c个单位的作物,农场a比农场b至多多种植了c个单位的作物,农场a与农场b种植的作物数一样多。但是,由于小K的记忆有些偏差,所以他想要知道存不存在一种情况,使得农场的种植作物数量与他记忆中的所有信息吻合。...原创 2019-04-13 11:33:46 · 167 阅读 · 0 评论 -
图论之最短路算法SPFA算法——已修正错误
SPFA(Shortest Path Faster Algorithm)算法,是一种求最短路的算法。SPFA的思路及写法和BFS有相同的地方,我就举一道例题(洛谷——P3371 【模板】单源最短路径(弱化版))来做讲解吧!如题:首先,我们先来定义一波变量吧:struct node{ int v,w; node (){ } node (int _v,int _w){ v=_v;...原创 2019-04-13 11:21:13 · 332 阅读 · 0 评论 -
P1020 导弹拦截
题目题目描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是 \le 50000≤50000的正整数),计算这套系统最多能拦截多...原创 2019-03-09 16:21:32 · 375 阅读 · 0 评论 -
YCOJ弹簧板2
弹簧板IIDescription有一个小球掉落在一串连续的弹簧板上,小球落到某一个弹簧板后,会被弹到某一个地点,直到小球被弹到弹簧板以外的地方。假设有 n 个连续的弹簧板,每个弹簧板占一个单位距离,a[i],b[i] 代表第 i 个弹簧板会把小球向前弹 a[i] 或 b[i]个距离。比如位置 1 的弹簧能让小球前进 2 个距离到达位置 3。如果小球落到某个弹簧板后,经过一系列弹跳会被弹出弹...原创 2019-02-13 09:28:19 · 758 阅读 · 0 评论 -
set(集合)_YCOJ
set,也就是集合,他像是一个箱子吧,这个箱子之能装同一种变量,比如int,string等等。用set<类型>集合名来定义。他有许多函数,如下图所示:insert 插入一个元素erase 删除一个元素count 判断元素是否在 set 中size 获取元素个数clear 清空set他有个好处是自动排序去重,不需要人工操作。访问他需要迭代器比如:(set&原创 2019-02-13 09:29:07 · 207 阅读 · 0 评论 -
YCOJ中国邮递员问题
题目:Description一个邮递员从邮局出发,需要去 n - 2个城市送信,送完信件以后回家。邮局在城市 1,家在城市 n,任意两个城市之间都有道路,但是这些道路是单向,也就是说 a 到 b 和 b 到 a 的路径长度不一定是一样的。他必须经过每个城市一次,并且不能重复经过,最后回到家里。现在要求你计算他需要经过的路径总和的最小长度。Input第一行有一个整数 n(...原创 2019-02-17 14:18:26 · 1794 阅读 · 0 评论 -
YCOJ家谱
题目:Description家谱:又称族谱、宗谱等。是一种以表谱形式,记载一个家族的世系繁衍及重要人物事迹的书。皇帝的家谱称玉牒,如新朝玉牒、皇宋玉牒。它以记载父系家族世系、人物为中心,由正史中的帝王本纪及王侯列传、年表等演变而来。家谱是一种特殊的文献,就其内容而言,是中国五千年文明史中具有平民特色的文献,记载的是同宗共祖血缘集团世系人物和事迹等方面情况的历史图籍。家谱属珍贵的人文资料,对...原创 2019-02-17 10:48:21 · 455 阅读 · 0 评论 -
背包问题
背包问题01背包完全背包问题混合背包压缩01背包01背包,他名字的来源就是有两种概念,选和不选,所以叫01背包。这种背包的大致题目是:有N件物品和一个容量为V 的背包。放入第i件物品耗费的空间是Ci,得到的价值是Wi。求解将哪些物品装入背包可使价值总和最大。这就是最基础的背包问题。用子问题定义状态:即dp[i, v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态...原创 2019-02-15 16:54:02 · 370 阅读 · 0 评论 -
YCOJ迷宫解的方案数
题目Description小信是一个玩迷宫的高手,天下还没有能难住他的迷宫。但是总有人喜欢刁难小信,不停的给小信出难题。这个出题的人很聪敏,他知道天下还没有能难住小信的迷宫。所以他便转换思维问小信,在不走重复路径的情况下,总共有多少不同可以到达终点的路径呢?小信稍加思索便给出了答案,你要不要也来挑战一下?Input第一行输入两个整数 n(1 ≤ n ≤ 11), m(1 ≤ m ≤...原创 2019-02-15 11:02:26 · 478 阅读 · 0 评论 -
洛谷 P1216 数字三角形 Number Triangles&&YCOJ 数塔问题
这是一道典型的DP,可以从上往下推,也可以从下往上推。如图就是一个数字三角形。51311 812 7 266 14 15 812 7 13 24 11刚才的那个图向左靠齐后就是这样的,由图,我们就可以推出从上往下递归公式:aa[i][j]+=max(a[i-1][j],a[i-1][j-1]);然后再来讲讲从下往上推的公式:a[i][j]+=max(a[i+1][j],a...原创 2019-02-12 20:06:35 · 568 阅读 · 0 评论 -
深度优先搜索
5.1. 从递归到深度优先搜索深度优先搜索,简称 dfs,是一个经典的搜索算法,能够把具体的方案找出来。现在我们要把 dfs 和递归联系起来。前面学习递归的时候,我们学习过用递归实现阶乘int factorial(int n) {if (n == 1) {return 1;}return n * factorial(n ‐ 1);}和用递归实现斐波那契数列 int fib(i...转载 2019-02-15 09:53:21 · 382 阅读 · 0 评论 -
YCOJ踏青
题目踏青Description小白和他的朋友周末相约去召唤师峡谷踏青。他们发现召唤师峡谷的地图是由一块一块格子组成的,有的格子上是草丛,有的是空地。草丛通过上下左右 4 个方向扩展其他草丛形成一片草地,任何一片草地中的格子都是草丛,并且所有格子之间都能通过上下左右连通。如果用'#'代表草丛,'.'代表空地,下面的峡谷中有 2 片草地。##....##处在同一个草地的 2 个人可...原创 2019-02-15 09:32:04 · 301 阅读 · 0 评论 -
YCOJ工作分配问题(job)
题目:Description设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为c[i][j] 。试设计一个算法,为每一个人都 分配一件不同的工作,并使总费用达到最小。设计一个算法,对于给定的工作费用,计算最佳工作分配方案,使总费用达到最小。Input第一行有1个正整数n (1≤n≤20)。接下来的n行,每行n个数,第i行表 示第i个人各项工作费用Outp...原创 2019-02-14 19:35:06 · 564 阅读 · 1 评论 -
YCOJ等边三角形
题目Description小白手上有一些小木棍,它们长短不一,小白想用这些木棍拼出一个等边三角形,并且每根木棍都要用到。 例如,小白手上有长度为 1,2,3,3 的4根木棍,他可以让长度为1,2 的木棍组成一条边,另外 2 跟分别组成 2 条边,拼成一个边长为 3 的等边三角形。小白希望你提前告诉他能不能拼出来,免得白费功夫。Input首先输入一个整数 n(3 ≤ n ≤ 200)...原创 2019-02-17 16:54:44 · 549 阅读 · 0 评论 -
动态规划初步——易懂
目录1.递推2.动态规划入门动态规划的科普动态规划的基本概念:动态规划的优化原理与无后效性。背包1.递推讲到动态规划就不得不提到递归,递推是经常被使用的一种简单算法。递推 是一种用若干步可重复的简单运算来描述复杂问题的方法。递推的特点在于,每一项都和他前面的若干项有一定关联,这种关联一般可以通过 递推关系式 来表示,可以通过其前面若干项得出某项的数据。对于递推问题的求解一般从初始的一个或若干个...原创 2019-02-17 20:09:15 · 414 阅读 · 0 评论 -
Hello world
Hello world 是和A+B问题并驾齐驱的一道题,也是当世的经典题之一。题目:输出“Hello world”样例输入样例输出Hello worldHello world 这道题嘛,我怎么可能只讲最简单的做法呢?前方高能C++#include<isotream>using namespace std;int main(){ cout<<...原创 2019-02-18 08:49:42 · 244 阅读 · 0 评论 -
图和树基础
2. 图和树基础 2.1. 什么是图 在一个社交网络中,每个帐号和他们之间的关系构成了一张巨大的网络,就像下面这张图: 那么在电脑中,我们要用什么样的数据结构来保存这个网络呢?这个网络需要用一个之前课程里未提到过的数据结构,也就是接下来要讲解的 图 结构来保存。到底什么是图?图是由一系列顶点和若干连结顶点集合内两个顶点的边组成的数据结构。数学意义上的图,指的是...转载 2019-02-13 09:30:07 · 1061 阅读 · 1 评论 -
YCOJ字母统计
字母统计Description输入一串字符,包含英文字母、空格和标点符号,请统计其中英文字母出现的次数,不区分大小写。Input输入一串字符Output按顺序输出英文字母和出现次数,如未出现,则不要输出。Sample Input 1Goats like to eat grass.Sample Output 1a 3e 2g 2i 1k 1l 1o 2r 1...原创 2019-02-13 09:33:17 · 209 阅读 · 0 评论 -
C++结构体的应用_YCOJ
结构体是一种自定义的东西,用struct来定义。在他里面, 可以装许多东西,比如int,string,char,bool等等等等。 如: struct a{ string name; int a; int b; }; …… a s; cin &amp;amp;gt;&amp;amp;gt; s.name; 代码示范: 例题...原创 2019-02-13 13:29:11 · 475 阅读 · 1 评论 -
C++二分查找算法_YCOJ
首先,我们来了解一下二分查找: 二分查找这种东西嘛,是一种算法。他需要三种东西,left,right,mid,简称l,r,mid(这个好像没改,就取了一个首字母而已)。相当于在一个数组里先分成两半,看我们的mid(也就是中间数,公式:(l+r)/2)是否大于或小于我们要找的那个数(就设他为x嘛);如果小于,就说明x在后一半;反之就说明x在前一半;然后在对剩下的做上述处理。以此类推,直到r-l&amp;amp;amp;...原创 2019-02-13 13:32:45 · 689 阅读 · 0 评论 -
YCOJ弹地小球
题目: 弹地小球Description一个小球,从高为H的地方下落,下落弹地之后弹起高度为下落时的一半,比如第一次弹起高度为H/2,如此往复,计算小球从H 高度下落到第n 次落地往返的总路程。Input输入两个整数H和n。Output输出总路程,结果保留小数点后两位。Sample Input 1 5 2Sample Output 110.00 做题...原创 2019-02-13 13:42:14 · 409 阅读 · 2 评论 -
广度优先搜索
3.1. 队列这一节我们先学习一个新的数据结构——队列。队列(queue) 是一种线性的数据结构,和栈一样是一种运算受限制的线性表。其限制只允许从表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。一般允许进行插入的一端我们称为队尾,允许删除的一端称为队首。队列的插入操作又叫入队,队列的删除操作又叫出队。可以把队列想象成购物时排队结账的队伍,先排队的人会先结账,后排...转载 2019-02-13 14:32:31 · 412 阅读 · 3 评论 -
YCOJ最长上升子序列
题目:最长上升子序列Description例如13,7,9,16,38,24,37,18,44,19,21,22,63,15。例中13,16,18,19,21,22,63就是一个长度为7的上升序列,同时也有7 ,9,16,18,19,21,22,63组成的长度为8的上升序列。Input第一行为n,第二行为用空格隔开的n个整数Output一行输出最长上升子序列的长度...原创 2019-02-18 11:11:53 · 324 阅读 · 0 评论