分类: 信竞

38 篇文章

P1197 [JSOI2008] 星球大战 题解
题目大意 有一个图,依次删去一些点后有多少个连通块。 思路 一道并查集 + 离线 的题目。 这道题第一眼肯定是想如何维护可以删除节点的并查集,但是这样不太可做。(或许是我太菜了。)但是我们发现他只有一个删除的操作,没有增加的操作,那么就可以想到离线计算。 离线计算,也就是把原本是读入后立马运算的操作都存起来,再算。 这样的好处就是我们可以按操作倒着…
初赛笔记
CSP 初赛笔记,持续更新中。 出栈序列 出栈序列满足 FILO 的规则,也就是先进后出。 如果入栈的顺序是降序排列,那么可以快速判断的依据就是任意数A的后面比A大的数都是按照升序排列的 如果入栈的顺序是升序排列,那么可以快速判断的依据就是任意数A的后面比A小的数都是按照降序排列的 哈夫曼编码 哈夫曼编码详解——图解真能看了秒懂_已知字符集abcd…
前缀函数 & KMP 学习笔记
前缀函数 前缀函数的定义是:一个字符串最长的真前缀和真后缀。真前后缀的意思是这个前缀或者后缀不是这个字符串本身。 我们定义 $f(i)$ 的意思是这个字符串从第 $1$ 位到第 $i$ 位的字符串的前缀函数。 通过定义,我们可以暴力求出前缀函数 $f(i)$,复杂度 $O(n^2)$。 显然,这个复杂度太高了,于是我们可以尝试优化。 优化 第一个重…
模拟测验(零)水灾 做题笔记
题面 思路 这道题第一眼应该可以看出是一道搜索的题目。 我们先用 bfs 搜索一遍,用来计算出洪水到达每一个位置的最少时间。 这里需要注意的一点是,有可能有多个洪水的初始地点,所以每一个洪水到达一个地点的时间有可能不一样。所以在更新洪水达到时间的时候,我们需要注意不要直接赋值,要取最小值。 第二遍 bfs 是计算能不能达到别墅和最短时间,这个直接 …
模拟测验(一)双色球 做题笔记
题面 思路 50 pts 暴力。我们发现每次操作等于将前面的红的变成蓝的,将第一个蓝的变成红的。 要养成写暴力的好习惯。 #include <bits/stdc++.h> using namespace std; /* */ int n; string s; int cnt = 0; bool check() { for (int i …
SPFA 学习笔记
SPFA学习笔记 SPFA,他死了!——某次 noi T1 的出题人。 感觉和 DIJ 很像。 使用范围:负边权,判断负环,随机图 不适用于构造图。容易超时。 思路: 对于出发的点,向所有可以到达,并且没到达过的点的边都进行松弛(见 图论——dijkstra),将松弛的点入队,注意是队列不是优先队列。 继续重复上面的操作,直到队列为空。 #incl…
P1154 奶牛分厩 题解
难度:黄。 思路 我们假设 $x \bmod k == y \bmod k$,那么 $x = nk + a$,$y = mk + a$。我们可以计算出: $$ y - x = (mk + a) - (nk + a)\\ $$ $$ y - x = mk - nk\\ $$ $$ y - x = (m - n)k\\ $$ $$ K | y - x …
01 背包
题目链接:洛谷 P1048 题目大意 给定一个最大重量为 $V$ 的背包,和 $n$ 个物品。每个物品有一个重量和价值。现在问在背包可以装下的范围内,最大的价值是多少。 朴素 DP 我们定义 dp[i][j] 为到第 $i$ 个物品,背包的重量为 $j$ 的最大价值。 我们可以得出状态转移方程: $$ \text{dp[i][j] = max(dp…
CF1956B Nene and the Card Game
前言 题目算比较简单的思维题目,很符合 CF 的出题特点。 题目大意 现在有 $1$ 到 $n$ 的牌每个两张。你现在有 $n$ 张,并且在输入中给出。另一个人有剩下的 $n$ 张牌。 你和那个人进行一个游戏: 两人轮流。你先手,另一个人后手。一共进行 $2 \times n$ 轮。 每轮的那个人需要出一张牌。 如果那张牌上的数字是之前出过的,那么…
洛谷 P2049 魔术妻子 题解
算法 dp 思路 直接用 set 统计即可。 代码 #include <bits/stdc++.h> using namespace std; /* */ int n, m, k; set <int> dp[105][105]; int a[105][105]; int main() { ios::sync_with_std…