![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
=======NOI算法======
帝国码农
星星的帝国,码农无数,我是最不亮的那一颗。
展开
-
Worm hole(图)
问题 Worm hole 在探索他的农场时,乔恩发现了几个惊人的黑洞。黑洞是从当前的农场通往其他农场的奇怪的单向通道,可以把时光倒流到比你进去的时间之前。乔恩的农场构成为N个农场和M个双向通道,W个黑洞。还有为了方便,我们在农场上贴了农场1, 农场2, … ,农场 N的名称。乔恩突然好奇从当前位置出发旅行后,重新回到当前位置时,是否会时光倒流。请帮助乔恩编写是否能做时光倒流的旅行的程序。...原创 2018-03-15 00:54:52 · 774 阅读 · 0 评论 -
整理行李
问题 一排货箱里面放入了不同重量的货物,每一个货箱里面有一个货物。目前想按照如下一样的方式整理货箱,就是位于最前面的货箱放着最轻的货物,然后按照重量的顺序整理,最终位于最后面的货箱放着最重的货物。移动货物的时候,需要变换两个货物的位置,这时,消耗的力量为两个货物的重量之和。当给出货箱的个数及按顺序给出货箱里面放入的货物重量时,请编写可以求得整理货箱时所需要的最少力量的程序。比如说, 有重量为 ...原创 2018-03-15 16:22:01 · 193 阅读 · 0 评论 -
打气球
问题 大房间里飘着N个气球。气球从左到右排成一列。珍苏喜欢用箭训练打猎。珍苏从左到右射箭。高度是随意选择的。箭是在选择的高度H上,往面向气球的方向从左到右移动。箭面向气球的瞬间,气球会爆炸,然后消失。然后箭继续往右移动时,高度会降低1。所以在高度H上移动的箭,打破气球后,高度会成为H-1。我们的目标是打破所有气球时,尽量使用最少的箭。输入 第一行,会给出整数N(1 ≤ N ≤ 1 000 00...原创 2018-03-15 16:27:25 · 1440 阅读 · 0 评论 -
区间求和
问题 给出长度为N的数列。数列的初始值是1, 2, 3, …, N。但是这个数列频繁地发生变更,要求出这期间某个连续部分的和。假设N是5的情况。初始为1, 2, 3, 4, 5。在这个情况下,把第3个数字变更为9,第4个数变更为10的话,就会变成1, 2, 9, 10, 5。此时,如果要求第2个数到第5个数的和的话,输出26就可以了。然后,在这个状态下,将第1个数字变更为-5,第三个数变更为5...原创 2018-03-15 16:34:02 · 1614 阅读 · 0 评论 -
剪纸除法
问题PRO_7_4 除如下一样有多个正方形格子构成的正方形模样的纸张,每个正方形涂着0或1。按照固定的规则对给出的纸张进行裁剪。想制作多种大小的涂着0或1的正方形模样彩纸。 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 ...原创 2018-03-15 16:16:09 · 308 阅读 · 0 评论 -
N_Queen
问题:NQUEENN_Queen问题很有名,是在N*N的国际象棋棋盘上N个Queen无法互相攻击的问题。给出N时,请求出放置Queen的方法数。 输入第一行给出自然数N。(1 ≤ N ≤ 12)输出在第一行输出 N个Queen无法互相攻击的而放置的方法数。 案例输入4案例输出2 #include <stdio.h> int N;int a[15]...原创 2018-03-16 09:04:23 · 310 阅读 · 0 评论 -
爬阶梯
问题最多能爬 2个阶梯时,请想一下爬上阶梯有几种方法。如下图片是n为4的情况案例。1 - 2 - 3 - 41 - 2 - 41 - 3 - 42 - 3 - 42 - 4总共有5中情况。那样的话,当阶梯数为n个时, 存在几种情况。因为答案会很大,所以请输出答案除于1,000,000,007的余数。输入输入的第一行给出阶梯的个数(1≤N≤1,000,000,000)。输出请输出爬N个阶梯的情况...原创 2018-03-16 09:10:36 · 396 阅读 · 0 评论 -
NQUEEN(By 位运算)
问题:NQUEENN_Queen问题很有名,是在N*N的国际象棋棋盘上N个Queen无法互相攻击的问题。给出N时,请求出放置Queen的方法数。 输入第一行给出自然数N。(1 ≤ N ≤ 12)输出在第一行输出 N个Queen无法互相攻击的而放置的方法数。 案例输入4案例输出2原创 2018-03-16 09:18:53 · 321 阅读 · 0 评论 -
计算辈分(并查集)
问题 计算辈分 我们国家有个独特的文化,就是把家族或亲戚之间的关系用辈分的单位来表示。这样的辈分会按照如下方式计算。 基本上把父母和子女之间定义为 1辈,这样计算人之间的辈分。比如说,我和爸爸,爸爸和爷爷都是1辈,我和爷爷成为2辈,爸爸兄弟和爷爷是1辈,我和爸爸兄弟成为3辈。当给出多个人的父母子女之间的关系时,请编写能计算提供的两个人辈分的程序。输入第一行给出所有人数 N。每个人的号码各个...原创 2018-03-15 00:56:14 · 3618 阅读 · 0 评论 -
字符串处理
问题PRO_8_8智英的梦想是独裁者,为了独裁,阻止国民抵抗权利的事情则非常重要,因此审查刊物是必须要做的事情。你作为智英的朋友,决定帮助智英审查字符串。准确的审查方法如下*检查字符串S中是否存在样本T。*若存在样本T,则删除此样本首次出现的位置。*一直重复操作直到没有样本为止。 输入在第一行给出字符串S,S的最大长度是1,000,000在下一行给出要检查的样本T,T的长度要小于SS和T都只能...原创 2018-03-16 16:53:04 · 212 阅读 · 0 评论 -
搜索图(DFS+BFS)
问题_PRO_10_1搜索图的方法存在多种,深度优先探索(DFS;Depth First Search)和广度优先搜索(BFS; Breadth First Search)是代表性的搜发方法,请编写深度优先搜索和广度优先搜索的程序。此问题中所谓的广度优先搜索可以认为是使用cue,以一次只搜索一个点的方式进行。并且给定的图是包含起点的一个连接图(connected graph)。 输入第一行给出...原创 2018-03-16 17:00:36 · 258 阅读 · 0 评论 -
同盟的同盟(并查集)
问题3-2 乐星村里有N个人。为了方便,我们把每个人用1到N号标记。第一次,因为这些人互相不认识,所以他们有“敌对关系”。但是他们总不能活在“敌对关系”中。所以这个村里面的人就一个一个结成了“同盟关系”。必然当某个A和B结成同盟关系的话,自然的A的同盟和B的同盟会相互结成同盟关系。随着这样的关系渐渐增多,构成了复杂结构的同盟关系。为了确定谁是谁的同盟,请编写查找关系的程序。为了能容易的了解同盟...原创 2018-03-30 16:59:59 · 299 阅读 · 0 评论 -
解决问题(DP)
问题8-3对就业没有兴趣的郑来没有意识到提升实力的必要性,一直逃避解决问题。但是听了aa的培训之后,郑来有了一个梦想,就是进入aa工作!郑来为了进入aa,需要按顺序准确地解出P(1 ≤ P ≤ 300)个问题才可以。但是由于疏于解题已经很长时间,郑来靠自己一道问题都解不出来。因此郑来请了每天都努力解题的昌洙来帮忙。之前昌洙的实力和郑来差不多,但是经过每天努力的练习,现在昌洙不论接到了怎样的问题,...原创 2018-03-30 16:50:39 · 249 阅读 · 0 评论 -
逆序对(朴素,树状数组)
【解题思路】计算过程等同于使用冒泡排序法,将输入的数据序列进行排序的算法,因此,此问题有另外一个名字:【计算冒泡排序次数】如果 不考虑数据规模及超时,直接进行排序,每移动一次就累加一次,最后输出累计的移动次数便是正解。【方法1:朴素算法】const int MAXI = 100002;int cnt[MAXI];int num[MAXI];int n,i,j,a...原创 2018-08-18 11:11:12 · 590 阅读 · 0 评论 -
商人访问
问题PRO_4_8沙漠中有N (1≤N≤100,000)个城市,各城市的编号为1到N。如果连接两个城市的路有N-1条,任意两个城市之间只存在一条可以移动的路径,某人过一条路准确的需要一天时间,因在除了路以外的地方无法买到水是所以不能这样移动。 一个商人打算从第1个城市开始到第N个城市按照顺序进行访问,做生意。请计算并输出此商人第1个城市开始到第N个城市按照顺序进行访问时需要几天。输入第一行给出...原创 2018-03-15 15:48:05 · 185 阅读 · 0 评论 -
参加宴会
问题宿舍有N个房间,每个房间住一个员工。为了方便给每个员工从1到N进行编号。有一天决定在X号员工的房间开宴会,各个员工从各自的房间出发到X号员工的房间后,等宴会结束后再回自己的房间。此时,移动的路径要按照最短路径进行移动。但问题是连接各房间的M条路是单行道,因此到达那个房间的路径和从那个房间返回的路径只能不同。 给出各条路的信息时,我们来计算去参加宴会然后返回时所用时间最长的员工的所需时间。输...原创 2018-03-15 15:43:29 · 302 阅读 · 0 评论 -
连接棋子(DP)
问题 连接棋子 N个棋子放到了x轴坐标1, 2, ..., n上。N是偶数。其中n/2个是黑色棋子,剩下的n/2个是白色棋子。连接一个黑色棋子和白色棋子弄成一双时,会有n/2个双。连接一双棋子时,会从左边的棋子开始出发垂直往上走,然后水平往右走,接着重新垂直往下走,开拓到达右边棋子的路。长成这样的 n个路不能相互重叠,也不能相互交叉。为了能让所有路的距离之和弄成最小,请编写开拓n个路的程序。 这...原创 2018-03-15 00:49:49 · 380 阅读 · 0 评论 -
和分解(DP)
问题 和分解 当加0到 N的K个整数时,请编写和为N时的情况有多少种的程序。 (加法的顺序变换时,看作不同的情况(1+2和 2+1时为不同的情况。),还有一个数可以使用多次)输入第一行给出,两个整数N(1≤N≤200), K(1≤K≤200)。输出第一行输出,答案除以1,000,000,000的余数。输入案例20 2输出案例21 #include <stdio.h>#define M...原创 2018-03-15 00:47:27 · 375 阅读 · 0 评论 -
最长递增子数列(LIS)
问题 最长递增子数列(LIS) 子数列(Subsequence)指的是某个数列上保持本身的顺序,只选择其中一部分项来构成的数列。比如说有[1,3,2,4]构成的数列,其中 [1,3,4], [1,2,4]等会成为子数列,但[1,2,3]不能成为子数列。 最长递增子数列(Longest IncreasingSubsequence)指的是某个数列的子数列中,各项比之前项递增的子数列。比如说给出的数...原创 2018-03-14 17:52:53 · 794 阅读 · 0 评论 -
相临BIT数(DP)
问题 相邻的bit个数 当前有0和1构成的数列S。S的第一个数是a1, 最后的数是an。S的相邻bit数可以按如下方式求得:a1a2 + a2a3 + a3a4 + ...利用这个公式可以求得数列S中相邻的1的个数。比如说011111101的相邻bit个数为5,11110110是4, 1010101是0。当给出数列S的长度N和K时,请求一下长度为 N的数列中,相邻的bit个数为K的数列S。输入...原创 2018-03-14 17:50:04 · 424 阅读 · 0 评论 -
捡两次废纸(DP)
问题 捡两次废纸 当前有M * N格子构成的城市。这城市各处都有垃圾。范贤捡废纸是从最左上角的格子(1, 1)出发移动到最右下角的 (M, N) ,这时需要走最短的路径。即,只能移动到相邻的向右或向下的格子。在这里要进一步重新从 (M, N)移动到 (1, 1)再次捡废纸。这时也要走最短的路径。即,只能移动到相邻的向左或向上的格子。需要注意的是捡完一次废纸就再没有废纸了。这时,请输出范贤能收集...原创 2018-03-14 17:46:51 · 339 阅读 · 0 评论 -
Amoeba细菌繁殖
问题 Amoeba 农部区域正在研究新发现的阿米巴虫。繁殖力很强的阿米巴虫有如下一样的特征。它做无性生殖。出生之后的第 a天会成为成体。成为成体的那天开始每天都会造出一只新的个体。它成为成体后立马会造出第一个个体,之后每天造出新的个体。新的个体也一样,出生之后第a天开始成为成体,然后造出新的个体。到了出生之后的第 b天开始,不能再造出新的个体了。出生之后的第 a天开始到 b天的前一天可以造出新...原创 2018-03-14 17:43:38 · 536 阅读 · 0 评论 -
拓扑排列(DAG)
问题 拓扑排列 DAG(Directed Acyclic Graph,有向无环图)是以有向边构成的图中,没有循环的图。通过DAG必能做拓扑排列。当给出DAG时, 请编写做拓扑排列的程序。输入第一行空格划分给出图的顶点个数 V, 边的个数 E。 (1≤V≤50,000,1≤E≤100,000) 第二行开始通过E行,空格划分给出每个边的信息 x,y。这个意味着存在从 x出发到达 y的有向边。 (1...原创 2018-03-14 17:40:07 · 510 阅读 · 0 评论 -
俄罗斯套娃(LCS)
俄罗斯套娃 问题 东贤喜欢玩偶,为了东贤我们送一下俄罗斯套娃。俄罗斯套娃是俄罗斯的一个传统人偶,可以在人偶里面放入人偶。人偶排成单行站着。每个人偶大小不一,如果前面的人偶的大小比后面的人偶小的话,可以把前面的人偶放入到后面的人偶里面。比如说,如果按顺序排着大小为(1, 5, 2, 3, 7)的 5个人偶的话,可以把大小为1的人偶放入到大小为 5的人偶里面, 再把这个人偶放入到大小为7的人偶里面...原创 2018-03-14 17:36:41 · 1331 阅读 · 0 评论 -
点与多多边形的关系
问题点的位置二维平面上会给出以N个点构成的多边形。当平面上面给出点 P1, P2时,请编写出判断点 P1, P2是否在多边形外部,或者是在内部的程序。点 P1, P2 不会在多边形的边上面。输入第一行给出构成多边形的个数(1≦N≦100,000),第二行开始给出将输入的N个点的整数坐标(-10^9 ≦ x, y ≦ 10^9)。多边形的坐标按顺时针方向或逆时针方向给出。最后两行给出点 P1, P2...原创 2018-03-14 17:33:28 · 1256 阅读 · 0 评论 -
回文算法1(一般实现)
问题某个字符串$S$的部分字符串(Substring)是指,从字符串$S$中提取连续的部分而构成的字符串。即,$S=$"abcd"字符串存在"abcd","abc", "bcd", "ab", "bc","cd", "a", "b", "c", "d"。同样,Palindrome是指顺读和倒原创 2018-03-14 13:30:27 · 384 阅读 · 0 评论 -
回文算法2(Manacher)
问题某个字符串$S$的部分字符串(Substring)是指,从字符串$S$中提取连续的部分而构成的字符串。即,$S=$"abcd"字符串存在"abcd","abc", "bcd", "ab", "bc","cd", "a", "b", "c", "d"。同样,Palindrome是指顺读和倒原创 2018-03-14 13:34:03 · 96 阅读 · 0 评论 -
Picnic(图)
问题 Picnic 牛打算去郊游!各区域的K(1≤K≤100)只牛在N(1≤N≤1000)个牧草地中的某个牧草地上吃草。我们把这些牧草地命名为牧草地1,2,⋯,N。这些牧草地连接成M(1≤M≤10000)个单向的路。 (每个路的出发地和到达地都不一样。)牛们在郊游过程中,希望在同样的牧草地上集合。但是有些牛不可能到达所有的牧草地(因为是单向道路)。请帮助牛们计算它们能在几个牧草地全部集合。...原创 2018-03-15 00:52:41 · 329 阅读 · 0 评论 -
宝物岛(图)
问题姜熙收到了恶魔的海洋中隐藏着有无数宝物的宝物岛的情报,但是恶魔的海洋内海流特别复杂,姜熙想要获取宝物并找到返回的路太困难因此向各位求救。让我们来计算姜熙在恶魔的海洋中可找到宝物的最短时间。 恶魔的海洋中有从1号到N号的N个岛,连接各岛的海流有M个,海流只流向一个方向,也可能存在多个连接两对的海流。姜熙现在在1号岛,打算去到宝物岛后重新返回到1号岛,逃离恶魔的海洋。 输入在第一行分别给出岛的...原创 2018-03-15 15:41:27 · 247 阅读 · 0 评论 -
[输入优化] 如何快速读取大数据量输入参数
算法编程的第一步,必然是输入各种必要的数据参数,通常使用scanf,cin,getchar(),fread等读取输入数据,当数据量不大,几行,几十行时,以上各种方法没有明显的区别,但是,当数据量为:千万数量级的时候,区别大吗?下面分别讨论:(1)使用scanf();int a[10000001];for (int i=1;i<=10000000;i++) scanf(...原创 2018-08-21 23:26:49 · 769 阅读 · 0 评论