10 2020 档案
摘要:G Caesar Cipher 哈希+线段树 ccpc 威海 题解: 容易发现直接暴力更新即可,因为每次只更新1,所以最多暴力更新10次nlogn,然后询问就转化为哈希即可。 #include <bits/stdc++.h> #define lson (id<<1) #define rson (id
阅读全文
摘要:G. Reducing Delivery Cost 思维+最短路 题目大意: n个点,m条边,q条路经,每条路径有一个起点一个终点,你最多可以选择删掉一条边,问删完之后q条路经距离的最小值之和,距离表示起点到终点的最短距离。 题解: 先预处理任意两个点之间的最短距离,枚举这m条边,查删掉之后的距离,
阅读全文
摘要:Bounding Wall 线段树 + 思维 题目大意: 一张n * m 的图,‘#’ 表示干地,‘.' 表示湿地,可以对图有两种操作: 1 x y 表示改变 (x,y) 这个位置的干湿 2 x y 表示查询 (x,y) 作为围墙的一部分的矩形最大面积是多少? 题解: 首先分析复杂度:T = 20,
阅读全文
摘要:J - Distance ZOJ - 4003 双指针 题解: 对于 a,b两个数组,枚举两个间隔,设一个左指针和一个右指针,求出对于每一个右指针最远的左指针即可。 #include <bits/stdc++.h> using namespace std; typedef long long ll;
阅读全文
摘要:D - Seat Assignment ZOJ - 3997 网络流 题目大意: 电影院一共有m个位置,A_i 表示有 A_i 个人想做位置是 i 的倍数的位置,问最多可以让多少个人坐到他们想做的位置上? 题解: lcm(1,2,...,10)=2520 ,所以每一个
阅读全文
摘要:红蓝图 kruskal重构树+dfs序+线段树合并 题解: 如果不会kruskal重构树,建议先写 D. Graph and Queries 并查集+线段树+kruskal重构树 首先对查询按照 t 从大到小排序,然后按照权值从大到小建一棵kruskal重构树,然后dfs求出每一个节点的dfs序,顺
阅读全文
摘要:H - Traveling Plan 最小生成树+路径的最大值 这个题目太可惜了,想错了一点点,本来是想把0的点都删去,但是想了好久都不知道怎么删,最后看了题解发现可以不用删边,把边的大小变成等效删边的大小即可 题解: 参考题目:lh的简单图论 多源最短路求出每一个点到最近的补给点的距离 $d[i]
阅读全文
摘要:D. Graph and Queries 并查集+线段树+kruskal重构树 题目大意: 给你n个节点,每一个节点有一个权值,m条边,q次查询,有两种查询 1 v 表示查v所在的连通块的最大值 2 x 表示第x这条边删去 题解: 这个类型求连通块的最大值和删边操作的题目可以用kruskal重构树做
阅读全文
摘要:2020牛客国庆集训派对day8 Easy Chess 模拟 or dfs 恶心的签到题,但是如果用dfs写就还算一个正常的题目了 #include <bits/stdc++.h> using namespace std; const int maxn = 100; struct node{ int
阅读全文
摘要:D. Searchlights 枚举+思维 题目大意: 给你n个机器人和m个监控器,你每次可以指挥所有的机器人x+1或者y+1,要求是最后对于每一个机器人,必须满足 ax>cy and bx>dy,也就是对于每一个机器人,他都要在任意一个监控器的右上方。 题解: 先求出每一个机器人横坐标走出去的dx
阅读全文
摘要:D. Returning Home 最短路 题目大意: 你现在位于位置 (sx,sy) ,你家的位置是 (gx,gy) ,你在一个大小 n*n 的网格中行走,在一分钟之内,你可以往相邻的格子走动一格,这里有 m 个特殊的点,如果你走到的点和特殊的点在同一x坐标轴或者y
阅读全文
摘要:Juggling Troupe 打表找规律 题解: 这个居然是一个打表找规律的题目,不可思议,这个规律好难找。。。 规律: 如果第 i 个位置是2,找到左边离它最近的0 设为L,找到右边离它最近的0 设为 R, 那么对于区间 [L,R] ,位置 L+R-i 的数字变成0,其他都是1 又发现每个2是独
阅读全文
摘要:F - Factor-Free Tree 递归 题目大意: 给出某一颗带点权树的中序遍历序列,问是否存在一颗对应的带点权树满足条件:每个节点的子孙节点的权值都和该节点的权值互质。如果存在则输出符合条件的树的每个节点父亲节点。 题解: 这个题目其实还是很简单的,但是不知道为什么出的人这么少,很可能是复
阅读全文
摘要:I - Installing Apps 贪心+01背包 题目大意: 有n种手机软件,每一种软件的安装包大小是d,安装后的软件大小是s(删除了安装包),那么若有c的手机内存,最多能安装多少个手机软件 题解: 贪心,用微调法可以确定贪心的策略,也就是排序的依据。 微调法就是调整前后两个的顺序,来求需要的
阅读全文
摘要:K - Knockout Tournament 递归,暴力求解 题目大意: 这个题目大意有点难说明,还是自己理解的好。 如果n=10,那么就是比赛一定是上面的图的形式。 题解: 先读懂题目大意,找到一个合理的递归方式,然后暴力求每一个可能,往上回传一个vector数组。 思维不大,主要题目要看懂!
阅读全文