分类:题解

话说我题目难度的数据该更新了,这个bug信息先鳖管它 UPD2019.4.12:更新完毕不得不说洛谷评测机真的慢,loj和jxoj都跑过了,在洛谷我硬是试了半天才过。JXOJ比你们洛谷不知道高到哪里去了我做法跟大部分题解一样,其实是看了题解我才会做的。还是应用连续异或的性质,直接存异或的前缀和 $s[i]$ ,求区间 $\left[ l,r \right]$ 的异或即为:$$\bigoplu...
这道题做法还是比较容易想到的,就是码量有点大。不严格次小生成树的思路就是先得到最小生成树,然后枚举每一条不在树里的边,找到所构成的环上权值最大的边替换掉。而这道题要求严格次小,那么权值最大的边就不能与枚举的边权值相同,如果相同就替换环上次大的边即可。我还是敲了树剖,对于最大和次大边我用pair来存,可能是STL的缘故不开O2只有90。在合并(线段树合并和lca两侧合并)时对最大和次大的处理如...
题解 图论-最小生成树 数据结构-树链剖分
省选/NOI-
题意给一棵有 $n$ 个节点的树,然后再连 $m$ 条不重合的附加边,可以删除一条树边和一条附加边,问有多少种删除方法可以使树断裂。题解显然,每次加一条边以后树上一定会形成环,这个环任意断附加边就可以形成树,而树上任意断一条边就可以使树断裂。但是有可能会形成很多有重叠部分的环,这样按照上述方法不一定可以让树断裂。所以我们可以对每一条树边 $i$ 记录包含它的环的个数 $f[i]$ ,然后进行...
题解 数据结构-树链剖分 图论-LCA
这似乎是个很经典的题,但因为我很菜所以现在才做。显然,一个 $\le 10^{5}$ 的数最多经过 $6$ 次开方就一定可以变成 $1$ ,所以我们可以用线段树对每次询问进行单点修改,如果区间最大值 $\le 1$ 就不需要进行修改了。这样最多每个数修改 $6$ 次,查询直接区间查询,总时间复杂度是 $O(n\times \log n + 6n)$ 。struct Tree{ ll ...
题解 数据结构-线段树
提高+/省选-
肝总结肝的我肝疼。10026.电路维修把题意转化一下,可以把每个端点看成节点,有导线相连的对角线就连一条边权为0的边,不相连的对角线就连一条边权为1的边。然后用最短路什么的做就行了。看题解里面说最短路比较慢,再加上本来就该练习广搜,我就写了双向广搜。struct Edge{ int next,to,w,from; } edge[1000005]; int n,m,t,cnt,head...
题解 算法-搜索 题目-一本通
众所周知,人类的本质是鸽子。10018.数的划分水题。 int ans,n,k; void dfs(int num,int sum,int now) { if (now==k) { if (sum==n) ans++; return; } int mx=n-sum-k+now+1; for (int i=num;i&l...
题解 算法-搜索 题目-一本通
读题读了十多分钟才读懂,辣鸡ybt翻译。需要注意的关于题意的点:移动和点击都要算作次数最后还要打印*换行符每个方向直接移动到最近的不同的点,如果没有就不移动做法就是基础的bfs,不过需要预处理一下每个点向四个方向移动的下一个点,直接暴力做即可。剪枝是如果当前在打印文本的位置 $>$ 之前搜索过的同一个点位置就退出。#include<bits/stdc++.h> #defin...
题解 算法-搜索
省选/NOI-
题解这题数据范围极小,所以直接考虑暴搜。首先预处理一下两个块是否要满足先后关系,如果有就连一条边。判断的标准是纵坐标相等,而且横坐标上有相交的区域。还要对每个块按照纵坐标为第一关键字,横坐标为第二关键字排序,这样可以保证对于上下颜色相等时,可以先涂完上面再继续涂下面而不会漏解。然后进行dfs,每次搜索枚举要涂的颜色,然后把能够涂色的块都涂了。需要注意的是当前颜色和上次涂的颜色不能相等,否则没...
题解 算法-搜索
提高+/省选-
做完了ybt上的那道埃及分数,以为这道题只需要改一下就能过,结果断断续续折腾了一天多,我还是太菜了。这道题与ybt那道主要区别就是多组数据+给定不能用的数。多组数据容易搞定,但处理不能用的数就把我坑惨了。我最开始是直接拿bool数组来记录,然后次次本机AC,提交RE,调试发现是越界了。虽然答案不会很大,但由于是从小到大枚举,最开始最后一个就会很大而越界。然后我就用了个数组,排序后用来判断,然...
题解
提高+/省选-
我们假设在 $AB$ 段走到 $M$ 点,然后走到 $CD$ 段的 $N$ 点,那么可以得到时间为$$T= \dfrac {AM}{P} + \dfrac {MN}{R} + \dfrac {ND}{Q}$$很显然我们的目标就是找到合适的 $M$ 和 $N$ 让时间最小。对于 $M$ ,如果我们知道 $k= \dfrac {AM}{AB}$ ,那么就可以确定 $M$ 的坐标为$$M(A_x+...
题解 算法-二分/三分
提高+/省选-
10011.愤怒的牛二分答案,然后贪心进行验证,即只要达到了枚举的距离能放就放,如果最后能放下就验证成功。int n,m,ans,s[100005]; inline bool check(int x) { int now=1; for (int i=1;i<m;i++) { int j=now+1; while (s[now]+...
题解 算法-二分/三分 题目-一本通
洛谷博客: https://www.luogu.org/blog/llf/solution-uva1205贪心策略和其他题解一样,选取最大的点和它的父节点合并。只是我看其它题解每次找最大都是 $O(n)$ 把全部扫一遍,就想到用优先队列来优化。不过问题也是显然的,每次合并我们都会删除当前点并改变父节点的值,但之前父节点肯定也已经放进了队列,而优先队列显然不能满足直接修改的条件。但仔细一想,每...
题解 算法-贪心
省选/NOI-
徐妈让我们做一本通的题,说是巩固基础。但说实话这里面的题又烂又水,就连第一章11道题就有双倍经验我也是无语的。这一章完成时间:两天(其实就是一个晚自习1h+两个中午40min),而且还包括颓废时间10000.活动安排贪心区间覆盖经典模型。按照右端点排序,然后依次判断能不能放即可。struct Edge{ int s,f; } edge[1005]; int n,ans; inlin...
题解 算法-贪心 题目-一本通
首先预处理一下两个单词 $s[i],s[j]$ 是否安全并记录在 $can[i][j]$ 中,用 $f[i]$ 代表包含第 $i$ 个单词的安全组有多少个。枚举每一个小于当前单词的单词,如果他们俩安全,那么当前单词和 枚举单词所在的安全组成员 在一起也一定是安全的,所以加上答案即可。$$f[j]= \begin{cases} f[j] \\ f[j]+f[i] , can[i][j] \&a...
题解 动态规划
提高+/省选-
关于这次比赛这次比赛本来想全用原创题的,但是@Terrasse大佬的题还没有验题和数据(现在有了,下次考),@Ofnoname大佬的题考察范围很多人应该都没学,我的另一道题太过码农和毒瘤,所以在徐妈的建议下就找了洛谷2279 消防局的设立作为T3。背景使用的是以正在连载的新番辉夜大小姐想让我告白~天才们的恋爱头脑战~中人气角色藤原千花为主人公的故事。墙裂推荐大家去看这部番!书记太可爱了aws...
题解 比赛-JX Round
标签
其它-Firefox1 其它-pbds1 其它-pjax1 其它-Ubuntu1 其它-VSCode1 其它-网易云音乐1 动态规划52 动态规划-区间DP9 动态规划-单调队列优化DP5 动态规划-图上DP1 动态规划-斜率优化DP5 动态规划-树形DP16 动态规划-状压DP16 动态规划-线性DP10 动态规划-背包DP3 图论4 图论-LCA4 图论-Tarjan11 图论-二分图1 图论-割点3 图论-基环树1 图论-差分约束4 图论-强连通分量2 图论-最小环1 图论-最小生成树6 图论-最短/最长路19 图论-树上差分2 图论-树的直径4 图论-桥1 图论-缩点5 图论-负环4 字符串3 字符串-kmp2 思维题3 数学26 数学-bsgs2 数学-exgcd4 数学-gcd2 数学-中国剩余定理2 数学-卡特兰数1 数学-卢卡斯定理4 数学-快速幂4 数学-扩展中国剩余定理1 数学-扩展卢卡斯定理3 数学-矩阵5 数学-约数1 数学-组合数3 数学-质数1 数据结构-动态开点线段树1 数据结构-单调栈1 数据结构-单调队列2 数据结构-可持久化字典树2 数据结构-堆4 数据结构-字典树2 数据结构-并查集2 数据结构-栈1 数据结构-树状数组6 数据结构-树链剖分10 数据结构-线段树5 数据结构-队列1 比赛-Codeforces21 比赛-JX Round1 比赛-NOIp/CSP5 算法-KM算法1 算法-二分/三分12 算法-位运算1 算法-倍增4 算法-分块2 算法-分治3 算法-哈希2 算法-多叉树转二叉树2 算法-差分4 算法-悬线法1 算法-拓扑排序2 算法-排序3 算法-搜索21 算法-模拟5 算法-状态压缩4 算法-贪心10 算法-高精度3 问题-逆序对2 题目-一本通5 题目-网络流24题2