摘要: 线段树能支持什么操作呢 区间覆盖,区间加,区间乘,区间查询,单点修改,可能远远不止这些,但本人能力有限,欢迎大家指出错误,一起学习呀 对区间进行操作,我们肯定要使用懒标记 那么懒标记的下放顺序就是一个问题 我们目前需要处理3个懒标记分别记为$lazy,add,mul;$ 优先级应该是$lazy>mu 阅读全文
posted @ 2020-11-18 21:59 邦的轩辕 阅读(539) 评论(0) 推荐(0) 编辑
摘要: 题目背景 SHOI2012 D2T3 题目描述 Harry Potter 新学了一种魔法:可以让改变树上的果子个数。满心欢喜的他找到了一个巨大的果树,来试验他的新法术。 这棵果树共有 N个节点,其中节点 0 是根节点,每个节点 u的父亲记为 fa[u],保证有 fa[u] < u 。初始时,这棵果树 阅读全文
posted @ 2020-11-18 20:03 邦的轩辕 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 题面 【问题描述】 ​ MrKill上了高数之后超无聊,觉得好像很简单的样子。 ​ 一天老师看他很不爽,下课约到了办公室(很抱歉现实中大学咩有老师会约你)。一张无限长的纸上,写了n个数,分别是1到n。老师觉得好像他全懂了,指着这张纸:“你知道GCD吗?我今天上课才讲的。” “这还不简单???” “那 阅读全文
posted @ 2020-11-18 15:32 邦的轩辕 阅读(68) 评论(0) 推荐(0) 编辑
摘要: ####题目背景 小明准备给小万送一束花,以表达他对小万的爱意。他在花店看中了一些花,准备用它们包成花束。 ####题目描述 这些花都很漂亮,每朵花有一个美丽值W,价格为C。 小明一开始有一个空的花束,他不断地向里面添加花。他有以下几种操作: 操作 含义 1 W C 添加一朵美丽值为W,价格为C的花 阅读全文
posted @ 2020-11-15 20:49 邦的轩辕 阅读(80) 评论(0) 推荐(0) 编辑
摘要: Description 有如下一个双人游戏:N个正整数的序列放在一个游戏平台上,游戏由玩家1开始,两人轮流从序列的任意一端取一个数,取数后该数字被去掉并累加到本玩家的得分中,当数取尽时,游戏结束。以最终得分多者为胜。编一个执行最优策略的程序,最优策略就是使玩家在与最好的对手对弈时,能得到的在当前情况 阅读全文
posted @ 2020-11-14 22:15 邦的轩辕 阅读(70) 评论(0) 推荐(0) 编辑
摘要: 现在给出将树链剖分上的边权转化为点权的方法 也就是将边权转到它下方的点去 我们通过画图可以发现,这样的话,我们会多算最近公共祖先上方的点 方法一:先不考虑的多算的部分,还按原来的方法来,在之后消除最近公共祖先的影响 我们只需要在原来的代码基础上将$query _\ path$改成 long long 阅读全文
posted @ 2020-11-14 20:44 邦的轩辕 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 我们假设, 一次可以击打任意多相邻连续的红球,也可以只击打一个球。 并且红球既不会落袋,也不会相 互发生碰撞,而只是停留在原处。每次击打时候,要想“K到红球”,至少要击打一个红球,如果想一次击打 多个红球,那么击打 的红球必须是依次连续排列的。 如果一次“K到红球”所有红球的标号之和的平均数大于 母 阅读全文
posted @ 2020-11-12 21:48 邦的轩辕 阅读(57) 评论(0) 推荐(0) 编辑
摘要: typedef long long ll; int a[20]; ll dp[20][state];//不同题目状态不同 ll dfs(int pos,/*state变量*/,bool lead/*前导零*/,bool limit/*数位上界变量*/)//不是每个题都要判断前导零 { //递归边界, 阅读全文
posted @ 2020-11-12 18:28 邦的轩辕 阅读(73) 评论(0) 推荐(0) 编辑
摘要: 数位$dp$记忆化搜索 题面链接 不要62 不吉利的数字为所有含有 $4$ 或 $62$ 的号码。例如:$62315,73418,88914$ 都属于不吉利号码。但是,$61152$ 虽然含有 $6$ 和 $2$,但不是 连号,所以不属于不吉利数字之列。 你的任务是,对于每次给出的一个牌照号区间 \ 阅读全文
posted @ 2020-11-12 18:23 邦的轩辕 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 遇到数学的式子我们就先手玩10分钟,经验之谈 当$n=1$ \(\dfrac{1}{a}\) 当$n=2$ \(\dfrac{1}{a}\left( \dfrac{1}{a}+\dfrac{1}{b}\right) +\dfrac{1}{b}\left( \dfrac{1}{a}+\dfrac{1} 阅读全文
posted @ 2020-11-12 12:04 邦的轩辕 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 题面链接 题面 有$n$个位置$(1\sim n)$,第$i$个位置上有$a_i$个箱子。有$m$个人,开始在$0$位置(即在$1$号位置左边),每一秒钟每个人都可以选择搬走自己位置上的一个箱子或向前走一步(即从位置$i$走到位置 \(i+1\))。问最少需要多少时间才可以将箱子全部搬完。 输入第一 阅读全文
posted @ 2020-11-11 16:42 邦的轩辕 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 题面链接 题面 询问$a_1,a_2,\cdots a_n$能否通过若干次将任意区间全部赋值为其中位数这个操作,来使得整个序 列全部变为k。(中位数指第$\lfloor \frac {∣s∣+1} 2 \rfloor$小的数) 多次询问,每次第一行两个整数,$n$和$k$;第二行nn个整数,\(a_ 阅读全文
posted @ 2020-11-10 21:12 邦的轩辕 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 做题链接 题面 已知接下来$N$天的股票价格,每天你可以买进一股股票,卖出一股股票,或者什么也不做.$N$天之后你拥有的股 票应为$0$,当然,希望这N天内能够赚足够多的钱. 输入: 第一行一个整数天数$N$($2<=N<=300000$). 第二行N个数字$p_1,p_2...p_N$($1<=p 阅读全文
posted @ 2020-11-10 14:16 邦的轩辕 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 题面 题 小刚在玩$JSOI$提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,$T$部落消灭了所有 $z$部落的入侵者。但是T部落的基地里已经有$N$个建筑设施受到了严重的损伤,如果不尽快修复的话,这 些建筑设施将会完全毁坏。现在的情况是:$T$部落基地里只有一个修理工人,虽然他能瞬间 阅读全文
posted @ 2020-11-10 07:44 邦的轩辕 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 题面连接 题面 有 \(N\) 种物品和一个容量是 \(V\) 的背包。 物品一共有三类: 第一类物品只能用$1$次(01背包); 第二类物品可以用无限次(完全背包); 第三类物品最多只能用 \(si\) 次(多重背包); 每种体积是 \(vi\),价值是 \(wi\)。 求解将哪些物品装入背包,可 阅读全文
posted @ 2020-11-09 17:32 邦的轩辕 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 浅入深地讲解线段树 首先是最简单的模版——区间加,区间查 我们需要这样5个函数 pushup——由下往上地传递信息 pushdown——传递懒标记 build——建立出树形结构 modify——区间加操作 query——区间查询 1.建树 struct node{ int l,r; long lon 阅读全文
posted @ 2020-11-08 17:40 邦的轩辕 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 用$dijskra$ 题面链接 题面 约翰一共有 \(N\) 个牧场.由 \(M\) 条布满尘埃的小径连接。小径可以双向通行。每天早上约翰从牧场 $1$ 出 发到牧场 \(N\) 去给奶牛检查身体。 通过每条小径都需要消耗一定的时间。约翰打算升级其中 \(K\) 条小径,使之成为高速公路。在高速公路 阅读全文
posted @ 2020-11-05 22:00 邦的轩辕 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 做题链接 多重背包的二进制优化 输入格式 第一行两个整数,$N \ V$用空格隔开,分别表示物品种数和背包容积。 接下来有 \(N\) 行,每行三个整数 \(vi,wi,si\),用空格隔开,分别表示第$i$种物品的体积、价值和数量。 输出格式 输出一个整数,表示最大价值。 数据范围 $0<N≤10 阅读全文
posted @ 2020-11-05 14:20 邦的轩辕 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 题面链接 题面 牛牛最近开始学括号匹配拉 给你两个括号序列,不保证合法,求有多少种不同的方法可以将两个括号序列合并成一个合法的括号序列 合并的时候不能改变各自序列原先的顺序 输入描述: 输入两行包含两个字符串s1,s2 1 ≤ |s1|,|s2| ≤ 2500 输出描述: 输出一个整数,魔109+7 阅读全文
posted @ 2020-11-05 11:46 邦的轩辕 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 机器任务 有两台机器 \(A,B\) 以及 \(K\) 个任务。 机器 $A$有 \(N\) 种不同的模式(模式$0N-1$),机器 B 有 M 种不同的模式(模式$0M-1$)。 两台机器最开始都处于模式0。 每个任务既可以在$A$上执行,也可以在B上执行。 对于每个任务 \(i\),给定两个整数 阅读全文
posted @ 2020-11-04 21:54 邦的轩辕 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 树的统计 思路 用线段树维护单点修改,区间查询最大值,区间和 注意 记得修改的点对应的下标在线段树上是$id[u]$,因为我们的线段树是按$dfn$形成的 和其他的树链剖分题是一样的 注意 当查询区间最大值的时候,一定记得先把下标设成负无穷,因为我们的答案有可能是负数 代码 #include<bit 阅读全文
posted @ 2020-11-04 16:21 邦的轩辕 阅读(69) 评论(0) 推荐(0) 编辑
摘要: 农夫约翰的农场由 N 块田地组成,每块地里都有一定数量的牛,其数量不会少于1头,也不会超过2000头。 约翰希望用围栏将一部分连续的田地围起来,并使得围起来的区域内每块地包含的牛的数量的平均值达到最大。 围起区域内至少需要包含 F 块地,其中 F 会在输入中给出。 在给定条件下,计算围起区域内每块地 阅读全文
posted @ 2020-11-03 22:17 邦的轩辕 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 关押罪犯 $S$城现有两座监狱,一共关押着 \(N\) 名罪犯,编号分别为$1~N$。 他们之间的关系自然也极不和谐。 很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。 我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。 如果两名怨 阅读全文
posted @ 2020-11-03 12:07 邦的轩辕 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 过河 题面 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧。 在桥上有一些石子,青蛙很讨厌踩在这些石子上。 由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点:\(0,1,……,L\)(其中L是桥的长度)。 坐标为$0$的点表示桥的起点, 阅读全文
posted @ 2020-11-02 10:40 邦的轩辕 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 小凯的疑惑 如果 a,b均是正整数且互质,那么由 ax+by,x≥0,y≥0 不能凑出的最大数是 ab−a−b 首先证明 \(ab−a−b\) 不能被 $ax+bx,x≥0,y≥0$表示出。 反证法,假设$ab-a-b=ax + by$,那么$ab=a(a+1)+ b(g+1)$,由于$a|ab$, 阅读全文
posted @ 2020-11-02 09:04 邦的轩辕 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 杜老师 开车旅行 旅行 划分 1A 2B 3C 4D 5E 6F 7G 8H 9I 10G 阅读全文
posted @ 2020-10-29 16:23 邦的轩辕 阅读(67) 评论(0) 推荐(0) 编辑
摘要: Fair Photography S P3105 思路 我们令白牛为1,花斑牛为-1。 前缀和记录白牛数减去斑点牛数。 既然白牛可以变成斑点牛,那么只要一段区间$[l,r]$内的白牛数大于等于斑点牛数且总数为偶数,即 $sum[r]-sum[l-1]>=0$使$r-l$最长即可。 观察发现,当某点i 阅读全文
posted @ 2020-10-20 09:44 邦的轩辕 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 算法 (区间DP,二叉树的遍历) 状态表示:\(f[i][j]\) 表示中序遍历是 \(w[i~j]\) 的所有二叉树的得分的最大值。 状态计算:\(f[i][j] = max(f[i][k - 1] * f[k + 1][j] + w[k])\),即将$f[i][j]$表示 的二叉树集合按根节点分 阅读全文
posted @ 2020-10-11 19:45 邦的轩辕 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 前缀表达式的运算符位于两个相应操作数之前,前缀表达式又被称为前缀记法或波兰式 前缀表达式的计算机求值 从右至左扫描表达式 遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(栈顶元素 op 次顶元素),并将结果入栈 重复上述过程直到表达式最左端,最后运算得出的值即 阅读全文
posted @ 2020-10-11 17:18 邦的轩辕 阅读(224) 评论(0) 推荐(1) 编辑
摘要: #include<bits/stdc++.h> using namespace std; #define x first #define y second const int maxn=1e6; long long q1[maxn],q2[maxn]; long long t1,t2; long l 阅读全文
posted @ 2020-10-10 16:30 邦的轩辕 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 更好的阅读体验 先考虑k=0的情况,往往一个小的切入点往往能给我们以启示 这个时候我们往往只需要生成一个长度是n*2的下降序列就行 考虑绝对值内式子的性质 当我们有一个下降序列的时候,我们每次交换一对数,都会使这个序列的值减少2,那么只要我们减少k次,就会符合题意 构造题简直妙不可言 #includ 阅读全文
posted @ 2020-09-27 11:04 邦的轩辕 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 首先线段树有5个基本的操作 分别是pushup,pushdown,modify,query,build ###1.建树 struct node{ int l,r; long long sum,add; }tr[maxn*4]; void build(int p,int l,int r) { tr[p 阅读全文
posted @ 2020-09-24 21:49 邦的轩辕 阅读(80) 评论(0) 推荐(0) 编辑
摘要: cmp的多关键字排序 #include<bits/stdc++.h> using namespace std; const int maxn=1e6; struct node{ string s; int num,year,mon,day; }a[maxn]; bool cmp(node a,nod 阅读全文
posted @ 2020-09-20 08:35 邦的轩辕 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 考虑组合数$C_^$ 其实他们的方案数就是杨辉三角 此时有一个递推式 c[i][j]=c[i-1][j]+c[i-1][j]; #include<bits/stdc++.h> using namespace std; const int N=1000; const int mod=1e9+7; co 阅读全文
posted @ 2020-09-16 20:59 邦的轩辕 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 题目背景 bleaves最近在wzoi上面做题。 wzoi的题目有两种,一种是noip题,一种是省选题。 bleaves的做题方式很特别。每一天,她可能会看一道题目,这时她会选择题目种类, 然后wzoi会在选定种类中随机扔给她一道她还没看过的题,她会把这道题看一遍, 然后存在脑子里慢慢思考;她也有可 阅读全文
posted @ 2020-09-11 22:06 邦的轩辕 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 题面描述 ###题面描叙 有一个m×m的棋盘,棋盘上每一个格子可能是红色、黄色或没有任何颜色的。 你现在要从棋盘的最左上角走到棋盘的最右下角。 任何一个时刻,你所站在的位置必须是有颜色的(不能是无色的),你只能向上、下、左、右四个方向前进。 当你从一个格子走向另一个格子时,如果两个格子的颜色相同,那 阅读全文
posted @ 2020-09-09 20:00 邦的轩辕 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 题面跳转 这道题我用的是vector存的图,d[]表示该节点的大小(包括自己),fa[i]就表示i这个节点的父亲节点 在dfs的时候进行vector遍历就行 性质: 一个树的重心一定在他所有儿子的子树的重心的连线上。 #include<bits/stdc++.h> using namespace s 阅读全文
posted @ 2020-09-07 11:56 邦的轩辕 阅读(75) 评论(0) 推荐(0) 编辑
摘要: 点击跳转 #include <iostream> #include <string> using namespace std; int dfs1(int R,int P,int S)//石头,布,剪刀 { if( R < 0 || P < 0 || S < 0 ) return -1;//有一类人数 阅读全文
posted @ 2020-09-04 21:32 邦的轩辕 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 点击跳转题面,获得更好的体验 题面简述 给定你一个正整数数列,每个数都在$0~p-1$之间, 可以对这列数进行两种操作 1.添加操作:向序列中添加一个数变成n+1 2.询问操作,询问这个序列中最后L个数中的最大的数是多少 单点修改,区间查询最大值,我们可以使用线段树来进行维护 每个 阅读全文
posted @ 2020-08-30 18:17 邦的轩辕 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 点击跳转 ###区间dp问题 有n个集合,第i个集合记为Si,集合按环状排列,即第i+1个集合右边是第ii个集合,第n个集合右边是第ii个集合。 一开始每个集合里只有一个数,每次你可以选择两个相邻的集合S,T然后合并成S∪T,之后你可以获得收益|S|×|T|,其中|S|表示集合S的元素个数。 你需要 阅读全文
posted @ 2020-08-29 16:40 邦的轩辕 阅读(232) 评论(0) 推荐(0) 编辑