09 2020 档案

摘要:题目链接:https://www.luogu.com.cn/problem/CF1312E 解题思路: 本题要做两次DP。 第一次DP:区间DP。 定义 \(f[i][j]\) 表示 \([i,j]\) 范围内的数合并成一个数之后的这个数是啥;如果没有办法合并成一个数,则 \(f[i][j] = - 阅读全文
posted @ 2020-09-30 16:04 quanjun 阅读(178) 评论(0) 推荐(0)
摘要:题目链接:https://codeforces.com/problemset/problem/598/E 题目大意: 给一个 \(n \times m\) 的巧克力块切除总共 \(k\) 小块(不需要全都切出来,只需要切出来的一些块的总数是 \(k\) 即可),切的代价为切得那条边小块个数的平方,求 阅读全文
posted @ 2020-09-30 15:21 quanjun 阅读(480) 评论(0) 推荐(0)
摘要:题目链接:https://codeforces.com/problemset/problem/864/E 题目大意: 有 \(n\) 件物品,取第 \(i\) 件物品需要 \(t_i\) 时间,且必须在时刻 \(d_i\) 之前取走,能够获得的最大价值是 \(p_i\),问在此约束条件能够获得的最大 阅读全文
posted @ 2020-09-30 12:07 quanjun 阅读(170) 评论(0) 推荐(0)
摘要:题目链接:https://codeforces.com/problemset/problem/1132/F 题目大意: 给你一个串 \(s\),每次可以花费 $1$ 的代价删去一个子串,要求子串的每一位为同一个字符。 求删去整个串的最小代价。 $1\le |s|\le 500$ 解题思路: 区间DP 阅读全文
posted @ 2020-09-30 10:57 quanjun 阅读(186) 评论(0) 推荐(0)
摘要:题目链接:https://codeforces.com/problemset/problem/478/D 解题思路: 定义 \(f[i][j]\) 表示第 \(i\) 层并且总使用了 \(j\) 个红色格子的方案总数。 则:\(f[i][j] = f[i-1][j] + f[i-1][j-h]\)( 阅读全文
posted @ 2020-09-29 21:43 quanjun 阅读(158) 评论(0) 推荐(0)
摘要:题目链接:https://codeforces.com/problemset/problem/1370/D 解题思路: 一开始的想法是定义状态 \(dp_{i,j}\) 表示“前 \(i\) 个数,选了第 \(i\) 个数,共选了 \(j\) 个数的最小值”。则状态转移方程为(没有验证过): \(d 阅读全文
posted @ 2020-09-29 18:57 quanjun 阅读(168) 评论(0) 推荐(0)
摘要:目前还没有做。等开始做了在此更新。。 阅读全文
posted @ 2020-09-29 17:08 quanjun 阅读(406) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/P2534 解题思路: IDA*搜索。 首先需要离散化一下,\(\Rightarrow\) \(n\) 个数变为了 $0 \sim n-1$。 然后估价函数 \(h()\) 可以定义为相邻元素相差不为 $1$ 的对数,当然如 阅读全文
posted @ 2020-09-28 21:58 quanjun 阅读(186) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2234 题目大意: 一天机器人小A在玩一个简单的智力游戏,这个游戏是这样的,在一个4*4的矩阵中分别有4个1,4个2,4个3和4个4分别表示4种不同的东西,每一步小A可以把同一行的4个数往左移或者往右移一 阅读全文
posted @ 2020-09-28 20:48 quanjun 阅读(134) 评论(0) 推荐(0)
摘要:题目链接:https://codeforces.com/contest/1420/problem/E 题目大意: 给你一个长度为 \(n\) 的 $01$序列,每一次操作你可以交换相邻的两个元素。 定义序列的 保护值( protection )为“序列中一对数值为 $0$ 的数,且这对数之间夹着至少 阅读全文
posted @ 2020-09-25 17:20 quanjun 阅读(315) 评论(0) 推荐(0)
摘要:示例代码: #include <bits/stdc++.h> using namespace std; int a[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int main() { partial_sum(a, a+11, a); // a已经变为了原来的 阅读全文
posted @ 2020-09-25 17:07 quanjun 阅读(718) 评论(0) 推荐(1)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6171 题目大意: 假设你是一个著名的海军上将。我们海军有 \(21\) 艘战舰。战舰有 \(6\) 种类型。 首先,我们有一艘 指挥舰 ,海军上将必须在其中,它用数字 \(0\) 表示。其他的战舰的类型 阅读全文
posted @ 2020-09-19 15:34 quanjun 阅读(157) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3017 题目大意: 有 \(n(\le 30)\) 块硬币(\(n\) 可能是奇数),每块硬币都有一个币值。要求将 \(n\) 块金币分成两堆,使得两堆硬币币值和的差尽可能地小。输出这个最小的差。 解题思 阅读全文
posted @ 2020-09-18 23:27 quanjun 阅读(143) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/P2346 首先需要注意 题目描述 中说道的这句话: 黑白双方交替走棋,任意一方可以先走 然后我这边用的是迭代加深搜索解决的这个问题。 我觉得 迭代加深搜索 结合了 DFS 和 BFS 的优点: 能够像BFS一样进行层次遍历 阅读全文
posted @ 2020-09-18 18:54 quanjun 阅读(417) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/P3110 解题思路: 对 $1,2,n$ 三个点分别求一下最短路(因为是无权图所以可以直接用BFS实现最短路)。 示例代码如下: #include <bits/stdc++.h> using namespace std; 阅读全文
posted @ 2020-09-18 15:13 quanjun 阅读(111) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/P4799 解题思路: 如果暴搜时间复杂度是 \(O(2^{40})\),所以考虑折半搜索。 前一半搜索的时候记录好所有的状态,然后对这些状态对应的价格排序。 后一半搜索的时候到边界条件时用二分确定前一半的数量。 时间复杂度 阅读全文
posted @ 2020-09-18 13:31 quanjun 阅读(159) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/P5691 解题思路: 因为暴搜的时间复杂度为 \(O(150^6)\),所以采用折半搜索(meet-in-middle search)。 我这里用 map 记录 hash,所以总的时间复杂度为 \(O(12 \cdot 1 阅读全文
posted @ 2020-09-18 10:47 quanjun 阅读(196) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/P2324 解题思路: A* 搜索。 \(h(x)\) 表示当前状态下有多少位置和目标状态不一样。 示例代码: #include <bits/stdc++.h> using namespace std; const int 阅读全文
posted @ 2020-09-17 22:59 quanjun 阅读(166) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/P1379 一般搜索: #include <bits/stdc++.h> using namespace std; int tmp[3][3], dir[4][2] = { -1, 0, 1, 0, 0, -1, 0, 1 阅读全文
posted @ 2020-09-17 21:38 quanjun 阅读(193) 评论(0) 推荐(0)
摘要:之前的折半枚举的代码有一点点问题,已修改。 - 2020.10.3 题目链接:https://www.luogu.com.cn/problem/P2962 题目大意: 有 \(n(1 \le n \le 35)\) 盏灯,每盏灯与若干盏灯相连,每盏灯上都有一个开关,如果按下一盏灯上的开关,这盏灯以及 阅读全文
posted @ 2020-09-17 16:38 quanjun 阅读(301) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/P4552 解题思路:设差分数组 \(d[i] = a[i] - a[i-1]\),用 \(sump\) 表示所有 \(\gt 0\) 的 \(d[i]\) 之和;用 \(sumn\) 表示所有 \(\lt 0\) 的 \( 阅读全文
posted @ 2020-09-13 20:35 quanjun 阅读(241) 评论(0) 推荐(0)
摘要:Thonny 是一款比较轻便的Python IDE,内置有Python 3.7,所以下下来直接安装应该就可以使用(这我也是听官网说的,因为我安装前已经安装了Python 3.8.5) 官网地址:https://thonny.org/ 阅读全文
posted @ 2020-09-10 11:54 quanjun 阅读(742) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/P2851 解题思路: 对FJ做多重背包,对商人做完全背包。 这里比较困惑我的是背包的容量。其大小的思路来自 IcproX大佬的分享 首先说一下,\(a\) 上界是 \(v_{max}^2\) 下面给出理由 若知$v_$, 阅读全文
posted @ 2020-09-09 22:38 quanjun 阅读(172) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2639 题目大意:给出一行价值,一行体积,让你在v体积的范围内找出第k大的值.......(注意,不要 和它的第一题混起来,它第一行是价值,再是体积) 思路:首先dp[i][j]代表的是在体积为i的时候第 阅读全文
posted @ 2020-09-09 17:18 quanjun 阅读(109) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/P1757 解题思路: 所谓分组背包,就是将物品分组,每组的物品相互冲突,最多只能选一个物品放进去。 这种题怎么想呢?其实是从「在所有物品中选择一件」变成了「从当前组中选择一件」,于是就对每一组进行一次 0-1 背包就可以了 阅读全文
posted @ 2020-09-09 16:28 quanjun 阅读(267) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/P1507 解题思路:二维费用背包模板题。 示例代码: #include <bits/stdc++.h> using namespace std; const int maxn = 505; int v1, v2, n, f 阅读全文
posted @ 2020-09-09 14:05 quanjun 阅读(118) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/P5662 解题思路: 我们进行 \(t−1\) 轮 完全背包 : 把今天手里的钱当做背包的容量, 把商品今天的价格当成它的消耗, 把商品明天的价格当做它的价值。 示例代码: #include <bits/stdc++.h> 阅读全文
posted @ 2020-09-09 13:37 quanjun 阅读(281) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/P5019 今天复习了一下差分,然后脑袋里面想题,然后就想到了这道《铺设道路》。 然后这个是我之前用 贪心 写的题解:https://www.cnblogs.com/quanjun/p/13137699.html 现在简要讲 阅读全文
posted @ 2020-09-04 22:03 quanjun 阅读(166) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3263 题目大意:有 \(N\) 头牛,最高的是第 \(I\) 头,身高是 \(H\) ,现在有 \(R\) 组相对关系。每组相对关系有两个数 \(A\) 和 \(B\),表示 \(A\) 和 \(B\) 能相互看见,也就是他们中间的牛 阅读全文
posted @ 2020-09-04 21:40 quanjun 阅读(126) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/UVA1625 解题思路: \(s1[1..n],s2[1..m]\) 分别表示两个字符串; \(st1[c]\) 表示字符 \(c\) 在字符串 \(s1\) 中第一次出现的位置; \(ed1[c]\) 表示字符 \(c\ 阅读全文
posted @ 2020-09-04 13:20 quanjun 阅读(232) 评论(0) 推荐(0)
摘要:题目链接:https://codeforces.com/contest/1238/problem/E 题目大意: 给你一个长度为 \(n(n \le 10^5)\) 的字符串s和 \(m(m \le 20)\) ,这个字符串由前 \(m\) 个小写字母组成。 现在你要找一个前 \(m\) 个字符的一 阅读全文
posted @ 2020-09-03 21:03 quanjun 阅读(205) 评论(0) 推荐(0)
摘要:题目描述 聪聪喜欢玩植物大战僵尸,在游戏里有一条水平道路,道路的一端是入口,另一端是房子。僵尸会从道路的入口一端向房子一端移动。这条道路刚好穿过 \(N\) 块连续的空地。初始时,僵尸通过每块空地的时间是 \(T\) 秒。玩家可以在这 \(N\) 个空地中种植植物以攻击经过的僵尸,每块空地中只能种植 阅读全文
posted @ 2020-09-03 20:51 quanjun 阅读(420) 评论(0) 推荐(0)
摘要:题目链接:https://www.luogu.com.cn/problem/P2466 题目大意:略。 解题思路: 首先将 \(n\) 个彩蛋按照 \(x\) 从小到大排序。 然后定义状态 \(f[L][R][s]\),其含义为: 当 \(s=0\) 时:接完了第 \([L,R]\) 范围内的所有彩 阅读全文
posted @ 2020-09-02 20:07 quanjun 阅读(219) 评论(0) 推荐(1)
摘要:国家集训队1999论文集 陈宏:《数据结构的选择与算法效率——从IOI98试题PICTURE谈起》 来煜坤:《把握本质,灵活运用——动态规划的深入探讨》 齐鑫:《搜索方法中的剪枝优化》 邵铮:《数学模型的建立、比较和应用》 石润婷:《隐蔽化、多维化、开放化——论当今信息学竞赛中数学建模的灵活性》 杨 阅读全文
posted @ 2020-09-02 16:54 quanjun 阅读(317) 评论(0) 推荐(0)