博客园 - Kevin_naticl
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=75508
2021-08-27T03:21:58Z
Kevin_naticl
https://www.cnblogs.com/Kv-Stalin/
feed.cnblogs.com
https://www.cnblogs.com/Kv-Stalin/p/11838565.html
[USACO16JAN]愤怒的奶牛Angry Cows (单调队列优化dp) - Kevin_naticl
"题目链接" Solution 应该可以用二分拿部分分,时间 $O(n^2logn)$ 。 然后可以考虑 $n^2$ $dp$ ,令 $f_i$ 代表 $i$ 点被激活,然后激活 $i$ 之前所有点所需的半径。 那么很显然 $f[i]=min(max(pos[i] pos[j],f[j]))$ 其中
2019-11-11T13:21:00Z
2019-11-11T13:21:00Z
Kevin_naticl
https://www.cnblogs.com/Kv-Stalin/
【摘要】"题目链接" Solution 应该可以用二分拿部分分,时间 $O(n^2logn)$ 。 然后可以考虑 $n^2$ $dp$ ,令 $f_i$ 代表 $i$ 点被激活,然后激活 $i$ 之前所有点所需的半径。 那么很显然 $f[i]=min(max(pos[i] pos[j],f[j]))$ 其中 <a href="https://www.cnblogs.com/Kv-Stalin/p/11838565.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Kv-Stalin/p/11809233.html
[NOI2014] 魔法森林 (二分答案,并查集) - Kevin_naticl
本思路仅供参考,数据强一点应该该会被卡。 本蒟蒻没有打 $link$ $cut$ $tree$ . 而是用暴力水了过去。 具体思路很简单,先二分最少的 $a_i$ , 再在 $judge$ 的时候再二分 $b_i$. 然后使用并查集来判断是否联通,复杂度 $n(logn)^3$ 但是第一遍只有 $7
2019-11-06T14:36:00Z
2019-11-06T14:36:00Z
Kevin_naticl
https://www.cnblogs.com/Kv-Stalin/
【摘要】本思路仅供参考,数据强一点应该该会被卡。 本蒟蒻没有打 $link$ $cut$ $tree$ . 而是用暴力水了过去。 具体思路很简单,先二分最少的 $a_i$ , 再在 $judge$ 的时候再二分 $b_i$. 然后使用并查集来判断是否联通,复杂度 $n(logn)^3$ 但是第一遍只有 $7 <a href="https://www.cnblogs.com/Kv-Stalin/p/11809233.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Kv-Stalin/p/11245245.html
考试题 : 游戏 (二分,贪心) - Kevin_naticl
Code cpp include define N 2000008 using namespace std; struct sj{ int to,next; }a[N 2]; int size,head[N],n,k; void in(int &x) { char ch=getchar();int
2019-07-25T08:43:00Z
2019-07-25T08:43:00Z
Kevin_naticl
https://www.cnblogs.com/Kv-Stalin/
【摘要】Code cpp include define N 2000008 using namespace std; struct sj{ int to,next; }a[N 2]; int size,head[N],n,k; void in(int &x) { char ch=getchar();int <a href="https://www.cnblogs.com/Kv-Stalin/p/11245245.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Kv-Stalin/p/11245170.html
HY 的惩罚 (Trie 树,博弈论) - Kevin_naticl
【问题描述】 hy 抄题解又被老师抓住了,现在老师把他叫到了办公室。 老师要 hy 和他玩一个游 戏。如果 hy 输了,老师就要把他开除信息组; 游戏分为 k 轮。在游戏开始之前,老师会将 n 个由英文字母组成的字符串放入箱子。 每局开始,字符串为空串,然后两人轮流在末尾追加字符,保证新的字符串为箱
2019-07-25T08:35:00Z
2019-07-25T08:35:00Z
Kevin_naticl
https://www.cnblogs.com/Kv-Stalin/
【摘要】【问题描述】 hy 抄题解又被老师抓住了,现在老师把他叫到了办公室。 老师要 hy 和他玩一个游 戏。如果 hy 输了,老师就要把他开除信息组; 游戏分为 k 轮。在游戏开始之前,老师会将 n 个由英文字母组成的字符串放入箱子。 每局开始,字符串为空串,然后两人轮流在末尾追加字符,保证新的字符串为箱 <a href="https://www.cnblogs.com/Kv-Stalin/p/11245170.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Kv-Stalin/p/11239143.html
[USACO17DEC]Barn Painting (树形$dp$) - Kevin_naticl
"题目链接" Solution 比较简单的树形 $dp$ 。 $f[i][j]$ 代表 $i$ 为根的子树 ,$i$ 涂 $j$ 号颜色的方案数。 转移很显然 : $$f[i][1]=\prod(f[t][2]+f[t][3])$$ 其中 $k$ 代表它的子节点。 其他两种颜色以此类推。 但需要注意
2019-07-24T08:48:00Z
2019-07-24T08:48:00Z
Kevin_naticl
https://www.cnblogs.com/Kv-Stalin/
【摘要】"题目链接" Solution 比较简单的树形 $dp$ 。 $f[i][j]$ 代表 $i$ 为根的子树 ,$i$ 涂 $j$ 号颜色的方案数。 转移很显然 : $$f[i][1]=\prod(f[t][2]+f[t][3])$$ 其中 $k$ 代表它的子节点。 其他两种颜色以此类推。 但需要注意 <a href="https://www.cnblogs.com/Kv-Stalin/p/11239143.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Kv-Stalin/p/11234590.html
[USACO10MAR]伟大的奶牛聚集Great Cow Gat… ($dfs$,树的遍历) - Kevin_naticl
"题目链接" Solution 辣鸡题...因为一个函数名看了我贼久。 思路很简单,可以先随便指定一个根,然后考虑换根的变化。 每一次把根从 $x$ 换成 $x$ 的一个子节点 $y$,记录一下每个节点的子树牛数目 $son$。 令 $sum$ 为所有节点上牛的数目,那么每一次换根变化为 $(sum
2019-07-23T13:28:00Z
2019-07-23T13:28:00Z
Kevin_naticl
https://www.cnblogs.com/Kv-Stalin/
【摘要】"题目链接" Solution 辣鸡题...因为一个函数名看了我贼久。 思路很简单,可以先随便指定一个根,然后考虑换根的变化。 每一次把根从 $x$ 换成 $x$ 的一个子节点 $y$,记录一下每个节点的子树牛数目 $son$。 令 $sum$ 为所有节点上牛的数目,那么每一次换根变化为 $(sum <a href="https://www.cnblogs.com/Kv-Stalin/p/11234590.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Kv-Stalin/p/11233700.html
[USACO17JAN]Balanced Photo平衡的照片 (树状数组) - Kevin_naticl
"题目链接" Solution 先离散化,然后开一个大小为 $100000$ 的树状数组记录前面出现过的数。 然后查询 $(h[i],n]$ 即可. 还要前后各做一遍。 Code cpp include define N 200008 define ll long long using namesp
2019-07-23T10:43:00Z
2019-07-23T10:43:00Z
Kevin_naticl
https://www.cnblogs.com/Kv-Stalin/
【摘要】"题目链接" Solution 先离散化,然后开一个大小为 $100000$ 的树状数组记录前面出现过的数。 然后查询 $(h[i],n]$ 即可. 还要前后各做一遍。 Code cpp include define N 200008 define ll long long using namesp <a href="https://www.cnblogs.com/Kv-Stalin/p/11233700.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Kv-Stalin/p/11228239.html
[USACO17FEB]Why Did the Cow Cross the Road III G (树状数组,排序) - Kevin_naticl
"题目链接" Solution 二维偏序问题。 现将所有点按照左端点排序,如此以来从左至右便满足了 $a_i define N 50010 define ll long long using namespace std; void in(ll &x) { char ch=getchar();ll f
2019-07-22T12:37:00Z
2019-07-22T12:37:00Z
Kevin_naticl
https://www.cnblogs.com/Kv-Stalin/
【摘要】"题目链接" Solution 二维偏序问题。 现将所有点按照左端点排序,如此以来从左至右便满足了 $a_i define N 50010 define ll long long using namespace std; void in(ll &x) { char ch=getchar();ll f <a href="https://www.cnblogs.com/Kv-Stalin/p/11228239.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Kv-Stalin/p/11210770.html
P2627 修剪草坪 (单调队列优化$dp$) - Kevin_naticl
"题目链接" Solution 70分很简单的DP,复杂度 O(NK)。 方程如下: $$f[i][1]=max(f[j][0]+sum[i] sum[j])$$$$f[i][0]=max(f[i 1][1],f[i 1][0])$$ 然后就要考虑优化,很显然可以用单调队列来优化。 维护当前 $i$
2019-07-18T15:42:00Z
2019-07-18T15:42:00Z
Kevin_naticl
https://www.cnblogs.com/Kv-Stalin/
【摘要】"题目链接" Solution 70分很简单的DP,复杂度 O(NK)。 方程如下: $$f[i][1]=max(f[j][0]+sum[i] sum[j])$$$$f[i][0]=max(f[i 1][1],f[i 1][0])$$ 然后就要考虑优化,很显然可以用单调队列来优化。 维护当前 $i$ <a href="https://www.cnblogs.com/Kv-Stalin/p/11210770.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Kv-Stalin/p/11209746.html
[USACO14MAR] 破坏Sabotage(二分答案,分数规划) - Kevin_naticl
"题目链接" Solution 去掉中间一段区间 $[l,r]$ 后剩下的平均值可以表示为 : $$\frac{\sum^{n}_{i=1}{v_i} \sum^{r}_{i=l}{v_i}}{n (r l+1)}$$ 二分的答案如果要满足条件,即: $$\frac{\sum^{n}_{i=1}{v
2019-07-18T12:20:00Z
2019-07-18T12:20:00Z
Kevin_naticl
https://www.cnblogs.com/Kv-Stalin/
【摘要】"题目链接" Solution 去掉中间一段区间 $[l,r]$ 后剩下的平均值可以表示为 : $$\frac{\sum^{n}_{i=1}{v_i} \sum^{r}_{i=l}{v_i}}{n (r l+1)}$$ 二分的答案如果要满足条件,即: $$\frac{\sum^{n}_{i=1}{v <a href="https://www.cnblogs.com/Kv-Stalin/p/11209746.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Kv-Stalin/p/11209702.html
[USACO10FEB] 吃巧克力Chocolate Eating (二分答案) - Kevin_naticl
"题目链接" Solution 先直接二分答案,然后贪心判断,一旦少于答案就吃一块。 思路很简单,有一点细节。 一天内可以不吃巧克力. 注意处理最后时没吃完的全部在最后一天吃完. Code
2019-07-18T12:09:00Z
2019-07-18T12:09:00Z
Kevin_naticl
https://www.cnblogs.com/Kv-Stalin/
【摘要】"题目链接" Solution 先直接二分答案,然后贪心判断,一旦少于答案就吃一块。 思路很简单,有一点细节。 一天内可以不吃巧克力. 注意处理最后时没吃完的全部在最后一天吃完. Code <a href="https://www.cnblogs.com/Kv-Stalin/p/11209702.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Kv-Stalin/p/9936939.html
P1613 跑路 (最短路,倍增) - Kevin_naticl
"题目链接" Solution 发现 $n$ 只有 $50$, 可以用 $floyd$ . 然后 $w[i][j][l]$ 代表 $i$ 到 $j$ 是否存在 $2^l$ 长的路. 四重循环,枚举即可.如果有则更新 $dis[i][j]$ 为 $1$ . 然后再跑 $floyd$ 即可. 不过注意枚
2018-11-09T12:03:00Z
2018-11-09T12:03:00Z
Kevin_naticl
https://www.cnblogs.com/Kv-Stalin/
【摘要】"题目链接" Solution 发现 $n$ 只有 $50$, 可以用 $floyd$ . 然后 $w[i][j][l]$ 代表 $i$ 到 $j$ 是否存在 $2^l$ 长的路. 四重循环,枚举即可.如果有则更新 $dis[i][j]$ 为 $1$ . 然后再跑 $floyd$ 即可. 不过注意枚 <a href="https://www.cnblogs.com/Kv-Stalin/p/9936939.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Kv-Stalin/p/9936913.html
CF10D LCIS (动态规划) - Kevin_naticl
"题目链接" Solution 动态规划. 令 $f_{i,j}$ 表示 $a$ 数组前 $i$ 个和 $b$ 数组前 $j$ 所得的最长的 LCIS . 转移很好想: $a_i!=b_j :~f_{i,j}=f_{i 1,j}$ $a_i==b_j :~f_{i,j}=max(f_{i 1,j},
2018-11-09T11:56:00Z
2018-11-09T11:56:00Z
Kevin_naticl
https://www.cnblogs.com/Kv-Stalin/
【摘要】"题目链接" Solution 动态规划. 令 $f_{i,j}$ 表示 $a$ 数组前 $i$ 个和 $b$ 数组前 $j$ 所得的最长的 LCIS . 转移很好想: $a_i!=b_j :~f_{i,j}=f_{i 1,j}$ $a_i==b_j :~f_{i,j}=max(f_{i 1,j}, <a href="https://www.cnblogs.com/Kv-Stalin/p/9936913.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Kv-Stalin/p/9852446.html
CF888E Maximum Subsequence (Meet in the middle,贪心) - Kevin_naticl
"题目链接" Solution Meet in the middle. 考虑到 $2^{35}$ 枚举会超时,于是分成两半枚举(尽量平均). 然后不能 $n^2$ 去匹配,需要用到一点贪心: 将数分成 $p,q$ 两组,那么对于任意数 $p_i$ ; 它与 $q$ 数组中组成最大得到的值即为 最大的
2018-10-25T12:03:00Z
2018-10-25T12:03:00Z
Kevin_naticl
https://www.cnblogs.com/Kv-Stalin/
【摘要】"题目链接" Solution Meet in the middle. 考虑到 $2^{35}$ 枚举会超时,于是分成两半枚举(尽量平均). 然后不能 $n^2$ 去匹配,需要用到一点贪心: 将数分成 $p,q$ 两组,那么对于任意数 $p_i$ ; 它与 $q$ 数组中组成最大得到的值即为 最大的 <a href="https://www.cnblogs.com/Kv-Stalin/p/9852446.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Kv-Stalin/p/9850745.html
[CQOI2018]异或序列 (莫队,异或前缀和) - Kevin_naticl
"题目链接" Solution 有点巧的莫队. 考虑到区间 $[L,R]$ 的异或和也即 $sum[L 1]~\bigoplus~sum[R]$ ,此处$sum$即为异或前缀和. 然后如何考虑异或和为 $k$ ? 我们做完前缀和后,可以发现对于$sum[i]$这个起点,异或上$k\bigoplus{
2018-10-25T08:30:00Z
2018-10-25T08:30:00Z
Kevin_naticl
https://www.cnblogs.com/Kv-Stalin/
【摘要】"题目链接" Solution 有点巧的莫队. 考虑到区间 $[L,R]$ 的异或和也即 $sum[L 1]~\bigoplus~sum[R]$ ,此处$sum$即为异或前缀和. 然后如何考虑异或和为 $k$ ? 我们做完前缀和后,可以发现对于$sum[i]$这个起点,异或上$k\bigoplus{ <a href="https://www.cnblogs.com/Kv-Stalin/p/9850745.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Kv-Stalin/p/9849765.html
P2659 美丽的序列 (单调栈) - Kevin_naticl
"题目链接" Solution 直接考虑单调栈处理出每一个点作为最小值的区间长度. 然后 $O(n)$ 找一遍最大值即可. 记得开 ,以及要注意 $0$ 的问题. Code cpp include define ll long long define N 2000001 define in(x) x
2018-10-25T06:47:00Z
2018-10-25T06:47:00Z
Kevin_naticl
https://www.cnblogs.com/Kv-Stalin/
【摘要】"题目链接" Solution 直接考虑单调栈处理出每一个点作为最小值的区间长度. 然后 $O(n)$ 找一遍最大值即可. 记得开 ,以及要注意 $0$ 的问题. Code cpp include define ll long long define N 2000001 define in(x) x <a href="https://www.cnblogs.com/Kv-Stalin/p/9849765.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Kv-Stalin/p/9811716.html
P2625 豪华游轮 (背包$dp$,数学) - Kevin_naticl
"题目链接" Solution 贼有意思的一个题目。 可以发现阻止我们走的更远的就是那些需要反向走的路程。 然后发现当角度越接近 $180^\circ$ ,对我们最终的答案则更优。 所以先是一个背包把可以达到的角度处理一下,然后再直接算就好了。 卡精度。 Code cpp include defin
2018-10-18T09:12:00Z
2018-10-18T09:12:00Z
Kevin_naticl
https://www.cnblogs.com/Kv-Stalin/
【摘要】"题目链接" Solution 贼有意思的一个题目。 可以发现阻止我们走的更远的就是那些需要反向走的路程。 然后发现当角度越接近 $180^\circ$ ,对我们最终的答案则更优。 所以先是一个背包把可以达到的角度处理一下,然后再直接算就好了。 卡精度。 Code cpp include defin <a href="https://www.cnblogs.com/Kv-Stalin/p/9811716.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Kv-Stalin/p/9800491.html
[TJOI2007] 线段 (动态规划) - Kevin_naticl
"题目链接" Solution 传统的线性 $dp$ . $f[i][0]$,$f[i][1]$ 分别表示最后一次在 $i$ ,然后在 左边或者右边的最小步数. 然后就每次根据上一次左边和右边的状态转移过来. Code cpp include define N 20001 define in(x)
2018-10-16T12:35:00Z
2018-10-16T12:35:00Z
Kevin_naticl
https://www.cnblogs.com/Kv-Stalin/
【摘要】"题目链接" Solution 传统的线性 $dp$ . $f[i][0]$,$f[i][1]$ 分别表示最后一次在 $i$ ,然后在 左边或者右边的最小步数. 然后就每次根据上一次左边和右边的状态转移过来. Code cpp include define N 20001 define in(x) <a href="https://www.cnblogs.com/Kv-Stalin/p/9800491.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Kv-Stalin/p/9795058.html
[USACO06NOV]玉米田Corn Fields (状压$dp$) - Kevin_naticl
"题目链接" Solution 状压 $dp$ . $f[i][j][k]$ 代表前 $i$ 列中 , 已经安置 $j$ 块草皮,且最后一位状态为 $k$ . 同时多记录一个每一列中的不能放的位置 $w[i]$. 然后就可以很轻松的转移了... 转移方程看代码. Code cpp include d
2018-10-15T14:04:00Z
2018-10-15T14:04:00Z
Kevin_naticl
https://www.cnblogs.com/Kv-Stalin/
【摘要】"题目链接" Solution 状压 $dp$ . $f[i][j][k]$ 代表前 $i$ 列中 , 已经安置 $j$ 块草皮,且最后一位状态为 $k$ . 同时多记录一个每一列中的不能放的位置 $w[i]$. 然后就可以很轻松的转移了... 转移方程看代码. Code cpp include d <a href="https://www.cnblogs.com/Kv-Stalin/p/9795058.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/Kv-Stalin/p/9794929.html
[SCOI2005]互不侵犯 (状压$dp$) - Kevin_naticl
"题目链接" Solution 状压 $dp$ . $f[i][j][k]$ 代表前 $i$ 列中 , 已经安置 $j$ 位国王,且最后一位状态为 $k$ . 然后就可以很轻松的转移了... 记忆化搜索还是不够啊... 只能会正向 $dp$ . Code cpp include define ll
2018-10-15T13:41:00Z
2018-10-15T13:41:00Z
Kevin_naticl
https://www.cnblogs.com/Kv-Stalin/
【摘要】"题目链接" Solution 状压 $dp$ . $f[i][j][k]$ 代表前 $i$ 列中 , 已经安置 $j$ 位国王,且最后一位状态为 $k$ . 然后就可以很轻松的转移了... 记忆化搜索还是不够啊... 只能会正向 $dp$ . Code cpp include define ll <a href="https://www.cnblogs.com/Kv-Stalin/p/9794929.html" target="_blank">阅读全文</a>