数据结构与算法
PTA、蓝桥杯、力扣等算法
小鱼爱吃火锅
多学习,多积累
展开
-
错排公式
经典的错排问题:将n封信放进n个信封,并且使他们不在各自原来的位置,有多少种装法?设f(n)种方法,第一封信有n-1种放法,设它放在了第i个信封里,接下来有两种可能(1).第i封信放在了第一个信封里,剩下的便是f(n-2)。(2).若没有,则为n-1封信进行错 排,f(n-1)。递推得,f(n)=(n-1)*(f(n-1)+f(n-2))。f(1)=0,f(2)=1....原创 2019-10-07 13:27:51 · 135 阅读 · 0 评论 -
线段树--区间更新,区间最大值模板
与区间求和不同--需要每次更新当前树节点的最值//向上更新最值 public static void pushup(int node){ tree[node]=Math.max(tree[node*2+1],tree[node*2+2]); }//向下更新 public static void pushdown(int node){ if(lazy[node]==0...原创 2019-10-29 14:14:24 · 266 阅读 · 0 评论 -
Balanced Lineup (线段树--区间查询最大值和最小值)
For the daily milking, Farmer John'sNcows (1 ≤N≤ 50,000) always line up in the same order. One day Farmer John decides to organize a game of Ultimate Frisbee with some of the cows. To keep things ...原创 2019-10-30 17:01:54 · 163 阅读 · 0 评论 -
线段树--区间更新,区间查询模板(懒标记)
在线段树中会遇到区间更新的情况,例如 在区间求和问题中,令[a,b]区间内的值全部加c,若此时再采用单点更新的方法,就会耗费大量时间,这个时候就要用到懒标记来进行区间更新了。 设当前结点对应区间[l, r],待更新区间[a, b] 当 a ≤ l ≤ r ≤ b,即 [l, r]∈[a,b]时,不再向下更新,仅更新当前结点,并在该结点加上懒标记,当必须得更新/查询该...原创 2019-10-28 23:42:46 · 242 阅读 · 0 评论 -
Japan (线段树--求逆序对^坑^)
Japan plans to welcome the ACM ICPC World Finals and a lot of roads must be built for the venue. Japan is tall island with N cities on the East coast and M cities on the West coast (M <= 1000, N &l...原创 2019-11-01 14:56:27 · 196 阅读 · 0 评论 -
Minimum Inversion Number (线段树求逆序对+规律)
The inversion number of a given number sequence a1, a2, ..., an is the number of pairs (ai, aj) that satisfy i < j and ai > aj.For a given sequence of numbers a1, a2, ..., an, if we move the f...原创 2019-10-31 13:59:01 · 179 阅读 · 0 评论 -
线段树--逆序对模板
逆序对:比如 2 1就是一个逆序对 ,i<j,但是a[i]>a[j]怎么用线段树求逆序对? ----->>> import java.util.Scanner;publi...原创 2019-10-31 11:53:35 · 236 阅读 · 0 评论 -
hdu3577 Fast Arrangement(线段树--区间更新,区间最大值)
Chinese always have the railway tickets problem because of its' huge amount of passangers and stations. Now goverment need you to develop a new tickets query system.One train can just take k passang...原创 2019-10-29 14:20:41 · 183 阅读 · 0 评论 -
HDU - 1166 敌兵布阵(线段树--区间查询,单点更新)
C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视。中央情报局要研究敌人究竟演习什么战术,所...原创 2019-09-21 09:19:20 · 109 阅读 · 0 评论 -
HDU - 1754 I Hate It (线段树--单点更新,区间最大值)
很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。这让很多学生很反感。不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。Input本题目包含多组测试,请处理到文件结束。在每个测试的第一行,有两个正整数 N 和 M ( 0<N<=200000,0<M<5...原创 2019-09-21 12:37:28 · 122 阅读 · 2 评论 -
Ultra-QuickSort (线段树求逆序对+离散化)
In this problem, you have to analyze a particular sorting algorithm. The algorithm processes a sequence of n distinct integers by swapping two adjacent sequence elements until the sequence is sorted i...原创 2019-10-31 15:47:29 · 115 阅读 · 0 评论 -
A Simple Problem with Integers (线段树--区间更新,区间求和)
You haveNintegers,A1,A2, ... ,AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each number in a given interval. The other is to ask for the ...原创 2019-10-29 14:08:28 · 112 阅读 · 0 评论 -
HDU - 4027 Can you answer these queries? (线段树--区间更新-每个结点更新为原来结点的根号值,区间求和)
A lot of battleships of evil are arranged in a line before the battle. Our commander decides to use our secret weapon to eliminate the battleships. Each of the battleships can be marked a value of end...原创 2019-10-30 16:57:28 · 128 阅读 · 0 评论 -
Count Color (线段树--区间更新+位运算)
Chosen Problem Solving and Program design as an optional course, you are required to solve all kinds of problems. Here, we get a new problem.There is a very long board with length L centimeter, L is...原创 2019-10-29 17:59:33 · 430 阅读 · 0 评论 -
线段树--单点更新,区间求和模板
线段树学习建议视频:https://www.bilibili.com/video/av47331849public class main { //建线段树 public static void buildTree(int arr[],int tree[],int node,int start,int end){ if(start==end){ tree[node]=arr...原创 2019-09-20 17:15:33 · 181 阅读 · 0 评论 -
Billboard (线段树--区间更新时求最大值)
At the entrance to the university, there is a huge rectangular billboard of size h*w (h is its height and w is its width). The board is the place where all possible announcements are posted: nearest p...原创 2019-10-31 14:19:40 · 353 阅读 · 0 评论 -
如何以管理员方式运行cmd
这里我们在Windows10系统的搜索框中直接输入命令CMD。然后搜索结果中,还是在命令提示符上单击右键,选择管理员身份运行。原创 2019-11-24 15:06:10 · 513 阅读 · 0 评论 -
愚人节的礼物
四月一日快到了,Vayko想了个愚人的好办法——送礼物。嘿嘿,不要想的太好,这礼物可没那么简单,Vayko为了愚人,准备了一堆盒子,其中有一个盒子里面装了礼物。盒子里面可以再放零个或者多个盒子。假设放礼物的盒子里不再放其他盒子。 用()表示一个盒子,B表示礼物,Vayko想让你帮她算出愚人指数,即最少需要拆多少个盒子才能拿到礼物。 Input本题目包含多组测试,请处理到文件结束。 每组...原创 2019-02-06 18:31:23 · 125 阅读 · 0 评论 -
Gennady and a Card Game (字符串)
Gennady owns a small hotel in the countryside where he lives a peaceful life. He loves to take long walks, watch sunsets and play cards with tourists staying in his hotel. His favorite game is called ...原创 2019-02-20 10:57:39 · 242 阅读 · 0 评论 -
2016年蓝桥杯A组 第九题 密码脱落(LCS)
X星球的考古学家发现了一批古代留下来的密码。这些密码是由A、B、C、D 四种植物的种子串成的序列。仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串)。由于年代久远,其中许多种子脱落了,因而可能会失去镜像的特征。你的任务是:给定一个现在看到的密码串,计算一下从当初的状态,它要至少脱落多少个种子,才可能会变成现在的样子。输入一行,表示现在看到的密码串(长度不大于100...原创 2019-02-18 21:29:28 · 319 阅读 · 0 评论 -
单词数 (字符串分割)
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。Input有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。Output每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。Sample In...原创 2019-11-03 14:26:45 · 254 阅读 · 0 评论 -
Doggo Recoloring
Panic is rising in the committee for doggo standardization — the puppies of the new brood have been born multi-colored! In total there are 26 possible colors of puppies in the nature and they are deno...原创 2019-01-26 10:55:13 · 183 阅读 · 0 评论 -
矩阵翻硬币
问题描述 小明先把硬币摆成了一个 n 行 m 列的矩阵。 随后,小明对每一个硬币分别进行一次 Q 操作。 对第x行第y列的硬币进行 Q 操作的定义:将所有第 i*x 行,第 j*y 列的硬币进行翻转。 其中i和j为任意使操作可行的正整数,行号和列号都是从1开始。 当小明对所有硬币都进行了一次 Q 操作后,他发现了一个奇迹——所有硬币均为正面朝上。 小明想知道最开始有多少枚...原创 2019-02-01 17:57:25 · 212 阅读 · 0 评论 -
如何判断一个字符串在任意位置(包括最前面和最后面)插入一个字符后能不能构成一个回文串?
链接:https://ac.nowcoder.com/acm/contest/330/I来源:牛客网 如何判断一个字符串在任意位置(包括最前面和最后面)插入一个字符后能不能构成一个回文串?输入描述:仅一行,为一个由字母和数字组成的字符串 s。输出描述:如果在插入一个字符之后可以构成回文串,则输出"Yes", 否则输出"No"。示例1输入复制apples...原创 2019-01-29 18:10:06 · 857 阅读 · 0 评论 -
两个字符串的最长公共子序列(可以不连续)
动态规划问题基本思路: 动态规划求解最优化问题应该具备的两个要素:最优化子结构和子问题重叠。我的理解就是碰到问题先看看能不能把大问题化解为小问题解决,这就是我对最优子结构的理解。子问题重叠意思就是说,你在求子问题的时候一些工作是重复做了,看看能不能想办法避免以下。 对于动态规划的运用我还不是很熟练,但我在碰到问题时往往是这样做的:先判断原先的问题能不能化...原创 2019-01-29 20:50:21 · 2201 阅读 · 0 评论 -
Vicious Keyboard
Tonio has a keyboard with only two letters, "V" and "K".One day, he has typed out a string s with only these two letters. He really likes it when the string "VK" appears, so he wishes to change at m...原创 2019-01-26 21:03:42 · 222 阅读 · 1 评论 -
C语言合法标识符
输入一个字符串,判断其是否是C的合法标识符。 Input输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。 Output对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。 Sample Input312ajffi8x_aff ai_2Sam...原创 2019-01-25 21:18:12 · 3203 阅读 · 0 评论 -
前缀判断(字符串)
#include<iostream>using namespace std;char* prefix(char* haystack_start, char* needle_start){ char* haystack = haystack_start; char* needle = needle_start; while(*haystack &...原创 2019-01-21 20:29:34 · 1684 阅读 · 0 评论 -
最长相同字串(不连续)
链接:https://ac.nowcoder.com/acm/contest/301/E来源:牛客网 题目描述小乐乐有字符串str1,str2。小乐乐想要给他们找朋友。小乐乐想知道在这两个字符串中最多能匹配出多长的相同子串(可非连续)。输入描述:第一行输入字符串str1;第二行输入字符串str2;数据保证字符串长度小于1000,且非空,字符串仅由小写字母组成。...原创 2019-02-14 17:27:20 · 290 阅读 · 0 评论 -
string.find()函数的用法总结
1.查找特定的字符、字符串返回找到的字符串第一个字符的位置#include<iostream>using namespace std;int main(){ string s=="abcd"; if(s.find("ab")==1) cout<<"have it"<<endl; else cout<<&原创 2019-01-31 20:38:08 · 5488 阅读 · 0 评论 -
扑克序列(全排列找特值)
A A 2 2 3 3 4 4, 一共4对扑克牌。请你把它们排成一行。 要求:两个A中间有1张牌,两个2之间有2张牌,两个3之间有3张牌,两个4之间有4张牌。 请填写出所有符合要求的排列中,字典序最小的那个。例如:22AA3344 比 A2A23344 字典序小。当然,它们都不是满足要求的答案。请通过浏览器提交答案。“A”一定不要用小写字母a,也不要用“1...原创 2019-01-31 18:39:27 · 399 阅读 · 0 评论 -
LLPS(字符串)
time limit per test 2 secondsmemory limit per test 256 megabytesinput standard inputoutput standard outputThis problem's actual name, "Lexicographically Largest Palindromic Subsequence" is too lon...原创 2019-03-05 16:00:22 · 1242 阅读 · 0 评论 -
Largest Rectangle in a Histogram(单调栈)
Largest Rectangle in a HistogramTime Limit:1000MS Memory Limit:65536K Total Submissions:33874 Accepted:11045 DescriptionA histogram is a polygon composed of a sequence of r...原创 2019-11-30 11:57:32 · 165 阅读 · 0 评论 -
单调栈
给定一个长度为N的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出-1。输入格式第一行包含整数N,表示数列长度。第二行包含N个整数,表示整数数列。输出格式共一行,包含N个整数,其中第i个数表示第i个数的左边第一个比它小的数,如果不存在则输出-1。数据范围1≤N≤1051≤N≤1051≤数列中元素≤1091≤数列中元素≤109输入样例:53 4 2...原创 2019-11-30 10:12:04 · 119 阅读 · 0 评论 -
闰年判断
当以下情况之一满足时,这一年是闰年: 年份是4的倍数而不是100的倍数; 年份是400的倍数。 import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scan=new Scanner(System.in); ...原创 2019-11-30 20:37:45 · 238 阅读 · 0 评论 -
二分模板
int l=0,r=0,mid=0,ans=0;while(l<=r){ mid=(l+r)/2; if(check(mid)){ l=mid+1; ans=mid; } else{ r=mid-1; }}System.out.println(ans);原创 2019-12-01 15:02:54 · 118 阅读 · 0 评论 -
Agri-Net(最小生成树-prim算法模板)
DescriptionFarmer John has been elected mayor of his town! One of his campaign promises was to bring internet connectivity to all farms in the area. He needs your help, of course.Farmer John order...原创 2019-02-10 12:29:35 · 409 阅读 · 0 评论 -
确定比赛名次 (拓扑排序模板题)
有N个比赛队(1<=N<=500),编号依次为1,2,3,。。。。,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道每场比赛的结果,即P1赢P2,用P1,P2表示,排名时P1在P2之前。现在请你编程序确定排名。Input输入有若干组,每组中的第一行为二个数N(1<=N<=500),M;其中N表...原创 2018-11-21 20:28:02 · 478 阅读 · 0 评论 -
博弈论(斐波那契博弈+巴什博弈+Nim博弈+NimStaircase博弈+威佐夫博弈+环形博弈)
1.斐波那契博弈一堆石子n个(1)先手不能在第一次把所有的石子取完,至少取一颗(2)之后每次可以取得石子数至少为1,至多为对手取得石子数的2倍约定取走最后一个石子的人为赢家,求必败态结论:当n为斐波那契数列的时候,必败2.巴什博弈只有一堆n个物品,两个人A,B轮流从这堆物品中取物,规定每次至少取一个,最多取m个,取最后一个物品的人得胜if(n%(m+1)==0) ...原创 2019-03-20 16:25:14 · 587 阅读 · 0 评论 -
java数字(double/float)向上取整,向下取整,四舍五入
向上取整:Math.ceil(double a)向下取整:Math.floor(double a)四舍五入取整:Math.round(double a)例:Math.ceil(24.1)--> 25Math.floor(24.8)--> 24Math.round(24.1)--> 24Math.round(24.8)--> 25如果要对...原创 2019-12-01 14:55:01 · 2449 阅读 · 0 评论