10 2020 档案
摘要:(以下省去向量符号) 性质:设H是ABC的垂心O是外心,则有OH=OA+OB+OC 证明: 设OD=OB+OC,则OD//AH,有AH=xOD=xOB+xOC 那么OH=OA+AH=OA+xOB+xOC 同理可得OH=OB+BH=yOA+OB+yOC=OC+CH=zOA+zOB+OC 对比得x=y=
阅读全文
摘要:题目描述 题解 虽然不会做,但是感觉3500还是高了 首先在博弈问题中,如果一个状态的sg=i,那么一定存在一条从该状态出发的长度为i的链 设f[i,j]表示以i结尾,最后差为j的sg,则显然sg不超过√2maxc 所以直接dp存sg,设f[i,j]表示以i结尾,sg为j的最大差,显然随着差的不断减
阅读全文
摘要:题目大意 给出一棵树,每条边边权为0/1,支持动态翻转边权,求每次操作后的最长和为偶数的链长 n<=5e5,5s 题解 lkyyds 还剩40min时胡乱思考,rush了3k然后假了 后来dyp点了一下发现最长链的两个端点一定有至少一个是直径端点 证明:如果直径的操作次数为偶数那么直接选直径,否则考
阅读全文
摘要:题目大意 有n个人,第i个人有一个ai,表示其第[k(2ai)+1,k(2ai)+ai]天在 每天可以给至多一个人发一枚奖牌,求所有人都发了只少K枚奖牌的最小时间 n<=18,K,ai<=1e5 题解 如果能想到hall定理的话就没了 一个人拆成K个点,二分答案,暴力加边,hall定理判断,要预处理
阅读全文
摘要:题目大意 有n个点集,第i个点集的大小为ai,所有点互不相同,一条边连接两个点集中的某一对点,求以点集为单位的生成树个数同时满足每个点只被连最多一次 2<=n<=2e5 题解 直接爬 考虑prufer序上计数,一个度数为x的数的出现次数为x-1,数i的度数为j的方案为A(ai,j) \(\prod_
阅读全文
摘要:题目大意 一棵树上有m个人,每个人有出现时间、速度以及起点终点,到达终点时会瞬间消失,求最早两人相遇的时间 n,m<=1e5 题解 树剖变成若干线段求交,按照时间排序后set维护即可,相交的两个只可能相邻所以只用考虑相邻两个的 注意考虑k相等的情况 code #include <bits/stdc+
阅读全文
摘要:题目大意 题解 矩乘线段树 code #include <bits/stdc++.h> #define fo(a,b,c) for (a=b; a<=c; a++) #define fd(a,b,c) for (a=b; a>=c; a--) #define add(a,b) a=((a)+(b))
阅读全文
摘要:题目大意 n个数,AB交替取走其中一个(取完后位置不变),取的数要和上一个人取得位置相邻,A第一次取或剩下没有相邻的则可以任意取 求当AB都最大化其所取的数之和时的最终结果 n<=3e5,ai<=1e3 题解 不会 当n为偶数时A只会取第一个或者最后一个,然后AB交替取,否则如果取中间的话会分成奇偶
阅读全文
摘要:题目描述 题解 《暴力》 597 考虑如何匹配一个子序列,每次在S串找到最近的T串的下一位匹配 那么设f[s,t]表示已经匹配了s,剩下还能匹配的是t,有前导0 比如[101,0011]可以转移到[1101,001]、[0101,0]、[101,空] 具体可以记f[i,j]表示二进制位为j,在第j位
阅读全文
摘要:题目描述 题解 最水的E题没有之一 枚举最终点,显然可以转化成若干个数,每次把两个数各-1,不能减到负数 那么如果最大数大于剩下的就无解,否则一定有解,具体每次把最大和次大拿出来-1,如果次次大>=2那么仍合法,如果为1且减的两个都为1,那么根据每次-2的原则即总和为偶数还存在另一个1,所以也合法
阅读全文
摘要:题目大意 n堆石子,AB两个人分别从两头开始取,每次取1~个数个,不能操作者输 n,t<=100 题解 好题 首先AB两人每次要么取一个,要么全部取完 题解并没有详细说明,这里感性证一下 如果某一方对应的那堆石子大于其余的之和,那么其必胜,否则他会弃掉这堆去抢后面的 但是如果直接弃掉的话可能会输,所
阅读全文
摘要:体验极差 被A卡了1h+6WA,B玩着玩着搞出来了,发现C是水题结果没时间写了 A - atcoder < S 看反了以为修改的是目标串 简单分类讨论,先判掉0的情况,那么答案一定>=1,即存在一个位置使得前面都相等并且不同的位要更小 不可能是第一位,如果是第二位并且不是a的话那么交换12位,否则在
阅读全文
摘要:题目大意 题解 好题 设0的个数为z,一个显然的结论是答案上界为z/2 以第z/2个0为分界划开,左边的称为L右边的称为R,那么L中右侧和R中左侧的0个数>=z/2 可以发现这样转化之后一个点只需要考虑在其所在集合的连边,即L集考虑向左的边R集考虑向右的边 因为总数<=z/2而任意一边的0个数>=z
阅读全文
摘要:题目描述 https://loj.ac/problem/3058 单位根反演 因为ω太难写了所以用w代替 有 证明: 当n|k时显然是1,否则 题解 一开始想矩乘存多项式然后快速幂循环卷积,然后多乘了一
阅读全文
摘要:题目大意 题解 神仙题 直接在原序列上不好搞,考虑按照值顺序考虑,设直接加的为一类数,求和加进去的为二类数 有一个牛比结论:中存在恰好一个二类数(i从0开始) 先假设这个是对的,当前已知第i段的数为x,考虑求第ki+t段的x',初始段为0目标段为(n
阅读全文
摘要:题目大意 初始集合里有一个奇数x,每次可以把集合的两个数相加/异或并把结果丢到集合里,构造方案使得有1 操作的数∈[0,5e18] 题解 好玩的题 如果搞出了y=2^k满足y>x,那么可以把x不断*2后和y消,每次往前吞一位,最后可以得到y/2 在y<x时要先消掉x前面的二进制1,如此往复可以得到1
阅读全文
摘要:题目描述 题解 首先有一个显然的重要结论:一个数减k后只会影响到最后log k位 所以先把异或和求出来,问题变成给出一些集合,在里面选择一些数异或起来求方案 这样的组数很少,因为只和最后log k位以
阅读全文
摘要:题目描述 题解 止步于此 把边从小到大排序依次加入,维护f[i,j]表示在当前连通块i中有j个团的方案 团只考虑当前加入的边,加入一条边后先把两个块卷积合并(如果不同的话) 然后考虑新增的团,如果当前连通块不是一个团,那么如果要加就只能加一部分,即剩下一些边不加 由于当前边是连通块中最大的,所以不能
阅读全文
摘要:题目描述 https://loj.ac/problem/539 题解 显然是跑到没油了才加油,所以设f[i,j]表示从点i开始钱为j的最大距离,逆着做 转移考虑设g[i,j,k]表示从i到j走2^k步的答案,倍增求 再求出w[i,j,k]表示从i到j走k步的答案,拆位后做log次 最后二分答案 co
阅读全文
摘要:题目描述 https://loj.ac/problem/541 题解 一直在往数据随机的方向想 把<=A中的删除操作看成元素的话,那么就是求一个队列里的最小值,单调队列维护 >A的部分再维护一个未选的最小值,选了之后就和上面一样了,最后再取min code #include <bits/stdc++
阅读全文
摘要:题目描述 https://loj.ac/problem/538 题解 可以感受到增长速度很快,并且很快会同符号 所以推个几百项之后即可直接判断,要注意特殊情况0和边界 code #include <bits/stdc++.h> #define fo(a,b,c) for (a=b; a<=c; a+
阅读全文