10 2020 档案
摘要:题目 在一片草原上有 个兔子窝,每个窝里住着一只兔子,有M条路径连接这些窝。更特殊地是,至多只有一个兔子窝有3条或更多的路径与它相连,其它的兔子窝只有1条或2条路径与其相连。换句话讲,这些兔子窝之前的路径构成一张 个点、 条边的无向连通图,而度数大于2的点至多有1个
阅读全文
摘要:题目大意 有 个数 ,他准备将他们依次插入一个双端队列(每次可以在头或尾插入一个元素),最后将 整个队列从尾到头看成一个序列,求出最长上升子序列的长度 。他想知道 , 的最大值是多少。 分析 很简单,考虑一个数,构造有它的最长上升子序列 把比他小的放他前面,比
阅读全文
摘要:题目大意 有一个长度为 的序列 。他希望从中选出不超过 个连续子段,满足它们两两不相交,求总和的最大值(可以一段也不选,答案为 )。 分析 很容易想到 的 设 表示选到第 位,已选了 \
阅读全文
摘要:题目 分析 考虑 的过程 我们选边从高位开始 当前位为 的放一边,为 的放另一边 将 的建一棵字典树, 的匹配 因为是异或,那就走相同值的位,算能匹配到的最小值的个数 和与方案数都可以在这里计算 #include<cstdio
阅读全文
摘要:题目 为了加快社会主义现代化,建设新农村,农夫约(Farmer Jo)决定给农庄做一些防火措施,保障自己、猫、奶牛的生命安全。 农夫约的农庄里有N+1 座建筑,排成了一排,编号为0~N。对于0 ⇐i < N,建筑i 有w[i]头奶牛居住,与建筑i+1 距离为d[i]。建筑N 已装有消防栓,现在,农夫
阅读全文
摘要:题目 为了加快社会主义现代化,建设新农村,农夫约(Farmer Jo)决定给农庄里每座建筑都连上互联网,方便未来随时随地网购农药。 他的农庄很大,有N 座建筑,但地理位置偏僻,网络信号很差。 一座建筑有网,当且仅当满足以下至少一个条件: 1、给中国移动交宽带费,直接连网,花费为A。 2、向另外一座有
阅读全文
摘要:题目 如题 分析 第一问很简单, 即可(得先排序) 第二问很经典,最小路径覆盖问题,最大流解决 #include<cstdio> #include<iostream> #include<algorithm> #include<queue>
阅读全文
摘要:题目链接 分析 又是变形了的最短路 我们可以考虑哪些道路必须被保留 然后枚举两个起点到终点重复的道路 考虑公合法用这些道路就可以了 #include<cstdio> #include<queue> #include<cstring> #include<
阅读全文
摘要:题目 百度 分析 很容易想到二分答案 然后考虑判定 条件很多,奇奇怪怪 那就上网络流吧 边权 两个城市连边 源点与所有城市连边,边权为本城市有金矿量 城市与自己的仓库连边,边权为本城市仓库容量 仓库与汇点两边 #includ
阅读全文
摘要:题目 网上大把 分析 显然不能简单直接最短路 城市被攻占的特点是:保护的城市都被攻占了 那么这个城市被攻占的最早时间必然是所有保护他的城市中最大的被攻占时间 于是我们可以 设 表示军队走到城市 驻扎于城外的最短时间 表示所有保护他的城市中最大的被攻占时间 最短
阅读全文
摘要:题目链接 Haywire 分析 模拟退火裸题,交了 次 #include<cstdio> #include<algorithm> #include<cmath> using namespace std; int n , a[15][5] , pos[15] , tmp[15
阅读全文
摘要:题目 请前往 [JSOI2004]平衡点 分析 随机算法 为何不模拟退火呢? 于是(其实目前我不懂怎么判断平不平衡) 能量越小系统越平衡 #include<cstdio> #include<algorithm> #include<cmath> using namespace std
阅读全文
摘要:题目 分析 很神奇的贪心 #include<cstdio> #include<algorithm> using namespace std; typedef long long LL; const int N = 100005; int n , T , cnt1 , cnt2; L
阅读全文
摘要:题面 其中 分析 考虑每次移动,发现负数对答案贡献少 ,非负数多 每次移动都加了 负数变非负数关键点在于 把所有值映射到数轴上,每次加一相当于原点向左移一位 讨论移位后负数数量的变化即可 首位则特别处理 我们只
阅读全文
摘要:题目 略 分析 又是一个显然的树形依赖背包 然而可以 依靠 序来 #include<iostream> #include<cstdio> #include<cstring> using namespace std; const in
阅读全文
摘要:题目 分析 很神奇的事情又发生了!! 很容易想到设 表示考虑前 个区间,已选 个区间且必选第 时能覆盖到的最多苹果数 转移 很显然了 然后,就没了····· 什么?!! 实际上测试数据给的答案是不能不用凳子的!!! 于是悲
阅读全文
摘要:题目大意 给定 个度数为 之间的点,求能组成多少种简单无向图(可不连通,点与点之间有别) 分析 显然答案只与 有关 那么 ?(我也不知道为什么) 设 表示当前状态的图用了 个点,目前其度数为
阅读全文
摘要:题面 分析 注意读题 然后显然字符串哈希 #include<cstdio> #include<cstring> using namespace std; typedef long long LL; const int N = 1e5 + 5; const LL P = 1e9 +
阅读全文
摘要:题面 各大 都有 分析 从结果入手:所有被敌方军团占领的城市都是分开的 而按最小代价删去若干条边,则剩下的图必然是若干个联通子图组成的 那么我们要使花费最小,可以是留下的边最大 并查集合并两个敌方军团和不大于一集合即可 #include<cstdio> #includ
阅读全文
摘要:题面 分析 的话设 表示第 列填的两个是否相同 那么接下来是很繁琐的转移 直接看代码吧 #include<cstdio> #include<iostream> using namespace std; typedef long
阅读全文
摘要:题面 分析 状压 直接上啊! 设 表示 这个时刻之前能钓到的最多的鱼的数量 那么当前为可以钓鱼也可以移动 于是一切都明朗了 #include<cstdio> #include<iostream> #include<cstri
阅读全文
摘要:模板 求 个模式串在文本串中出现的次数 #include<cstdio> #include<cstring> using namespace std; const int N = 2e5
阅读全文
摘要:模板 找出哪些模式串在文本串 中出现的次数最多。 #include<cstdio> #include<iostream> #include<cstring> using namespac
阅读全文