02 2019 档案
摘要:P1350 车的放置 递推不会,只会排列组合。。。 我们把原来的这个棋盘分成两个小矩形棋盘,然后计算方案数。 设在上面放了$i$个棋子,那么就必须在下面放$k i$个棋子。 先在上面的矩形放置,方案数是$C_a^i \times C_b^i\times i!$ 但是下面的矩形就需要考虑上面矩形的限制
        阅读全文
                
摘要:P2216 [HAOI2007]理想的正方形 这道题就是标准的二维RMQ模板。 回顾一下原来的RMQ,分两个阶段,先倍增的初始化,再$O(1)$地求答案。二维RMQ也是有异曲同工之妙的。 这个最值怎么定义?我们设$maxv[i][j][k]$为以$(i,j)$为左上角的$2^k\times 2^k$
        阅读全文
                
摘要:Codeforces Global Round 1 晕阙记 我做这场比赛的时候晕得要死。做这三道题做太久了,rating涨不起来啊! A 如果愿意的话你可以看做是膜2意义下的运算,写快速幂等各种膜运算。只不过对手速有考验。 B 我题意差点理解不了了。这里讲一下题意: 给你$m$条棍子,编号从$1$到
        阅读全文
                
摘要:Codeforces Round 538 (Div. 2)原题记 B题看晕了,C题神仙数论题。 无意点开luogu,发现C题原来是原题。 1h30min左右抄了题解交了上去,没想到还能涨一点rating。。。 A 直接模拟就是了。我懒得再看一次题面。 cpp include using std::c
        阅读全文
                
摘要:P2491 [SDOI2011]消防 这道题有点东西 首先,这道题如果有了这么个结论就没二分答案什么事情了: 这条长度不超过$s$的路径一定在直径上 所以就是和“树网的核”一个思路:在直径上面跑two pointers,因为长度越长显然答案更优。 我们先求个直径,用两次dfs来求。 之后在直径上尺取
        阅读全文
                
摘要:P1516 青蛙的约会 题意:在一个长为$l$的环上面有两只青蛙,一只出发点为$x$,一次跳$m$,另一只出发点为$y$,一次跳$n$,求相遇时间。 这个长为$l$的环不难想到了以$l$为模的同余。其实就是求这个$t$:$x+t\times m \equiv y + t \times n\pmod 
        阅读全文
                
