随笔分类 -  算法进阶

摘要:给定一张N个点M条边的有向无环图,分别统计从每个点出发能够到达的点的数量。输入格式第一行两个整数N,M,接下来M行每行两个整数x,y,表示从x到y的一条有向边。输出格式输出共N行,表示每个点能够到达的点的数量。数据范围1≤N,M≤30000<?XML:NAMESPACE PREFIX = "[def 阅读全文
posted @ 2020-07-27 20:33 ACWink 阅读(195) 评论(0) 推荐(0)
摘要:给出一个电话列表,如果列表中存在其中一个号码是另一个号码的前缀这一情况,那么就称这个电话列表是不兼容的。假设电话列表如下:·Emergency 911·Alice 97 625 999·Bob 91 12 54 26在此例中,报警电话号码(911)为Bob电话号码(91 12 54 26)的前缀,所 阅读全文
posted @ 2020-07-27 17:12 ACWink 阅读(297) 评论(0) 推荐(0)
摘要:有一天,达达捡了一条价值连城的宝石项链,但是,一个严重的问题是,他并不知道项链的主人是谁!在得知此事后,很多人向达达发来了很多邮件,都说项链是自己的,要求他归还(显然其中最多只有一个人说了真话)。达达要求每个人都写了一段关于自己项链的描述: 项链上的宝石用数字0至9来标示。一个对于项链的表示就是从项 阅读全文
posted @ 2020-07-27 15:58 ACWink 阅读(252) 评论(0) 推荐(0)
摘要:一些主要城市拥有树形的地铁系统,即在任何一对车站之间,有且只有一种方式可以乘坐地铁。此外,这些城市大多数都有一个中央车站。想象一下,你是一名在拥有树形地铁系统的城市游玩的游客,你想探索该城市完整的地铁线路。你从中央车站出发,随机选择一条地铁线,然后乘坐地铁行进。每次到达一个车站,你都将选择一条尚未乘 阅读全文
posted @ 2020-07-27 15:34 ACWink 阅读(201) 评论(0) 推荐(0)
摘要:给定一个M行N列的01矩阵(只包含数字0或1的矩阵),再执行Q次询问,每次询问给出一个A行B列的01矩阵,求该矩阵是否在原矩阵中出现过。输入格式第一行四个整数M,N,A,B。接下来一个M行N列的01矩阵,数字之间没有空格。接下来一个整数Q。接下来Q个A行B列的01矩阵,数字之间没有空格。输出格式对于 阅读全文
posted @ 2020-07-27 15:11 ACWink 阅读(204) 评论(0) 推荐(0)
摘要:很久很久以前,森林里住着一群兔子。有一天,兔子们想要研究自己的 DNA 序列。我们首先选取一个好长好长的 DNA 序列(小兔子是外星生物,DNA 序列可能包含 26 个小写英文字母)。然后我们每次选择两个区间,询问如果用两个区间里的 DNA 序列分别生产出来两只兔子,这两个兔子是否一模一样。注意两个 阅读全文
posted @ 2020-07-26 18:21 ACWink 阅读(233) 评论(0) 推荐(0)
摘要:给定一个大小为n≤106<?XML:NAMESPACE PREFIX = "[default] http://www.w3.org/1998/Math/MathML" NS = "http://www.w3.org/1998/Math/MathML" />n≤106的数组。有一个大小为k的滑动窗口, 阅读全文
posted @ 2020-07-26 17:02 ACWink 阅读(144) 评论(0) 推荐(0)
摘要:有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地。这片土地被分成N*M个格子,每个格子里写着’R’或者’F’,R代表这块土地被赐予了rainbow,F代表这块土地被赐予了freda。现在freda要在这里卖萌。。。它要找一块矩形 阅读全文
posted @ 2020-07-26 16:00 ACWink 阅读(124) 评论(0) 推荐(0)
摘要:先用线段树做了一下,结果用cin超时,数据太变态了,此题正解应该是倍增算法。先看看线段树怎么做这题;如果不懂线段树的先看此视频:https://www.bilibili.com/video/BV1cb411t7AM?from=search&seid=130930450619969892401.线段树 阅读全文
posted @ 2020-04-26 22:27 ACWink 阅读(320) 评论(0) 推荐(0)
摘要:单链表不会数组模拟的参考此博客:https://blog.csdn.net/Satur9/article/details/104072845?depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaid 阅读全文
posted @ 2020-04-26 21:34 ACWink 阅读(194) 评论(0) 推荐(0)
摘要:如上图所示,我们看这代码分析首先,单调栈必须保证单调对吧,所以说我们将大于栈顶元素的元素入栈,直到遇到一个小于栈顶元素的数,然后因为是单调栈,所以我们想让它入栈,就必须删除栈中比他大的元素,但是又要不影响结果,所以每个栈顶元素出栈是都要计算它与前面出栈元素组成的最大矩形,直到在栈中找到一个比待入栈元 阅读全文
posted @ 2020-04-26 19:19 ACWink 阅读(341) 评论(0) 推荐(0)
摘要:用两个栈来模拟光标的移动,sum来维护A栈的前缀和,f用来维护最大值。 1 #include <iostream> 2 #include <algorithm> 3 #include <stack> 4 using namespace std; 5 stack<int> A, B; 6 conste 阅读全文
posted @ 2020-04-26 15:15 ACWink 阅读(166) 评论(0) 推荐(0)
摘要:yxc,说着是一道经典的题。我就写题解。首先,题目的意思是给出几个等差序列,然后对应的等差数列上的坐标上放一个防具。而只有奇数个防具的点的才能被攻破。所以目的就是找出奇数个那个防点的位置。首先我们知道,an = a1 + (n-1)d所以可以知道其中有多少数(an – a1)/d + 1;所以二分答 阅读全文
posted @ 2020-04-21 20:28 ACWink 阅读(147) 评论(0) 推荐(0)
摘要:看到这题就知道要暴力枚举,然后就用二进制枚举,用整数来表示对应十字架的状态,也就是2的幂次。 1 #include <iostream> 2 #include <algorithm> 3 #include <cstring> 4 #include <vector> 5 using namespace 阅读全文
posted @ 2020-04-16 12:40 ACWink 阅读(166) 评论(0) 推荐(0)
摘要:感想:已经做了这么多到贪心题目,感觉大致的做法有以下几种。1.看到题目和以前做过的题目差不多或者类似,那么就把想法过度到以前做过的题上。2.直接分析,找出几种方法,进行类比。3。猜猜猜,假设猜测是正确,然后反证,得到的结果合理,那么贪心成立。 分界线 以下这题,就是靠猜出来的。、假设以ai*bi从大 阅读全文
posted @ 2020-04-15 12:19 ACWink 阅读(426) 评论(0) 推荐(0)
摘要:根据题意,可以知道也就是有k个区间,要求每个区间至少包含一个点,也就是把陆地这个点转化成区间,如图所示,只要雷达在这交线上结果就成立,也就是可以覆盖到陆地。所以问题就转化求k个区间每个区间至少包含一个点,求最少需要多少个点。算法步骤:1.通过勾股定理算出区间范围,len = sqrt(R*R – y 阅读全文
posted @ 2020-04-15 01:23 ACWink 阅读(335) 评论(0) 推荐(0)
摘要:证明不会:yxc说要用匈牙利算法,来确定增广路径;算法步骤:1.将牛按minspf从大到小排序2.每次取出满足当前条件,最大的spf。因为是按开始从大到小排序,所以假设x, y防晒,spfs[x] < spfs[y], 那么可能后面的牛能用到x,y,或者只用到x,或者都用不上。因为后面的牛可能可以用 阅读全文
posted @ 2020-04-14 23:59 ACWink 阅读(139) 评论(0) 推荐(0)
摘要:毫无疑问这是一个贪心思想, 应该是活动安排那个题的拓展,本题的做法是:1.将所有牛按开始吃草的时间排序2.用小根堆维护当前所有畜栏的最后一头牛吃草结束的时间3.如果当前的牛可以安排在堆顶畜栏,则将其安排进去,否则创建以个新的畜栏反证法,假设存在一种方案,使得需要的畜栏数量更少,记其需要的畜栏数量是 阅读全文
posted @ 2020-04-14 23:49 ACWink 阅读(404) 评论(0) 推荐(0)
摘要:假设货仓左边所有点到仓库的距离是p, 右边是q, 总距离p+q, 由题可知,要让总距离最小,当仓库向左移动 p – x, 而 但是q会增加n−x,所以说当为仓库中位数的时候,p+qp+q最小。还是同样的一句话,画图理解很重要。 1 #include <iostream> 2 #include <al 阅读全文
posted @ 2020-04-14 09:58 ACWink 阅读(228) 评论(0) 推荐(0)
摘要:1 #include <iostream> 2 #include <algorithm> 3 using namespace std; 4 const int N = 1e5 + 5; 5 double sum[N], cows[N]; 6 int n, f; 7 8 bool check(doub 阅读全文
posted @ 2020-04-13 10:37 ACWink 阅读(191) 评论(0) 推荐(0)