栈、队列、链表
lemondinosaur
转圈圈 不停转圈圈 然后摔倒
展开
-
#trie#洛谷 4098 JZOJ 3226 ALO
题目分析首先肯定会想到建一棵可持久化01trie,但是关键是次大值,所以考虑从小到大排序,那么每次该数都会有一段选择的区间,那么考虑把它合并给左右,用该值当次大值在trie中找到区间中最大的一个,其实这道题实际操作比理论还要难,至少我是这么认为的代码#include <cstdio>#include <cctype>#include <deque>...原创 2019-10-23 21:34:29 · 139 阅读 · 0 评论 -
2019.01.21【NOIP提高组】模拟 B 组
迟到的解题报告JZOJ 4208 线段树什么的最讨厌了题目分析代码JZOJ 4209 【五校联考1day1】已经没有什么好害怕的了题目分析代码JZOJ 4210 【五校联考1day1】我才不是萝莉控呢题目分析JZOJ 4208 线段树什么的最讨厌了题目询问多段区间,是否存在一个[0∼n][0\sim n][0∼n]的线段树为该区间分析那么区间[l∼r][l\sim r][l∼r]可以扩...原创 2019-01-22 09:48:50 · 343 阅读 · 0 评论 -
#动态规划,栈,对顶栈#hdu 4699 Editor
题目有五种操作 III x:x:x:在当前光标处插入一个整数x,插入后光标移动到x之后 D:D:D:删除光标前的一个整数 L:L:L:光标向左移动一个位置 R:R:R:光标向右移动一个位置 QQQ x:x:x:在位置xxx之前的最大的前缀和分析这样的操作不难想到对顶栈的方法,而栈AAA表示光标处(栈顶)至开头(栈底)的子序列,栈BBB表示光标处至末尾的子序列,sums...原创 2018-08-15 12:03:28 · 175 阅读 · 0 评论 -
#队列#洛谷 2827 蚯蚓
题目求mmm秒内,每一秒被切断的蚯蚓被切断前的长度(有mmm个数);mmm秒后,所有蚯蚓的长度(有n+mn+mn+m个数)。PS:长度为x的蚯蚓被切成uvx和x−uvxuvx和x−uvx\frac{u}{v}x和x-\frac{u}{v}x分析用优先队列(堆)TLE,后,发现被切的蚯蚓是单调递减的,那么队列代码就弄好了。85分代码#include <cstdi...原创 2018-07-23 11:20:49 · 237 阅读 · 0 评论 -
#链表,倍增优化dp#洛谷 1081 JZOJ 3101 开车旅行
题目链接分析什么辣鸡水题,我这种大佬做这种水题?代码#include <cstdio>#include <cctype>#include <algorithm>#define rr register#define abs(x) ((x)<0?-(x):(x))using namespace std;struct liSt{int v...原创 2019-04-27 15:03:31 · 171 阅读 · 0 评论 -
2019.06.01 【NOIP提高组】模拟 A 组
解题报告前言JZOJ 6191 Exchange题目分析代码JZOJ 4802 探险计划分析代码JZOJ 4800 周末晚会题目分析代码后续前言这可是六一呀JZOJ 6191 Exchange题目分析首先可以预处理出一个位置的后继,这个可以通过类似于链表的结构实现,接着这就是关键了,这样貌似并没有什么意义,把这些区间按右端点从小到大排序离线询问,那只要预处理一个点的后继能散播到最...原创 2019-06-05 20:21:09 · 394 阅读 · 0 评论 -
2019_8_6 模拟赛
解题报告前言T3 矩形统计题目分析代码T5 矩形反色题目分析代码前言我太菜了,虽然现在感觉过水,但是比赛时是全脸懵逼,但是思路真的太水了T1 蛋糕切割(过水)T2 膜拜神牛(过水)T3 矩形统计题目有一张边长为NNN的方格纸(有若干破损),问这张纸能够裁出多少矩形。分析类比于POJ 2559,可以把某一行的某一个方格向上延伸,这样形成一个柱形图,也就是枚举每一行的方格,问...原创 2019-08-06 17:35:30 · 120 阅读 · 0 评论 -
#单调栈#BZOJ 1057 洛谷 1169 棋盘制作
#include <cstdio>#include <cctype>#include <cstring>#define rr register#define max(a,b) ((a)>(b)?(a):(b))#define min(a,b) ((a)<(b)?(a):(b))using namespace std;int n,m,ab...原创 2019-08-23 19:00:51 · 130 阅读 · 0 评论 -
2019.08.17【NOIP提高组】模拟 A 组
解题报告前言JZOJ 6290 倾斜的线题目分析代码JZOJ 6305 最小值题目分析代码JZOJ 6307 安排题目分析代码前言毒瘤出题人JZOJ 6290 倾斜的线题目分析考虑按照这些点与斜率p/qp/qp/q的截距从小到大排序,那么可以证明相邻两个点更接近斜率,然后暴力求解,时间复杂度O(nlogn)O(nlogn)O(nlogn)代码#include <cst...原创 2019-08-17 20:08:45 · 262 阅读 · 1 评论 -
2018.07.19【2018提高组】模拟C组
前言:早上完全起不来了,9点被回来的舍友叫醒,orzJZOJ 3461 小麦亩产一千八题目假设第0个格子有1粒麦子,第1个格子有p粒麦子,之后每一个格子放入前两个格子的小麦数之和的小麦,若第a个格子有x粒麦子,问是否存在p,若存在,问第b个格子有多少粒麦子,否则输出-1(给出a,x,p)分析按照这样,得到数列1,p,p+1,2p+1,3p+2,5p+3,8p...原创 2018-07-19 14:20:35 · 184 阅读 · 0 评论 -
#队列#codevs 2422 洛谷 2564 生日礼物
代码#include &lt;cstdio&gt;#include &lt;queue&gt;#include &lt;algorithm&gt;struct rec{int x,rk;}a[1000001];int n,m,kind[61]; std::queue&lt;int&gt;q;int in(){ int ans=0; ch原创 2018-08-31 22:58:54 · 337 阅读 · 0 评论 -
#单调栈#洛谷 2947 向右看齐
题目若i&lt;j且hi&lt;hji&lt;j且hi&lt;hjijjj是iii的仰望对象,问每头奶牛最近的仰望对象。分析这道题可以用单调递减栈做,反向枚举每一头牛的身高,当栈内无法成为仰望对象时元素从栈顶弹出,当栈为空时说明没有仰望对象,否则栈顶就是仰望对象代码#include &lt;cstdio&gt;#include &原创 2018-08-15 08:09:34 · 342 阅读 · 0 评论 -
#队列#poj 2259 Team Queue
题目有nnn个小组排队,当一个人来到队伍时,若队伍没有小组成员,则排在队尾,否则插在小组最后面,对于每一个出队指令,输出每一个人。分析可以用一个大的队列装入小组的编号,当小组没人时创建一个新的小组编号并不断入队,出队时则判断小组的人数是否为0,若无人就退出大队列。代码#include <cstdio>#include <queue>#...原创 2018-08-15 09:59:57 · 219 阅读 · 0 评论 -
#链表 or 堆,对顶堆#poj 3784 Running Median
题目动态求中位数分析(离线)这道题可以用链表做,倒着推,一个个从链表内删除,求中位数之前需要排序,当然需要标记每个数在链表出现的位置链表代码#include &lt;cstdio&gt;#include &lt;cstring&gt;#include &lt;algorithm&gt;#define mod 10007stru原创 2018-08-16 16:41:01 · 181 阅读 · 0 评论 -
#单调栈#poj 2559 洛谷 SP1805 Largest Rectangle in a Histogram
题目在一条水平线上方有若干个矩形,求这些矩形的并集中最大矩形的面积。 分析这道题目可以用单调栈的,维护一个单调递增的栈,从左到右枚举每一个矩形,如果当前矩形比栈顶高,直接入队,否则不断取出栈顶,直到栈为空或当前矩形比栈顶高,在出栈时,不断累计矩形的宽度,累计答案,并把最后的矩形入栈。代码#include &lt;cstdio&gt;#include &lt;...原创 2018-08-15 08:46:43 · 216 阅读 · 0 评论 -
#队列 or 链表#洛谷 2776 codevs 5183 小组队列
题目poj 2259队列代码#include &lt;cstdio&gt;#include &lt;queue&gt;#include &lt;cstring&gt;using namespace std;queue&lt;int&gt;q[301]; int n,a[100001];int in(){ int原创 2018-08-15 10:40:33 · 319 阅读 · 0 评论 -
#二分,单调队列,动态规划#洛谷 3957 跳房子
题目分析f[i]表示跳到i时的最大值f[i]表示跳到i时的最大值f[i]表示跳到i时的最大值,很容易可以得到 f[i]=max{f[last]}+s[i]f[i]=max{f[last]}+s[i]f[i]=max\{f[last]\}+s[i],然而也很容易知道需要用单调队列维护,但是求到答案又能怎么做,二分答案,于是代码就出来了。代码#include &l...原创 2018-07-16 16:20:44 · 265 阅读 · 0 评论 -
#单调队列,动态规划#洛谷 2627 jzoj 2202 2321(高中)codevs 4654 修剪草坪
题目在n头奶牛里选择若干头,使连续的奶牛不超过k头并让总价值最大。分析这道题正向选择比较难选,所以就想到了n头奶牛都选并去掉奶牛后使总价值最大。 用单调队列维护,时间复杂度O(n)代码#include &amp;amp;amp;amp;lt;cstdio&amp;amp;amp;amp;gt;#include &amp;amp;amp;amp;lt;cctype&amp;a原创 2018-07-16 16:56:25 · 200 阅读 · 0 评论 -
#单调队列,动态规划#洛谷 1725 jzoj 2501 琪露诺
题目一列格子依次编号0到N,在格子i时,移动到区间[i+l,i+r]中的任意一格,求跳到(过)N的最大权值分析可以用动态规划求出答案,但求最大值时,可以用单调队列维护。f[i]=f[q[head]]+xf[i]=f[q[head]]+xf[i]=f[q[head]]+x代码#include <cstdio>#include <cctype>...原创 2018-07-16 18:45:33 · 256 阅读 · 0 评论 -
#链表#洛谷 1160 队列安排
链表结构,双向链表。#include &lt;cstdio&gt;using namespace std;struct link{int l,r,data;}a[100001]; int n,m,j=1;int main(){ scanf("%d",&amp;n); a[1].data=1; for (int i=2;i&lt;=n;i++){原创 2018-02-23 11:34:09 · 294 阅读 · 0 评论