题面基本输入输出const readline = require("readline")const IO = readline.createInterface({ input:process.stdin, output:process.stdout});IO.on(" ...
题解 P4910 帕秋莉的手环
题面如果是一条链的话,我们直接搞个转移矩阵,矩阵乘法即可破环为链,并硬点一个端点黄色/绿色,然后讨论一下即可#include <bits/stdc++.h>using namespace std;typedef long long ll;const ll mod = 1000000007 ...
题解 P3818 小A和uim之大逃离 II
题面每个点拆成两个点,使用过跳跃和未使用过bfs即可#include <bits/stdc++.h>using namespace std;int qx[2000010], qy[2000010], qw[2000010], head, tail;int dis[1010][1010][ ...
题解 P5382 [THUPC2019]改善生活
题面 首先让我们证明一个结论:存在一个最优解小Z只引出了一个话题感性理解:我多选了一个相当与把两个答案进行某种意义下的平均,不会变的更优 证明:若$S_1$表示小Z引出话题的集合,我们只要证明向$S_1$中插入集合$S_2$不会变的更优($S1\cap S_2=\emptyset$)(新方案要么不优 ...
题解 P5381 [THUPC2019]不等式
题面 题意给定$\{a_n\}$,$\{b_n\}$求$\sum_{i=1}^k|a_ix+b_i|$ 的最小值$(\forall k\in[1,n])$ 首先根据小学数学知识,我们把它转化为: \sum_{i=0}^k|a_i|*|x+\frac{b_i}{a_i}|考虑实际意义,一条数轴上有$m ...
题解 CF600E Lomsat gelral
题面 luogu(暂时无法查看) 题面 codeforces 一道树上启发式合并首先跑一边dfs,找出父节点和重儿子(不知道的先看树剖) 因为数据范围,只能开一个记录颜色数量的数组。最优的办法是保留重儿子的情况。 然而还有一个问题:数组归零和统计答案每次是$O(n)$的,一共$O(n^2)$。于是我 ...
题解 P1558 色板游戏
题面注意到$T\leq 30$所以可以把存在的颜色集合压成一个int于是可以区间赋值线段树做#include <bits/stdc++.h>using namespace std;int tag[400010], sum[400010];inline void up(int x) ...
题解 P5389 [Cnoi2019]数学课
题面根据$\sum_{i=1}^n i^2 = \frac{n(n+1)(2\times n+1)}{6}$可以把题目所求化为$\frac 12\times (1-\frac{3}{n(n+2)})$#include <bits/stdc++.h>using namespace std; ...
题解 P3347 [ZJOI2015]醉熏熏的幻想乡
题面不得不说,浙江神队选拔赛真是年年毒瘤首先你需要有一点导数的知识,否则可能看不懂第一问很简单,建个图跑个最大流就好了(如果这都不会还敢来肝zjoi???)第二问 有一个很$fAKe$的想法:因为费用不是一次函数,而是二次函数,并且我们观察到$a,b>=0$所以我先想到的是把每个酿酒点的费用 ...
题解 P5025 [SNOI2017]炸弹
题面首先处理出每个炸弹爆炸直接能引爆的炸弹然后用线段树完成区间加边操作然后显然我们会考虑算出每个点能到的叶子节点数然而我们发现并没有很好的算法能完成它 可以发现每个炸弹能直接或间接引爆的炸弹必然是一个区间于是又考虑搞出这个区间的左右端点 然后就是常规操作: tarjan缩点 拓扑序dp(我用记 ...