![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM
文章平均质量分 61
ReverieZH
这个作者很懒,什么都没留下…
展开
-
汉诺塔问题
首先定义函数 hanoi(盘子总数, 最初状态,中转站,最终状态)Case 1首先考虑如何将两个盘子移动从每一步的移动可以看出,两个盘子可以直接移动时,只涉及一个盘子。所以移动时,只需直接移动。如果从最初状态到最终状态的转化(A柱子移动到C柱子)来看,可以归纳为两个盘子从一个柱子移动到另一个柱子,中间是必定经过了中转站柱子(B)的帮助的。可以抽象为hanoi(2,A,B,C),即2个盘子从A移动到C要经过中转站B。Case 2那么我们来看3个柱子的情况从整体出发,我们需要做的就是将3个盘原创 2021-03-26 12:15:18 · 215 阅读 · 0 评论 -
用A*算法求解八数码问题 java实现
用A*算法求解八数码问题1.估价函数2.搜索过程3.流程图4.八数码的估计函数设计5.编码实现6.结果1.估价函数首先定义估价函数。计算一个节点的估价函数,可以分成两个部分:g(n)已经付出的代价(起始节点到当前节点)和h(n)将要付出的代价(当前节点到目标节点)。节点n的估价函数f(n)定义为f(n)=g(n)+h(n)。在A搜索算法中使用的就是估价函数f(n)=g(n)+h(n)。接下来...原创 2020-01-27 20:08:00 · 4037 阅读 · 2 评论 -
Hdu-1024 Max Sum Plus Plus 详解+滚动数组优化
Max Sum Plus PlusNow I think you have got an AC in Ignatius.L’s “Max Sum” problem. To be a brave ACMer, we always challenge ourselves to more difficult problems. Now you are faced with a more difficu...原创 2019-11-29 22:04:58 · 386 阅读 · 0 评论 -
匡斌专题一 搜索
棋盘问题在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。Input输入含有多组测试数据。每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <=...原创 2019-11-27 23:40:34 · 455 阅读 · 0 评论 -
Fliptile POJ-3279 翻板子
FliptileFarmer John knows that an intellectually satisfied cow is a happy cow who will give more milk. He has arranged a brainy activity for cows in which they manipulate an M × N grid (1 ≤ M ≤ 15; 1...原创 2019-11-27 22:39:07 · 237 阅读 · 0 评论 -
POJ 3278 Catch That Cow
DescriptionFarmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a point K (0...原创 2019-10-13 12:00:44 · 237 阅读 · 0 评论 -
FFT (快速傅里叶变换) 笔记
FFT (快速傅里叶变换)本篇只说一下快速傅里叶变换的结构,说一下流程,具体细节及一些定理可以看https://blog.csdn.net/giftedpanda/article/details/99414039快速傅里叶变换就是用一系列的骚操作让多项式乘法变得更高效有啥卵用呢?比如两个数相乘,太大了,直接乘要出事情,与是乎我们可以把他看成两个多项式相乘,假装它带着x次方。想一想多项式相...原创 2019-08-23 00:00:20 · 746 阅读 · 0 评论 -
有1克、2克、...、n克的砝码各一枚,能称出哪几种重量?总共有几种可能方案?
有1克、2克、…、n克的砝码各一枚,能称出哪几种重量?总共有几种可能方案?1个1克的砝码可以用函数1+x表示,1个2克的砝码可以用函数1+x2表示,1个3克的砝码可以用函数1+x3表示,1个4克的砝码可以用函数1+x4表示最大重量为1+2+3+……n;重量种数就是等差数列前n项和方案数为g(x) x1 到xn+n*(n-1)/2 的系数和比如当n等于4时,g(x)=(1+x)(1...原创 2019-08-20 19:13:54 · 1783 阅读 · 0 评论 -
n个人拿10元、n个人拿20元买物品,物品10元,老板没零钱。问有几种排队方式
n个人拿10元、n个人拿20元买物品,物品10元,老板没零钱。问有几种排队方式h(n)*n!*n! 由于每个拿10元的人排队的次序不是固定的,所以最后求得的答案要 * n!。拿20元的人同理,所以还要 * n!。#include<bits/stdc++.h>using namespace std;int h[100+5]; //卡特兰数int pri[100+5]...原创 2019-08-20 19:00:14 · 472 阅读 · 0 评论 -
二分图最大匹配+最小点覆盖
二分图最大匹配二分图基本概念:一个无向图 G=<V, E> ,如果存在两个集合X 、 Y ,使得 X∪Y=V , X∩Y=Φ ,并且 每一条边 e={x , y} 有x∈X , y∈Y ,则称 G 为一个二分图 (bipartite graph) 。常用 <X,E, Y> 来表示一个二分图。若对 X 中任一 x 及 Y 中任一 y 恰有一边 e∈E ,使 e = ...原创 2019-08-20 00:40:53 · 370 阅读 · 0 评论 -
数论基础
互素互质是公约数只有1的两个整数,叫做互质整数。整除若 a 和 b 都为整数,a 整除 b(b 被 a 整除),记为 a|b。(既b/a=0)性质:1.若a|b,对于任意非零整数m,有am|bm.2.若a|b,且b|c,则a|c.3.若a| bc,且a和 c 互素,则 a | b (因为 c/a!=0,所以必定是b/a=0)4.若 c|a,且c | b,对于任意整数m,n,有 c ...原创 2019-08-19 00:34:54 · 319 阅读 · 0 评论 -
最大流+最小费用最大流
最大流问题导入:我们想象一下自来水厂到你家的水管网是一个复杂的有向图,每一节水管都有一个最大承载流量。自来水厂不放水,你家就断水了。但是就算自来水厂拼命的往管网里面注水,你家收到的水流量也是上限(毕竟每根水管承载量有限)。你想知道你能够拿到多少水,这就是一种网络流问题。简单来说就是水流从一个源点s通过很多路径,经过很多点,到达汇点t,问你最多能有多少水能够到达t点。从s到t经过若干个点,若...原创 2019-08-17 01:19:58 · 1281 阅读 · 0 评论 -
强连通分量+割点+割边
Tarjan算法强连通分量在有向图中强连通:A可以到B,B也可以到A强连通图:图中任意两个节点都强连通强连通分量:图中找到一个最大的图,使这个图中每个两点都能够互相到达。这个最大的图称为强连通分量,同时一个点也属于强连通分量。比如1,3,4,2是一个强连通分量 5是一个强连通分量 6是一个强连通分量dfsn:表示的是该顶点在DFS中遍历的顺序(时间戳)low:表示的是该顶点不通过父...原创 2019-08-15 22:39:45 · 475 阅读 · 0 评论 -
可持久化数组(结构体实现)
如题,你需要维护这样的一个长度为 N 的数组,支持如下几种操作在某个历史版本上修改某一个位置上的值访问某个历史版本上的某一位置的值此外,每进行一次操作(对于操作2,即为生成一个完全一样的版本,不作任何改动),就会生成一个新的版本。版本编号即为当前操作的编号(从1开始编号,版本0表示初始状态数组)。输入输入的第一行包含两个正整数 N M, 分别表示数组的长度和操作的个数。第二行包含 N ...原创 2019-08-24 23:46:34 · 192 阅读 · 0 评论 -
区间第k小 (主席树,结构体实现)
问题 B: 区间第 K 小题目描述给定 N 个正整数构成的序列,将对于指定的闭区间查询其区间内的第 K 小值。输入第一行包含两个正整数 N、M,分别表示序列的长度和查询的个数。第二行包含 N 个正整数,表示这个序列各项的数字。接下来 M 行每行包含三个整数 l,r,k, 表示查询区间 [ l,r ]内的第 k 小值。( 1 <= N,M <= 2*105,- 109 &l...原创 2019-08-24 23:57:44 · 571 阅读 · 0 评论 -
八数码问题
memcmp函数的原型为 int memcmp(const void *str1, const void *str2, size_t n));其功能是把存储区 str1 和存储区 str2 的前 n 个字节进行比较。该函数是按字节比较的,位于string.h。函数原型int memcmp(const void *str1, const void *str2, size_t n));参数st...原创 2019-08-28 00:19:23 · 108 阅读 · 0 评论 -
现在已知队员们的初始位置被标记为D(保证有且只有一个),火的初始位置被标记为F(大于等于一个),石头的初始位置为'#',队员们每一分钟只能往当前位置的上下左右方向中的一个方向走一格,当遇到石头时表示不
1988: 绝地求生题目描述现在已知队员们的初始位置被标记为D(保证有且只有一个),火的初始位置被标记为F(大于等于一个),石头的初始位置为’#’,队员们每一分钟只能往当前位置的上下左右方向中的一个方向走一格,当遇到石头时表示不能通行,而火每一分钟可以往当前位置的上下左右位置各蔓延一格,当队员们的位置和火的位置重合时队友相当于遇难,现在已知地图为n×m的方格,让你判断队友们是否能逃生(当逃出地...原创 2019-08-28 00:28:02 · 102 阅读 · 0 评论 -
线段树进阶(懒惰标记)
对于朴素线段树,要进行区间更新,如果按照单点更新的方法更新,他的复杂度很高,比数组暴力更新还要慢。所以我们使用懒惰标记,他走到包含区间就不往下走了,然后就更新区间值,并打上懒惰标记。那走到这不走了,他下面的没更新怎么办,这时候就是懒惰标记的用处了,我打上懒惰标记,那我下次往下走的时候我把这个值加上不就行了(也就是懒惰标记的值)如更新2到10区间的值,那么我走到绿色勾处就不往下走了,打上懒惰...原创 2019-09-03 21:26:23 · 1483 阅读 · 0 评论 -
树形dp
顾名思义是树上的dp例1:没有上司的舞会题意:有一场舞会,每一个人都有一个快乐值,但不能和上司同时出现在舞会中,问这个舞会的快乐值最大为多少。每个人都有唯一的上司,除了根节点没有状态用dp[i][0] 表示i节点不去时的最优解用dp[i][1] 表示i节点去时的最优解状态转移方程他要是不去,他儿子就可去可不去dp[u][0]+=max(dp[v][0],dp[v][1]);他...原创 2019-09-09 22:01:44 · 88 阅读 · 0 评论 -
POJ 1321 棋盘问题
棋盘问题Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 87316 Accepted: 40285Description在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。...原创 2019-09-20 08:14:55 · 70 阅读 · 0 评论 -
POJ 2251 Dungeon Master
Dungeon MasterDescriptionYou are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed of unit cubes which may or may not be filled with rock. It takes one minute to...原创 2019-09-24 14:39:54 · 253 阅读 · 0 评论 -
搜索 dfs+bfs
问题 A: 俊俊家里有矿(搜索例题) 连通块题目描述大家都知道俊俊家有矿,但是这也使俊俊特别烦恼,因为俊俊老爸每天都会问俊俊,家里还有多少块油田。俊俊家里的油田看起来就像一个m行n列的字符矩阵,由字符‘@’ 和 ‘” 组成。’@‘代表油田,如果两个字符’@'相邻,就说明他们属于同一块油田。两个字符相邻当且仅当两个字符的位置关系为横,竖,对角线。你能告诉俊俊他家有多少块油田。输入输入多组...原创 2019-07-18 00:51:58 · 118 阅读 · 0 评论 -
Bellman_Fofd+SPFA+判负环
Bellman-Ford最短路Dijkstra不适用于带负权的图。为什么Dijkstra 算法不适用于带负权的图?当把一个点选入集合S时,就意味着已经找到了从A到这个点的最短路径,比如第二步,把C点选入集合S,这时已经找到A到C的最短路径了,但是如果图中存在负权边,就不能再这样说了。在这个图中,求从A到C的最短路,如果用Dijkstra根据贪心的思想,选择与A最接近的点C,长度为7,以...原创 2019-08-15 00:35:07 · 312 阅读 · 0 评论 -
链式前向星 详解
链式前向星链式前向星是一种类似于邻接表的存图方式,同样适用于有向图和无向图。他建立的是边与边之间的联系它将边里的所有边都进行编号int cnt; //边的编号 struct edge{ //边的结构体 int from,to,w,next; //from是边的起点(这个可有可无,因为他可以用head数组表示) //to是边的终点...原创 2019-08-14 23:49:46 · 2595 阅读 · 2 评论 -
LCA(最近公共祖先)+RMQ(区间最值)详解
LCA(最近公共祖先)首先区别祖先和父亲节点:比如4的父亲节点是2,祖先节点是2,1 。5的父亲节点是2,祖先节点是2,1求解最近公共祖先,比如要求解4和3的最近公共祖先就是1。4和5的最近公共祖先就是2求解最近公共祖先的方法有很多,比如最简单暴力的方法就是一个一个向上找还有就是倍增优化,用欧拉序加上ST表。暴力求解LCA#include<bits/stdc++.h&...原创 2019-08-14 00:11:38 · 900 阅读 · 0 评论 -
数据结构进阶 并查集+单调栈+单调队列
并查集:可以把并查集的过程看做是一个拉帮结派的过程江湖上散落着各式各样的大侠 他们整天背着剑在外面走来走去,碰到和自己不是一路人的,就免不了要打一架。但大侠们有一个优点就是讲义气,不打自己的朋友。而且信奉“朋友的朋友就是我的朋友” 这样一来,就形成了一个一个的帮派,通过两两之间的朋友关系串联起来。而无法通过朋友关系连起来的,就可以放心往死了打单调栈:元素进栈过程:对于一个单调递增栈来说,若当...原创 2019-07-23 00:45:41 · 237 阅读 · 0 评论 -
数据结构习题 树+图
问题 A: 斯琪哥哥的求助题目描述已知一棵满二叉树的层序遍历顺序,斯琪哥哥却想不出它的前序遍历顺序,你能帮帮他么输入树的深度h,(0<h<4)树的层序遍历顺序输出树的前序遍历顺序样例输入3 ABCDEFG样例输出ABDECFG#include<bits/stdc++.h>using namespace std;const int maxn=20;...原创 2019-07-22 01:14:59 · 533 阅读 · 0 评论 -
KMP(字符串匹配)+字符串哈希
问题 A: 统计不同字符串的个数题目描述如题,给出n个字符串,让你输出其中共有多少个不同的字符串。请使用字符串哈希解决本题。输入第一行一个正整数n表示有n个字符串。接下来n行每行一个字符串,每个字符串可以由数字和大小写字母组成,大小写敏感。1 ≤ n ≤ 1000,每个字符串最大长度为1500输出输出一行包含一个整数,表示其中不同字符串的个数。样例输入5abcaaaaab...原创 2019-10-09 10:35:10 · 543 阅读 · 0 评论 -
贪心+二分+快速排序
贪心思想:比如你要做个贪婪的人,但是你要拿的东西有数量限制,你是不是就是从最好的东西开始拿。二分查找的常见应用①:假定一个解,并判断是否可行。和下面的分蛋糕的题一样。就是一个一个试。②:最大化最小值。我们假设每头牛之间的最短距离为k,那么此时我们判断在满足最短距离为k的情况下是否能用牛舍将牛都放完,如果可以则增大查找范围,否则减小查找范围。③:最大化平均值。有n个物品的重量和价值...原创 2019-07-20 00:39:49 · 436 阅读 · 0 评论 -
高精度计算 大数相乘+模拟
当数字过大,会存在超过范围而导致无法做运算,所以采取字符串的方法去模拟,模拟手动做运算的过程。在32位编译器下1个字节8位int 4个字节long 4 个字节long long 8个字节_int64 8个字节double 8个字节long double 12个字节unsigned int 4个字节unsigned long 8个字节问题 A: 大数相加题目描述计算A+B...原创 2019-07-19 23:31:25 · 396 阅读 · 0 评论 -
递归+分治+回溯
问题 D: 红红的汉诺塔题目描述李红红今天听了汉诺塔的问题,陷入了顿悟的状态,顿悟结束后,他对汉诺塔的了解到达了一个新的层次他回到家拿到汉诺塔后,突然很想知道汉诺塔层数为n的时候,编号为x 的那层移动了多少次,编号是从1到n。 从最小的那个开始编号,即最小的那个为1, 最大的那个为n。比如李红红有一个5层的汉诺塔,现在他想知道编号为 3 的那层移动了多少次,则输出两个数字,一个总移动数字,...原创 2019-07-16 23:09:36 · 248 阅读 · 2 评论 -
C++基础和STL(习题)
问题 A: 我有一个vector题目描述作为一个程序媛/猿,或许大家都有头被按在键盘上的经历。边总突然想知道自己的头在键盘上按出来的字母有没有规律,于是他打算统计出被按出来的乱码中每个字母出现的位置。给出字符串和要查询的字母,问要查询的字母出现过的位置。输入多组测试样例每行为一个不知道有多长的字符串 s ,然后是一个字符表示 c 要查询的字母,中间用空格隔开。保证字符串中只有小写字...原创 2019-07-16 01:12:26 · 2106 阅读 · 0 评论 -
数据结构基础
问题 A: longlong下最大的有效斐波那契数题目描述请输出longlong情况下最大的有效斐波那契数输入该题无输入输出请输出longlong情况下最大的有效斐波那契数样例输入无样例输出无#include<stdio.h>#include <stdlib.h>int main(){ long long int pre = 0; ...原创 2019-07-15 00:19:50 · 149 阅读 · 0 评论 -
习题 简单排序 + 思维题 + 位运算
ACM 暑期训练第一天习题 简单排序 + 思维题 + 位运算问题 A: 成绩评级问题 B: 排序问题 C: 计算n!问题 D: 奇数的个数问题 E: longlong下最大的有效斐波那契数问题 F: 今天全场的消费,苏公子买单问题 G: 小小粉刷匠问题 H: 居居倩的疑惑最后两个题为思维题问题 A: 成绩评级题目描述现在我们有一套独特的评级规则:如果你的分数 X 满足 X = 4*n+...原创 2019-07-14 00:33:18 · 379 阅读 · 0 评论 -
线段树+字典树
前三个题是线段树,最后一个题是 0 1字典树问题 A: 你们考了多少分题目描述在XX号到XX号之间,分数最高的是几分输入本题目包含多组测试,请处理到文件结束在每个测试的第一行,有两个正整数 N 和 M ( 0<N<=200<M<10 ),分别代表学生的数目和询问次数学生ID编号分别从1编到N第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为...原创 2019-07-24 00:28:02 · 94 阅读 · 0 评论 -
树状数组
问题 A: 敌兵布阵时间限制: 2 Sec 内存限制: 10000 MB题目描述C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚每个工兵营地的人数都有可能发生变动,可能增加或...原创 2019-07-24 22:09:14 · 92 阅读 · 0 评论 -
判断四点共面
问题 A: 梦想成为天文学家题目描述璟哥哥从小想成为天文学家,这是个伟大的梦想。为了实现这个梦想,璟哥哥天天都要观测星星。璟哥哥家里很有钱,所以买了一个精密的天文望远镜来专门观测各种星星。这个天文望远镜可以算出被观测星星的准确坐标(x,y,z),星星所处的位置当然是三维的。但是这个天文望远镜非常耗电,所以一天只能观测4颗星星。璟哥哥查阅资料发现,如果4颗星星处于一个平面上,他们就是同一...原创 2019-08-13 00:00:42 · 1507 阅读 · 0 评论 -
计算几何(立体几何)
计算几何(立体几何)1.点(向量)立体就是在平面上加上了z坐标,基本一样#include<bits/stdc++.h>using namespace std;const double eps = 1e-8;int sgn(double x){ if(fabs(x)<eps)return 0; if(x<0)return -1; el...原创 2019-08-12 23:53:23 · 452 阅读 · 0 评论 -
计算几何(平面几何)
计算几何(平面几何)1.点(向量)点也可以用向量表示,向量也可以用点的结构体表示#include<bits/stdc++.h>using namespace std;const double eps=1e-8;const double inf=1e20;const double pi=acos(-1.0);const int maxp=1010;//控制精度的函...原创 2019-08-12 23:29:44 · 185 阅读 · 0 评论 -
快速乘+快速幂+矩阵快速幂+素数筛
快速乘引入:两个不超过 long long 的数 a、b 相乘,求对 p 取模后的结果两个大数直接相乘会存在直接爆掉的情况方法一:将乘法变成加法在加法的过程,保证不会爆掉。快速乘是将加法变得更高效但偶数个相加时,如2*8=2+2+2+2+2+2+2+2 可以变成4+4+4+4(相加次数变为原来的一半) 再可以变成 8+8 这就大大的降低相加的次数比如2*92*9=2+2+2+2...原创 2019-08-04 17:55:53 · 240 阅读 · 0 评论