随笔分类 - OI
博主是大学生了 已经不学了
摘要:如果要输出 x 位的变量 output . cout << fixed << setprecision(x) << output << endl; setprecision头文件是 <iomanip> .
阅读全文
摘要:P2607 [ZJOI2008] 骑士 思路 显然抽象成图, 由每个骑士向他最讨厌的骑士 每个节点对应一条边, 即 \(n\) 个节点, \(n\) 条边, 并且没有说任意两点相联通, 所以是基环森林. 那么很容易就能想到基环树形dp 状态 显然对于每个节点有两种选择 选( \(1\) ) 不选(
阅读全文
摘要:原题 思路 经典的区间dp. 显然 \(dp[i][j]\) 表示将字符串的 \([i, j]\) 区间变合法的最少操作数. \(i, j\) 没有配对时有: \(dp[i][j] = \mathop{min\{dp[i][k] + dp[k + 1][j]\}}\limits_{i \leq k
阅读全文
摘要:原题 思路 简单的区间 dp , 显然 \(dp[i][j]\) 表示从 \(i\) 一直聚合到 \(j\) . 再枚举断点 \(k(1\leq k < j)\) , 考虑合并 \(dp[i][k]\) 和 \(dp[k + 1][j]\) , 显然最终答案里包含 \(dp[i][k] + dp[k
阅读全文
摘要:比赛链接 排名 (见证历史) A P8344 「Wdoi-6」走在夜晚的莲台野 显然有解要满足 \(x \leq z\) 否则无解. 再考虑最多有多少个银色木板能被放入: 显然我们一定要先放银色, 再放金色(否则先放的金色会被浪费, 没有利用). 于是我们可以贪心地每次都放满银色, 再预留一个位置给
阅读全文
摘要:原题链接: loj #10173 思路 注意到 \(1 \leq n \leq 100, 1 \leq m \leq 10\) ,并且对于每个格子都有放和不放两种选择, 所以断言是状压dp. 而状压dp需要一点位运算知识, 详见 状压dp常用位运算 状态 首先显然第一维是行数( \(n\) 很小,
阅读全文
摘要:n & (1 << i) 这句话的意思是二进制中, 取出 \(n\) 的第 \(i + 1\) 位. 比如 \(n = 14\) , \(i = 3\) , 那么因为 \((14)_2 = (1110)_2\) ,所以结果是 \((1000)_2 = (8)_{10}\) x & y 取出 \(x\
阅读全文
摘要:A. Lucky? 没什么好说的, 直接模拟即可. #include <bits/stdc++.h> using namespace std; inline int read() { int x = 0; char c = getchar(); bool f = 1; while(c < '0' |
阅读全文
摘要:在本题中, 我使用 \(m\) 来代替题目原文中的 \(k\) , 需要注意. 方法 看到 \(1 \leq n \leq 9\) 和每个格子都只有两个状态(放或不放)第一时间想到状压dp. 案例 由于样例的方案数有点多, 所以考虑一个更简单的情况: 在 \(3 \times 3\) 格子中放 \(
阅读全文
摘要:定义 树的直径: 树中最长的简单路径. 状态 由于本片讲述的是树形dp方法, 故需要设计状态. 我们令dp[u][0]表示以 \(u\) 为根的子树中最长的简单路径的长度, dp[u][0] 以 \(u\) 为根的子树中次长的简单路径的长度. 那么, 最终答案 \(length = \mathop{
阅读全文
摘要:原题传送门 题意 由于有 \(n\) 个交通路口, \(n - 1\) 条街道, 所以我们可以断定, 这是一颗树. 又由于让我们求出这棵树的最长路径, 很简单就能想到树形dp (貌似两遍 dfs 更简单?) 简化一下: 给定一棵树, 求出他的 所有 直径. (注意"所有", 这是题目的难点.) 案例
阅读全文
摘要:引入 首先我们来看一张表: 单点修改 区间修改 单点查询 传统数组 ? 区间查询 ? ? 当我们使用普通的数组时,如果我们要对一个元素进行修改,时间复杂度为 \(O(1)\) ,如果我们要进行区间查询,时间复杂度则为 \(O(n)\) ,我们知道,一个算法的时间复杂度是由瓶颈(时间复杂度最高的那一项
阅读全文

浙公网安备 33010602011771号