随笔分类 - Pjudge
摘要:构造做不明白一点了!
阅读全文
摘要:怎么想到的????
阅读全文
摘要:一道很有教育意义的题目。 首先我们有众所周知的 AND 卷积和 XOR 卷积,容易证明不同位互不干扰,拼起来可以获得 分的高分! 接下来我们按照 的个数来讨论: - 个 :将这一位赋值为 即可。 - 个 :如果形如 `0001` 那么就和
阅读全文
摘要:写了两个和std不一样的做法(雾,然后还拿了一个最优解。 治病 容易发现是线段覆盖问题,因此只要对每个线段离散以后数出只有它一个线段覆盖的段即可。 时间复杂度 code: #include<bits/stdc++.h> #define Gc() g
阅读全文
摘要:题面传送门 首先有个sbdp,大概就是设表示最后一个是,前一个是的方案数。 这样没啥前途,我们考虑发掘一点性质。 首先发现,对于一个长度为的子段,不会出现两个连续三项不合法,因为如果这样那么第一个等于第四个,则不满足递增的要求。 这样我们可以简化
阅读全文
摘要:排序 首先显然有一个的dp,设表示栈顶是,下面一个是的最大长度。每次枚举前一个转移。 这样子状态数就是的没前途,我们考虑设为到了第个做栈顶,且出现在最终序列中的时候最大的栈长度,然后枚举前一个这样的数,显然$a
阅读全文
摘要:斜二等轴测图 模拟即可。 #include<bits/stdc++.h> #define Gc() getchar() #define Me(x,y) memset(x,y,sizeof(x)) #define Mc(x,y) memcpy(x,y,sizeof(x)) #define d(x,y)
阅读全文
摘要:题面传送门 感觉上挺高妙一道题。 首先我们来考虑怎么做,显然是进行次询问,然后会出现两种取值,在两个较小取值都出现的点就是两个较小的点,在两个较大的取值都出现的点就是两个较大的点。然后再用两次操作区分出较小中较大的和较大中较小的。 这启发我们利用最小的两个和最大的两个以及
阅读全文
摘要:题面传送门 一开始想到一个线段树分治+可撤销BIT的做法,大概就是先线段树分治变成只加不删,然后BIT维护一个凸的函数,加入每一个点的时候直接倍增就好了,时间复杂度,但是这个做法看上去很逊也没有任何的优化空间指不定随便一卡卡成40pts。 正确的做法是考虑$u_x+v_x\
阅读全文
摘要:题面传送门 首先显然是在最小生成树上搞的。 可以发现,如果有这些村庄被派遣了守卫,那么被断掉的边一定是两两点对间的最大边,容易证明这只有条。 不难想到建立Kruskal重构树,然后一个额外点要选的话那么两个儿子中都有守卫。 我们将守卫看作流,那么对于每个
阅读全文
摘要:题面传送门 受到NOIP2021T3的影响容易想到差分。发现就是将差分后两个一样的东西并起来。 然后相当于是问你一直合并最后能剩下最少几个。考虑设为以结尾最后能剩下几个,直接暴力转移是的。 发现这是一个类似于倍增的结构,处理出表示向前
阅读全文