摘要: 这题挺好的吧~ 先处理出不能走的点,然后再跑最短路的时候去判断就行。 对于不能走的点: 先建反图跑最短路,给不能走到终点的点打上标记,然后和这些点相连的点也打上标记。 // Author: levil #include<bits/stdc++.h> using namespace std; type 阅读全文
posted @ 2020-09-14 22:16 levill 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 一开始想的是枚举k,然后用前缀和找最小的前k个。 但是这样其实是不对的,因为后面加入的数应该和原来的数都重新排序再找最小的k个。 那么,这里就是个小顶堆了。 但是这时显然枚举k,然后小顶堆检查复杂度不够。 观察可以发现,k是满足二分性质的。k越大花费就会越小。(证明略~显而易见) 那么就可以二分,然 阅读全文
posted @ 2020-09-14 19:00 levill 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 逆元: 对于$ax \equiv 1 (mod ~m)$这样的同余方程。 将x称为a的逆元,满足乘以a即可为乘以a的逆元x。 逆元的求解: 对单个逆元有三种求法: 1:费马小定理:快速幂求解。 2:欧拉定理:x = a^(phi(m)-1) 可以发现,就是费马小定理的扩展。 3:扩展欧几里得。 对于 阅读全文
posted @ 2020-09-14 09:01 levill 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 好题! 第一眼就感觉是dp。 设dp[i][j]表示到第i个位置上面-下面为j的最小步数。 可以发现,这里由于上面-下面可能是负的。 那么单纯去dp显然不行。 这里就用到了一个思想,零点转移。 因为差距最多在5,6000左右,我们设6000为0点,那么-T就变成了6000-T。 然后就可以去dp了, 阅读全文
posted @ 2020-09-14 07:51 levill 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 这题做出来了很有成就感(骄傲.jpg) 虽然这题没评级,但我感觉应该有紫题难度吧? Solution: 数据很小,然后题目里说了要横纵分解区域。 所以可以从这里出发,dfs分解区域。 具体怎么分解:可以发现,如果在这个地方分解开当前区域,那么必须满足两边断电后都能满足。 如果可以,那么再去看是否能分 阅读全文
posted @ 2020-09-14 07:09 levill 阅读(204) 评论(0) 推荐(0) 编辑