01 2021 档案
摘要:Fireworks 题目大意: 花费n时间做一个烟花,释放已做好的所有烟花花费m时间,每个烟花是完美的概率为,问在最优策略下成功释放第一个烟花的最小期望时间。 思路: 不妨假设每做完k个烟花后释放一次,这一轮的时间开销为,在一轮中完美烟花的
阅读全文
摘要:Evil Coordinate 题目大意: 给出地雷的坐标和一组行进方向指令,问能否通过改变指令的顺序避开地雷,若能则输出序列。 思路: 如果雷埋在起点或终点,那我们无法躲避。 如果埋在其他的点上,从直观上来说我们有挺多的躲避线路,毕竟雷只有一个,而我们可以在无限大平面上任选四个方向进行移动。考虑模
阅读全文
摘要:P3149 思路: 稍微模拟一下就能发现,每一次的操作其实就是将“第1~第k个位置上的值”的逆序对的贡献清零。 那么我们先对数据离散化后用树状数组求出每个位置上的值能贡献的逆序对,并使用前缀和加速逆序对的区间求值。 值得注意的一点是按照从大到小的顺序去修改树状数组就可以计算出每个位置上的值贡献的逆序
阅读全文
摘要:P2802 思路: 普通的dfs和bfs需要打vis标记,而在这题中标记不好处理,因为可能会遇到先到一个地方加满hp再原路返回的情况。 这里我们用f数组记录(i, j)位置上的最大hp,因为到达一个点(x, y)时的hp较少的话走出来的结果不会比f[x][y]走出来的结果更优,因此我们根据这一性质进
阅读全文
摘要:Let's Play Curling 题目大意: 红队n个冰壶、蓝队m个冰壶,给出所有冰壶的坐标,找到一个位置c使得红队能赢且得分尽可能多,若红队能赢输出最多能得到的分数,若红队不能赢输出Impossible。 思路: 可将题意转化为求任意相邻的两个蓝队冰壶之间最多能有几个红队的冰壶。 通过uppe
阅读全文
摘要:Fight against involution 题目大意: n个人,每人论文字数在区间上,每人成绩为,为字数大于自己的人数,要求在每人成绩不低于自己最优情况能得到的成绩下尽量减少。 思路: 注意对题目中的理
阅读全文
摘要:CF1027D Mouse Hunt 题目大意: n点n边有向图,可能包含自环和重边,现要求以最小花费选取一下点,使得无论从哪一个点出发都会经过所选的任意一个点。 思路: 我们考虑这样一种情况: 1 >2< 3 ^ | 1、2号点形成一个环,3号点指向二号点。 case 1:如果在1、2号点选一个最
阅读全文
摘要:CF1000E We Need More Bosses 题目大意: n点m边无向图,找到两个点s、t,使得s到t必须经过的边最多,求最多的必须经过边数。 思路: 题目关键在于对“必须经过的边”的理解,拿样例1来说 5 5 5 1 2 | 2 3 2 3 1 / \ 4 1 3 1 5 2 | 4 在
阅读全文
摘要:CF1359C Mixing Water 题目大意: 热水温度为h,冷水温度为c,不断以热水、冷水、热水、冷水……的顺序加入桶中,桶中的温度为加入过的水的平均值,问多少次操作后使桶中的温度最接近给定的温度t。 思路: 注意题目条件,可以分成三种情况进行讨论。
阅读全文
摘要:CF402E Strictly Positive Matrix 题目大意: 给出一个矩阵a,满足且,问是否存在k使得为一个严格正矩阵。 若b为严格正矩阵则满足任意的。 思路: 题目满足a中元素都是非负的,结合矩阵乘法的性质可
阅读全文
摘要:题目大意: 见题面 思路: 一道很普通的mcmf,取一个学生的a值或者b值可以用流量来表示,即每个学生有1的流量。题目中我要求输出对与每个学生的被选择情况,我们可以通过遍历学生的正向边或者反向边的流量得出学生的被选择情况。 Code: #include <bits/stdc++.h> using n
阅读全文
摘要:题目大意: 求逆序对的数量。 思路: 主要有两种求逆序对的方法,这里做一个总结。 第一种是归并排序的解法。考虑一个样例 a[i] mid = 4 a[j] 3 4 7 9 1 5 8 10 当时,因为根据分治的思想此时两边各自都是有序的,因此及右边直到$
阅读全文
摘要:CF1462D Add to Neighbour and Remove 题目大意: 给定长度为n的序列a,每次操作可以选择相邻的数合并为一个数,求使得序列中所有元素相同的最少操作数量。 思路: 不难想到我们可以通过前缀和来加速合并的过程。 答案一定有解,即下界为0,上界为序列长度n-1。 那么我们可
阅读全文
摘要:CF1461B Find the Spruce 题目大意: 求指定类型图案的数量。 思路: 一个很巧妙的递推式。 注意从下往上进行递推。 Code: #include <bits/stdc++.h> using namespace std; const int N = 510; int n, m;
阅读全文
摘要:CF1408C Discrete Acceleration 题目大意: 数轴的原点和位置为 的点上各有一个初始速度为1m/s的小车,在原点的小车向右开,在 位置的小车向左开.在位置0到 间有n个旗子,第i个的位置为,当两辆小车中任意一辆经过一个旗子,它的
阅读全文
摘要:CF995C Leaving the Bar 题目大意: 有一堆向量,你可以将一些取反,使后所有向量之和的长度小于,保证有解。 思路: 一个明显的贪心策略就是比较一下对于每一个向量取反与不取反对向量和的贡献哪个更小。 n为1e5却给了2s,题目保证有解暗示你可以乱搞。
阅读全文
摘要:题目大意: n天。第i天上午会进货件商品,中午的时候会有顾客需要购买件商品,可以选择满足顾客的要求,或是无视掉他。 如果要满足顾客的需求,就必须要有足够的库存。问最多能够满足多少个顾客的需求。 思路: 典型的带反悔的贪心。 策略是能满足顾客的需求则满足他,但这样的的局部最优不一定
阅读全文
摘要:P4310 绝世好题 题目大意: 给出一个数列a,求a的子序列b的最长长度,满足。 思路: 很容易联想到求最长上升子序列。 for i in range(1, n + 1): dp[i] = 1 for j in range(1, i): if (a
阅读全文