摘要:P1950 长方形_NOI导刊2009提高(2) 题意:给你$n\times m$的矩形,求没有 的子矩形数量。$1\leq n,m\leq 1000$。 数据比较弱的题目是luoguP1191,$1\leq n,m \leq 100$。甚至可以用$O(n^4)$水过。 这道题的最优解法$O(n^2
        阅读全文
                
摘要:P1333 瑞瑞的木棍 题意:给你若干条边,端点是名字,求能否一笔画。图可能不连通。 针对这些名字,显然用一下hash或者trie。 要判断能否一笔画,首先要判断是否只有一个连通块。显然可以用并查集解决。当所有点的fa值相同时就只有一个连通块了。 然后就是一笔画问题的定理: 连通的无向图$G$有欧拉
        阅读全文
                
摘要:P3201 [HNOI2009]梦幻布丁 题意:N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为1,2,2,1的四个布丁一共有3段颜色. 这道题是可以用数据结构合并的,然而我们可以用STL水过。用set。 对每种颜色开一个set
        阅读全文
                
摘要:P1041 传染病控制 ~~远古NOIP题放到现在真的容易得一批~~ 给你一棵树,以1为根。1点有病,并且有边就会传染,一轮传染可以断边一次,求最好的断边方案下的最小感染人数。 有一个贪心的思想:当前哪一层要被感染,我们就亡羊补牢,去断这个路径上的任意一条边。 因为树是越走size越小的,去断上面已
        阅读全文
                
摘要:P3143 [USACO16OPEN]钻石收藏家Diamond Collector 题意要注意一点:有两个陈列架! 如果只有一个陈列架,是很容易的。two pointers直接从左到右跑一下即可。 如果有两个陈列架,就需要进行答案合并了。做法是这样的: 设两个数组: 1. $pre$数组,$pre[
        阅读全文
                
摘要:P3957 跳房子 ~~前年pj没去年难好吧~~ 首先要发现这个答案是有单调性的。 这个很显然了:氪金越多游戏越容易玩,氪金越少越难。 然而也有界限:如果所有正数的和加起来还不够需求,无解。 所以二分答案,考虑如何判定答案。 是人都知道要设一个$dp[i]$表示跳前$i$个房子的最大分数。 50pt
        阅读全文
                
摘要:P2627 修剪草坪 给你一个$n$个数字的数组,至多连续取$k$个数字,求取出的最大和。 预处理了前缀和之后,一维dp很容易想:$dp[i] = max(dp[j 1] + sum[j+1,i])$ 用前缀和写就是$dp[i]=max(dp[j 1]+sum[i] sum[j])$ 把与$i$有关
        阅读全文
                
摘要:P1099 树网的核 首先要用人话来翻译这道题: 给你一个无根树和一个非负整数$s$,求直径上的一段长度不超过$s$的路径$F$,使树上结点到$F$距离最大值的最小值。 首先当然要求直径辣!因为数据小,直接大力两次dfs就可以求出直径。 然后怎么在直径上取完所有长度不超过$s$的路径?这道题的关键就
        阅读全文
                
摘要:NOIP2018 复盘 前言 在这里立一个可能无法实现的flag: 把NOIP从古至今(luogu上有)的每一年都写一篇复盘!!! ~~伏拉格综合征开始了~~ 在复盘就不讲那些伤心的话了。 D1T1 铺设道路 考试时居然不知道这道题是原题。。。 一共有两种做法: 1. 递推/贪心。 设一个数组$f$
        阅读全文
                
摘要:左偏树学习笔记 具体印象 普通的二叉堆只能实现普通的堆的功能。 如果需要支持合并操作,就需要使用可并堆,左偏树就是一种好写的可并堆。 左偏树是一颗二叉树,由于特殊性质,整棵树会集中在左边,所以叫做左偏树。 左偏给堆的合并创造了很优秀的复杂度。 上面的图片来自luoguP3378题解区@lolte d
        阅读全文
                
摘要:P1312 Mayan游戏 这道题跟斗地主都是大模拟啊!稍微挂一点可能就爆零了! 图肯定能存,直接二维数组扔进去即可。 然后套dfs模板,搜索就先照那样搜。 核心操作有两个:一个是判断那些块可以消掉,一个是把那些可以消的消了。 第一个操作的核心代码是这样的: cpp for(int i = 1; i
        阅读全文
                
摘要:CF1095E Almost Regular Bracket Sequence 给定一个长度为 $n$ 的小括号序列,求有多少个位置满足将这个位置的括号方向反过来后使得新序列是一个合法的括号序列。 这道题要用到高级前缀和+后缀和。 我们设两个int数组$s1$和$s2$,两个bool数组$b1$和$
        阅读全文
                
摘要:P3052 [USACO12MAR]摩天大楼里的奶牛Cows in a Skyscraper 给出n个物品,体积为w[i],现把其分成若干组,要求每组总体积 eps; T = delta) { // 模拟退火打乱序列过程 ll x = rand() % n + 1, y = rand() % n +
        阅读全文
                
摘要:CF1096D Easy Problem ~~复习了几乎忘光了的dp~~ dp数组是这样子的:$dp[i][0/1/2/3/4]$表示前$i$个字符,"hard"遍历到了第几个字符的最小代价。 核心代码是这样的: cpp memset(dp, 0x3f, sizeof dp); for(int i 
        阅读全文
                
摘要:P2783 有机化学之神偶尔会做作弊 ~~史上最水黑题~~ 做法很暴力:tarjan算法求点双缩点,建新图,跑树剖或倍增,求LCA,通过深度算出答案即可。 点双的做法跟强连通分量的tarjan算法极其相似,唯一的一点不同就在于不能回到父节点。 ~~要是回父节点的话那都有两个点大小的环咯~~ 自己交上
        阅读全文
                
摘要:P1417 烹调方案 再次见到这些排序的证明过程! 设有两件食材为$1$和$2$,三个属性分别为$a_1,b_1,c_1$和$a_2,b_2,c_2$,先完成的时间是$t$。 第一种策略:先$1$后$2$。美味指数为$a_1 t \times b_1 + a_2 (t + c_1) \times b
        阅读全文
                
摘要:P5147 随机数生成器 ~~数学老师看不懂系列~~ 看题目这一片代码就很晕: 但是如果你把这个东西看成一个数列的值,就很显然了。 设 返回的期望值为$a_n$,那么题意就可以变成: $$\begin{cases} a_1 = 0 \\ a_n= \frac{S_n}{n} + 1\end{case
        阅读全文
                
                    
                
浙公网安备 33010602011771号