![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法基础
wyi06
这个作者很懒,什么都没留下…
展开
-
最近公共祖先LCA(Lowest Common Ancestor)
准备:1.C++的几种for循环遍历:5种、Range-based for loops,其中auto在C++11标准的语法中,auto被定义为自动推断变量的类型,不过C++11的auto关键字时有一个限定条件,那就是必须给申明的变量赋予一个初始值,否则编译器在编译阶段将会报错。2.存储数据:typedef pair pii;const int N = 1e5 + 5;vecto原创 2017-08-15 15:20:45 · 303 阅读 · 0 评论 -
Arya and Bran & Game of the Rows & Multiple Clocks
题目一:Arya and Bran错解:#include int main(){ int n,k,candy; int left = 0,day = 0,toGive = 0,yes = 0; scanf("%d %d",&n,&k); for(int i = 0;i < n;i ++) { scanf("%d",&candy); candy += left;原创 2017-08-13 11:37:39 · 266 阅读 · 0 评论 -
Scrambled Polygon
题目:A closed polygon is a figure bounded by a finite number of line segments. The intersections of the bounding line segments are called the vertices of the polygon. When one starts at any vertex o原创 2017-08-01 17:54:39 · 281 阅读 · 0 评论 -
Pick-up sticks
题目:Stan has n sticks of various length. He throws them one at a time on the floor in a random way. After finishing throwing, Stan tries to find the top sticks, that is these sticks such that the原创 2017-08-01 17:50:06 · 700 阅读 · 0 评论 -
计算几何基础提纲
一、约定格式a) 点、向量的表示b) 封装向量加减法、点积、叉积double mult(struct point p1,struct point p2,struct point p3) { return (p2.x-p1.x)*(p3.y-p1.y)-(p2.y-p1.y)*(p3.x-p1.x); } double dis(st原创 2017-08-01 17:46:30 · 369 阅读 · 0 评论 -
翻硬币
题目:小明正在玩一个“翻硬币”的游戏。桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。比如,可能情形是:**oo***oooo如果同时翻转左边的两个硬币,则变为:oooo***oooo现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?我们约定:把翻动相邻的两原创 2017-04-04 23:55:27 · 349 阅读 · 0 评论 -
剪格子
题目:如下图所示,3 x 3 的格子中填写了一些整数。+--*--+--+|10* 1|52|+--****--+|20|30* 1|*******--+| 1| 2| 3|+--+--+--+ 我们沿着图中的星号线剪开,得到两个部分,每个部分的数字和都是60。本题的要求就是请你编程判定:对给定的m x n 的格子中的整数,是否可以分割为两个部分,使得这两个原创 2017-04-03 14:54:08 · 323 阅读 · 0 评论 -
全排列(总结)
按字典序进行全排列1.对1~n进行全排列(递归)#includeint a[6];int visited[6];int n;void dfs(int position){ if(position == n+1) { for(int i = 1;i <= n;i ++) printf("%d",a[i]); printf("\n"); return; }原创 2017-03-31 22:24:53 · 318 阅读 · 0 评论 -
带分数
题目:100 可以表示为带分数的形式:100 = 3 + 69258 / 714。还可以表示为:100 = 82 + 3546 / 197。注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。类似这样的带分数,100 有 11 种表示法。输入格式从标准输入读入一个正整数N (N输出格式程序输出该数字用数码1~9不重复不遗漏地组成带分数表示原创 2017-03-30 21:17:57 · 271 阅读 · 0 评论 -
打印十字图
题目:小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:..$$$$$$$$$$$$$....$...........$..$$$.$$$$$$$$$.$$$$...$.......$...$$.$$$.$$$$$.$$$.$$.$...$...$...$.$$.$.$$$.$.$$$.$.$$.$.$...$...$.$.$$.$.$.$$$$$原创 2017-03-30 00:05:27 · 223 阅读 · 0 评论 -
逆序对 (没看懂)
题目:Alice是一个让人非常愉跃的人!他总是去学习一些他不懂的问题,然后再想出许多稀奇古怪的题目。这几天,Alice又沉浸在逆序对的快乐当中,他已近学会了如何求逆序对对数,动态维护逆序对对数等等题目,他认为把这些题让你做简直是太没追求了,于是,经过一天的思考和完善,Alice终于拿出了一道他认为差不多的题目:有一颗2n-1个节点的二叉树,它有恰好n个叶子节点,每个节点上写了一个整数。如果原创 2017-03-26 13:44:09 · 378 阅读 · 0 评论 -
FBI树 (建立)遍历二叉树
题目:我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串。 FBI树是一种二叉树,它的结点类型也包括F结点,B结点和I结点三种。由一个长度为2N的“01”串S可以构造出一棵FBI树T,递归的构造方法如下: 1)T的根结点为R,其类型与串S的类型相同; 2)若串S的长度大于1,将串S从中间分开,分为等长的左右子原创 2017-03-25 14:24:37 · 651 阅读 · 0 评论 -
还原二叉树
对于二叉树T,可以递归定义它的先序遍历、 中序遍历和后序遍历,如下所示:PreOrder(T)=T的根结点+PreOrder(T的左子树)+PreOrder(T的右子树)InOrder(T)=InOrder(T的左子树)+T的根结点+InOrder(T的右子树)PostOrder(T)=PostOrder(T的左子树)+PostOrder(T的右子树)+T的根结点若已知中序遍历和另原创 2017-03-22 10:22:24 · 466 阅读 · 0 评论 -
Tricky and Clever Passwordcsnd
一开始不懂什么是KMP算法,网上搜了一下,觉得这篇写得让我最能接受http://www.ituring.com.cn/article/59881我从里面摘抄了一些点子:1.KMP算法优化字符串匹配的方法:寻找最长首尾匹配位置。2.首尾匹配位置就是说,给定一个字符串N(长度为n,即N由N[0]...N[n]组成),找出是否存在这样的i,使得N[0]=N[n-i],N1=N[n-i-1原创 2017-03-18 21:42:33 · 614 阅读 · 0 评论 -
未名湖边的烦恼
题目:每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。 每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)输入格式 两个整数,表示m和n输出格式原创 2017-03-15 10:54:11 · 287 阅读 · 0 评论 -
Unixls命令(不是自己写得,但有可以借鉴的地方)
get ideas:1.按列排序,可以根据横纵坐标来求下标:int cols = (maxcol - M) / (M + 2) + 1, rows = (n - 1) / cols+ 1;2.除了用制表符/t外,可以通过补空的方式输出表格cout for(int i = 0; i cout #include#include#includeusing namespace原创 2017-03-12 16:16:42 · 443 阅读 · 0 评论 -
C++ STL入门《算法入门经典》
一)C++基础1.头文件:C++能编译大多数C语言程序。在C头文件之前加一个小写的c字母,然后去掉.h后缀。2.引用:在参数名之前加一个“&”符号,就表示这个参数按照传引用(byreference)的方式传递eg:#includeusing namespace std;void swap2(int& a, int& b) {int t = a; a = b; b = t;}原创 2017-03-10 16:43:30 · 1694 阅读 · 0 评论 -
表达式求值(递归和栈)
问题:输入一个只包含加减乖除和括号的合法表达式,求表达式的值。其中除表示整除。输入格式 输入一行,包含一个表达式。输出格式 输出这个表达式的值。样例输入1-2+3*(4-5)样例输出-4数据规模和约定 表达式长度不超过100,表达式运算合法且运算过程都在int内进行。1.用递归的方式:原创 2017-03-10 15:19:10 · 1379 阅读 · 0 评论 -
救济金发放
题目:n(n<20)个人站成一圈,逆时针编号为1~n。 有两个官员,A从1开始逆时针数,B从n开始顺时针数。 在每一轮中,官员A数k个就停下来,官员B数m个就停下来(注意有可能两个官员停在同一个人上)。 接下来被官员选中的人(1个或者2个)离开队伍。输入n,k,m输出每轮里被选中的人的编号(如果有两个人,先输出被A选中的)。例如,n=10,k=4,m=3,输出为4 8, 9 5, 3 1,原创 2017-03-08 16:01:42 · 595 阅读 · 0 评论 -
刽子手游戏
题目:游戏规则是这样的:计算机想一个单词让你猜,你每次可以猜一个字母。 如果单词里有那个字母,所有该字母会显示出来;如果没有那个字母,则计算机会在一幅“刽子手”画上填一笔。 这幅画一共需要7笔就能完成,因此你最多只能错6次。 注意,猜一个已经猜过的字母也算错。在本题中,你的任务是编写一个“裁判”程序,输入单词和玩家的猜测,判断玩家赢了(You win.)、 输了(You lose.)还是放原创 2017-03-07 15:11:35 · 1627 阅读 · 0 评论 -
函数及递归《算法入门经典》第四章(由于能力和时间有限没有做习题)
一)自定义函数与结构体:1.在算法竞赛中,请总是让main函数返回0,以免评测系统错误地认为程序异常退出了。2.typedef struct { 域定义; }类型名,就可以像原生数据类型一样使用这个自定义类型3.即使最终答案在所选择的数据类型范围之内,计算的中间结果仍然可能溢出。比如猴子吃桃问题;对复杂的表达式进行化简有时不仅能减少计算量,还能减少甚至避免中间结果溢出。a.原创 2017-03-06 13:54:24 · 279 阅读 · 0 评论 -
字符串和数组 《算法入门经典》第三章
简单用数组存储数据、用数组自己做表格、用循环数组判断特定的序列原创 2017-01-18 11:54:24 · 247 阅读 · 0 评论 -
《算法入门经典》1~2章 读后感
数据溢出/scanf返回值原创 2017-01-06 10:28:02 · 321 阅读 · 0 评论 -
全排列
题目:给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。 我们假设对于小写字母有'a' < 'b' < ... < 'y' < 'z',而且给定的字符串中的字母已经按照从小到大的顺序排列。输入输入只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在1到6之间。输出输出这个字符串的所有排列方式,每行一个排列。要求字母序比较小的排列在前面。字母序如下定义:原创 2017-02-13 16:09:26 · 332 阅读 · 0 评论 -
文件结构“图”
题目:在计算机上看到文件系统的结构通常很有用。Microsoft Windows上面的"explorer"程序就是这样的一个例子。但是在有图形界面之前,没有图形化的表示方法的,那时候最好的方式是把目录和文件的结构显示成一个"图"的样子,而且使用缩排的形式来表示目录的结构。比如:ROOT| dir1| file1| file2| file3|原创 2017-02-13 16:00:34 · 3210 阅读 · 0 评论 -
Aggressive cows
题目:Farmer John has built a new long barn, with N (2 His C (2 <= C <= N) cows don't like this barn layout and become aggressive towards each other once put into a stall. To prevent the cows from原创 2017-02-21 17:42:21 · 349 阅读 · 0 评论 -
画家问题
题目:有一个正方形的墙,由N*N个正方形的砖组成,其中一些砖是白色的,另外一些砖是黄色的。Bob是个画家,想把全部的砖都涂成黄色。但他的画笔不好使。当他用画笔涂画第(i, j)个位置的砖时, 位置(i-1, j)、 (i+1, j)、 (i, j-1)、 (i, j+1)上的砖都会改变颜色。请你帮助Bob计算出最少需要涂画多少块砖,才能使所有砖的颜色都变成黄色。输入第一行是一个整数n (1≤n原创 2017-02-11 21:52:24 · 362 阅读 · 0 评论 -
拨钟问题
题目:有9个时钟,排成一个3*3的矩阵。|-------| |-------| |-------|| | | | | | ||---O | |---O | | O || | | | | ||-------| |-------| |---原创 2017-02-11 21:44:57 · 787 阅读 · 0 评论 -
猴子吃桃
题目:海滩上有一堆桃子,N只猴子来分。第一只猴子把这堆桃子平均分为N份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子接着把剩下的桃子平均分成N份,又多了一个,它同样把多的一个扔入海中,拿走了一份。第三、第四、……,第N只猴子仍是最终剩下的桃子分成N份,扔掉多了的一个,并拿走一份。 编写程序,输入猴子的数量N,输出海滩上最少的桃子数,使得每只猴子都可吃到桃子。输原创 2017-03-01 10:49:30 · 728 阅读 · 1 评论 -
垃圾炸弹
题目:2014年巴西世界杯(2014 FIFA World Cup)开踢啦!为了方便球迷观看比赛,里约街道上很多路口都放置了的直播大屏幕,但是人群散去后总会在这些路口留下一堆垃圾。为此巴西政府决定动用一种最新发明——“垃圾炸弹”。这种“炸弹”利用最先进的量子物理技术,爆炸后产生的冲击波可以完全清除波及范围内的所有垃圾,并且不会产生任何其他不良影响。炸弹爆炸后冲击波是以正方形方式扩散的,炸弹威力(扩原创 2017-03-01 09:46:48 · 3773 阅读 · 0 评论 -
Shredding Company
题目:You have just been put in charge of developing a new shredder for the Shredding Company Although a "normal" shredder would just shred sheets of paper into little pieces so that the contents would原创 2017-02-19 16:30:49 · 332 阅读 · 0 评论 -
A Knight's Journey
题目:BackgroundThe knight is getting bored of seeing the same black and white squares again and again and has decided to make a journeyaround the world. Whenever a knight moves, it is two squares in原创 2017-02-18 18:33:37 · 470 阅读 · 0 评论 -
完美覆盖
一张普通的国际象棋棋盘,它被分成 8 乘 8 (8 行 8 列) 的 64 个方格。设有形状一样的多米诺牌,每张牌恰好覆盖棋盘上相邻的两个方格,即一张多米诺牌是一张 1 行 2 列或者 2 行 1 列的牌。那么,是否能够把 32 张多米诺牌摆放到棋盘上,使得任何两张多米诺牌均不重叠,每张多米诺牌覆盖两个方格,并且棋盘上所有的方格都被覆盖住?我们把这样一种排列称为棋盘被多米诺牌完美覆盖。这是一个简单原创 2017-02-13 14:05:25 · 446 阅读 · 0 评论 -
Yogurt factory
题目:The cows have purchased a yogurt factory that makes world-famous Yucky Yogurt. Over the next N (1 <= N <= 10,000) weeks, the price of milk and labor will fluctuate weekly such that it will cost t原创 2017-02-21 19:25:14 · 255 阅读 · 0 评论 -
Color Length
题目:Color Length解题思路:用d[i][j]表示序列1移走i个元素和序列2移走j个元素的最小“代价”, 这个代价指的是由那些已经移出的字母合并而来的序列中已经出现但尚未结束的字母对总距离和的贡献。比如说一个合并而来的序列中有两个那样的字母,第一个在这个序列中后面有3个字母,另一个字母后面有2个字母,那么此时的代价就是2+3,表示这两个字母在这种合并情况下至少能为总距离和贡献原创 2017-08-13 22:51:21 · 373 阅读 · 0 评论 -
What Kind of Friends Are You?
题目:Japari Park is a large zoo home to extant species, endangered species, extinct species, cryptids and some legendary creatures. Due to a mysterious substance known as Sandstar, all the animals原创 2017-07-23 14:19:45 · 312 阅读 · 0 评论 -
Let's Chat
题目:ACM (ACMers' Chatting Messenger) is a famous instant messaging software developed by Marjar Technology Company. To attract more users, Edward, the boss of Marjar Company, has recently added a原创 2017-07-23 11:32:57 · 337 阅读 · 0 评论 -
Oulipo 、Power Strings (KMP入门)
题目:The French author Georges Perec (1936–1982) once wrote a book, La disparition, without the letter 'e'. He was a member of the Oulipo group. A quote from the book:Tout avait Pair normal,原创 2017-07-30 14:12:38 · 208 阅读 · 0 评论 -
Salty Fish
题目:海边躺着一排咸鱼,一些有梦想的咸鱼成功翻身(然而没有什么卵用),一些则是继续当咸鱼。一个善良的渔夫想要帮这些咸鱼翻身,但是渔夫比较懒,所以只会从某只咸鱼开始,往一个方向,一只只咸鱼翻过去,翻转若干只后就转身离去,深藏功与名。更准确地说,渔夫会选择一个区间[L,R],改变区间内所有咸鱼的状态,至少翻转一只咸鱼。渔夫离开后想知道如果他采取最优策略,最多有多少只咸鱼成功翻身,但原创 2017-07-21 20:26:03 · 404 阅读 · 0 评论 -
DFS连通图
一:题目:油田(Oil Deposits, UVa 572)输入一个m行n列的字符矩阵,统计字符“@”组成多少个八连块。 如果两个字符“@”所在的格子相邻(横、 竖或者对角线方向),就说它们属于同一个八连块。 例如,下图中有两个八连块。二 题目:百练2815 城堡问题 右图是一个城堡的地形图。请你编写一个程序,计算城堡一共有多少房间,最大的房间有多大。城堡被分割成m×n(m≤50,n≤50)个方块,每个方块可以有0~4面墙。原创 2017-04-22 15:45:38 · 680 阅读 · 0 评论