随笔分类 -  模拟赛

摘要:description 装饰者坐在树荫下听着长者讲述以前的故事: 大神 yk 非常喜欢树,便钦点班里的 n 个小蒟蒻站在一棵 n 个点以 1 为根的树上,并且每个点上恰好有 1 个小蒟蒻。 大神 yk 非常喜欢 fake,尤其是 fake 比他弱的人。根据可靠消息,大神 yk 拟定了m 个假人计划, 阅读全文
posted @ 2019-10-04 20:43 路人黑的纸巾 阅读(290) 评论(0) 推荐(0)
摘要:description 大神 wyp 手里有棵二叉树,每个点有一个点权。大神 wyp 的这棵树是质树,因为 随便找两个不同的点 u, v,只要 u 是 v 的祖先,都满足 u 和 v 的点权互质。 现在你通过偷看了解到了大神 wyp 这棵树的中序遍历的点权值,你想复原出大神 wyp 的树,或者指出不 阅读全文
posted @ 2019-09-29 20:58 路人黑的纸巾 阅读(250) 评论(0) 推荐(0)
摘要:description 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低。”问最少有几个人没有说真话(可能有相同的分数) analysis 这题转化模型很妙,容易知道最少没有说真话的数量$=n $说真话最多的数量 对于$a_i$个比$i$大、$b_i$个比$i$小,可以 阅读全文
posted @ 2019-09-28 14:54 路人黑的纸巾 阅读(126) 评论(0) 推荐(0)
摘要:description 有一个n个点A+B条边的无向连通图,有一变量x,每条边的权值都是一个关于x的简单多项式,其中有A条边的权值是k+x,另外B条边的权值是k x,如果只保留权值形如k+x的边,那么这个图仍是一个连通图,如果只保留权值形如k x的边,这个图也依然是一个连通图。 给出q组询问,每组询 阅读全文
posted @ 2019-09-27 20:15 路人黑的纸巾 阅读(167) 评论(0) 推荐(0)
摘要:description 大神 wyp 开了家工厂,工厂有 n 个工人和 p 条流水线。 工厂的工人都是睡神,因此第 i 个工人只会在 si 至 ti 时刻才会工作。 每个工人都会被分派到一条流水线上,然而,一条流水线只会在这条线的工人到齐 时才能开工,其余时间即使有部分工人到了也只能休息。 根据大神 阅读全文
posted @ 2019-09-26 22:19 路人黑的纸巾 阅读(286) 评论(0) 推荐(0)
摘要:description 一开始有n个非负整数h[i](1 include include include define MAXN 1000005 define ll long long define reg register ll define fo(i,a,b) for (reg i=a;i=b; 阅读全文
posted @ 2019-09-23 22:43 路人黑的纸巾 阅读(196) 评论(0) 推荐(0)
摘要:description analysis 容易想到把原矩阵翻转$45°$,然后每个数再用$0$隔开 然后就变成了求最大子正方形,求完二维前缀和之后就很好做了 code cpp pragma GCC optimize("O3") pragma G++ optimize("O3") include in 阅读全文
posted @ 2019-09-19 17:18 路人黑的纸巾 阅读(445) 评论(0) 推荐(0)
摘要:description analysis 拆位从高位到低位贪心 对于当前位,如果把所有当前位为$1$的边塞入,$1$和$n$连通,则该位必须为$1$ 这个是因为高位的$1$比所有低位的$1$都要优,用并查集维护连通性 对固定下的位,继续向下贪心,找低位中满足所有条件的$1$位即可 code cpp 阅读全文
posted @ 2019-09-17 17:54 路人黑的纸巾 阅读(452) 评论(0) 推荐(0)
摘要:description analysis 对于$n=0$的点,直接模拟就好了 状压$DP$,设$f[i][j][S]$表示到第$i$题、连续$GG$了$j$题、喝的饮料集合为$S$的最大答案 由于一题可以喝多瓶饮料所以转移需要枚举$S$的子集$SS$来转移 然后转移比较显然但是细节恶心 ~~我不会告 阅读全文
posted @ 2019-09-17 17:47 路人黑的纸巾 阅读(221) 评论(0) 推荐(0)
摘要:description 在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮。请问有多少种放置方法?中国象棋中炮的行走方式大家应该很清楚吧. analysis $DP$,容易知道每行至多有两个炮,否则会互相打到 设$f[i][j][k]$表示到放到第$i$行,有$j$列放了一 阅读全文
posted @ 2019-09-17 17:42 路人黑的纸巾 阅读(123) 评论(0) 推荐(0)
摘要:description analysis 很妙的$DP$ 设$f[i][j]$表示已经放了$i$个叶子节点、根到当前节点走了$j$步向左的方案数 考虑调整$DP$方式,钦定伸出左儿子可以直接转移,伸出右儿子必须由没有右儿子的父亲转移 如果伸出左儿子,叶子节点数不变,而步数$+1$,所以$f[i][j 阅读全文
posted @ 2019-09-13 17:04 路人黑的纸巾 阅读(119) 评论(0) 推荐(0)
摘要:description analysis 显然边权有变化规律$x,{1\over{x 1}},{x 1\over x},x,...$ 于是把一个点拆成三个点,分别表示步数到除$3$余$0,1,2$的最小值 拆边的话应该也可以,然后跑 最短路 我™这辈子都不会再想打SBFA code 阅读全文
posted @ 2019-09-13 14:06 路人黑的纸巾 阅读(421) 评论(0) 推荐(0)
摘要:description analysis 其实这个连出来的东西叫 " 基环内向树 " 先考虑很多森林的情况,也就是树根连回自己 明显树根物品是可以被取完的,那么买树根的价钱要是儿子中价钱最小的那个 或者把那个叫成收益,也就是选择所有儿子中收益最大的儿子 既然树根可以取完,同理所有 非叶子节点 也可以 阅读全文
posted @ 2019-09-10 16:58 路人黑的纸巾 阅读(386) 评论(1) 推荐(0)
摘要:description analysis 打表找规律,自认为样例给的提示很明显 容易想到最优方案是让家庭尽量先围成一个正六边形,剩下的在最外层绕一个圈 手推一波可以知道,如果正六边形有$n$层,剩下来$n 1$答案一样 其实每隔$n 1,n,n,n,n,n+1$答案都一样,中间间隔$1$ 然后模拟 阅读全文
posted @ 2019-09-10 16:45 路人黑的纸巾 阅读(196) 评论(0) 推荐(0)
摘要:description analysis 首先不管$a,b,c,d$重复的情况方案数是正逆序对之积 如果考虑$a,b,c,d$有重复,只有四种情况,下面括号括起来表示该位置重复 比如$\{a,(b,c),d\}$,其中$b=c,S_aS_d$ 还有$\{(a,c),b,d\}$,$\{a,c,(b, 阅读全文
posted @ 2019-09-07 19:47 路人黑的纸巾 阅读(150) 评论(0) 推荐(0)
摘要:description analysis 这题出的失败在只卡正解不卡暴力 比较好想的方法是枚举约数,向两边二分,但是这个不满足二分性 首先用$ST$表维护区间的$\gcd$,不用线段树,这样查询就是$O(\log_2(\max_{i=1}^{n} a_i))$ 然后照上面的方法做就行了,枚举约数,向 阅读全文
posted @ 2019-08-15 16:35 路人黑的纸巾 阅读(176) 评论(0) 推荐(0)
摘要:description analysis 有没有想起【$NOIP2018$】保卫王国? 设$tr[t][x][y]$表示线段树上的$t$节点代表的区间,从最左边列的$x$行到最右边列$y$行的最小距离 当区间长度为$1$时预处理很简单,注意向上走和向下走 合并两个区间$2t,2t+1$成$t$时,枚 阅读全文
posted @ 2019-08-12 15:23 路人黑的纸巾 阅读(211) 评论(0) 推荐(0)
摘要:description analysis 区间$DP$,首先按照键值排个序,这样保证树的中序遍历就为原序列 设$f[0][i][j]$表示$[i..j]$区间作为$[unknown..i 1]$的 右儿子 的最大和,$f[1][i][j]$就是$[i..j]$区间作为$[j+1..unknown]$ 阅读全文
posted @ 2019-08-09 21:32 路人黑的纸巾 阅读(287) 评论(0) 推荐(0)
摘要:description analysis 可以先用前缀和把原串不调整的方案数先求出来 对于一种翻转,肯定是把$[i..a[i]]$或$[a[i]..i]$这段区间翻转 也可以看做是以${i+a[i]}\over 2$这个点为翻转中心来翻转区间 于是把所有$n$个翻转中心搞出来,用$vector$存下 阅读全文
posted @ 2019-08-09 21:18 路人黑的纸巾 阅读(113) 评论(0) 推荐(0)
摘要:description analysis 其实可以贪心 先把区间按左端点排序,转折点也排序 扫一次转折点,把所有左端点在当前点左边的区间丢进优先队列里 按照贪心策略,对于某个转折点,一定选择右端点离它最近的区间 于是把不合法(右端点在转折点左边)的区间弹出,匹配下去就好了 code cpp prag 阅读全文
posted @ 2019-08-07 16:46 路人黑的纸巾 阅读(94) 评论(0) 推荐(0)