随笔分类 -  题解

摘要:【题意】 给出一个$n(n using namespace std; const int MAXN=100+10; const int MAXM=10000+10; int n,m; int fa[MAXN]; int maxn,ans=0x3f3f3f3f; struct Node { int u 阅读全文
posted @ 2019-07-02 20:40 hulean 阅读(199) 评论(0) 推荐(0)
摘要:【题意】 平面上有$n(n using namespace std; const int MAXN=1000+10; const int MAXM=MAXN MAXN; int n,q,T,ans=0x3f3f3f3f; int s[10][MAXN]; int c[10]; struct Node 阅读全文
posted @ 2019-07-02 20:40 hulean 阅读(243) 评论(0) 推荐(0)
摘要:图论 tarjan缩点+最短路 的一道题 tarjan求强连通分量(为以后缩点打下良好的基础) (如果不会tarjan的请点击 "这儿" ) 所以... 在所有有酒馆的节点中选一个最大值输出就好了 cpp for(int i=1;i using namespace std; const int MA 阅读全文
posted @ 2019-07-02 12:47 hulean 阅读(284) 评论(1) 推荐(1)
摘要:看见很多dalao写了什么双向BFS,蒟蒻表示不会写啊。 怎么办办? 先来分析一下题目,一眼看去就是一个搜索题,考虑DFS与BFS。 先放一份DFS的代码: cpp include using namespace std; bool a[5][5],b[5][5]; char c; int dx[5 阅读全文
posted @ 2019-06-20 09:30 hulean 阅读(414) 评论(0) 推荐(0)
摘要:一开始竟然妄想用$n^2$的算法过这题,然而这是不可能的 所以只好写归并排序来求逆序対惹 比如将下面两个区间排序 首先将右区间的$1$取出,放到$r_k$中,此时 1 是比每个$a_i$中的元素都小,也就是说此时$i$的指针指向$a_1$的位置,此刻得到的逆序对的数量为$4$;$r_k$= 1; 以 阅读全文
posted @ 2019-05-30 22:02 hulean 阅读(409) 评论(0) 推荐(0)
摘要:二分+DFS 看到这么多大佬写了并查集,BFS的,还没有人写DFS版的,那么肯定是要来水水积分的啦~~毕竟这可是道伪紫题呢~~! 做法楼上楼下也讲得很清楚了吧,详见代码的注释 cpp include using namespace std; bool taofen_boys[510][510];// 阅读全文
posted @ 2019-05-21 21:48 hulean 阅读(304) 评论(0) 推荐(0)
摘要:看还没有人发记搜的题解,赶紧来~~水~~发一篇 我们定义 为区间 内最少添加几个括号才能把这个串变成正规括号序列。 考虑四种情况 1. 不存在这种子串,返回 2. 子串长度为 无论是 都是要消耗1的,返回 3. 那么返回的是DP(i+1,j 1) 4. 其他情况,枚举断点,详见代码 至于输出嘛... 阅读全文
posted @ 2019-05-21 21:47 hulean 阅读(313) 评论(0) 推荐(0)
摘要:并查集大难题。 看了题解之后才有思路,调了很久很久才AC,当然要写一篇题解来纪念一下。 先来分析一下这些指令的特点,很容易发现对于每个M指令,只可能一次移动整个队列,并且是把两个队列首尾相接合并成一个队列,不会出现把一个队列分开的情况,因此,我们必须要找到一个可以一次操作合并两个队列的方法。 再来看 阅读全文
posted @ 2019-05-08 21:45 hulean 阅读(360) 评论(0) 推荐(0)
摘要:搜索 传参 开始搜索 初始参数 完整代码: cpp include using namespace std; int n,c; int w[60],m[60]; int tot,ans=0x3f3f3f3f; inline int read() { int tot=0; char c=getchar 阅读全文
posted @ 2019-05-08 11:01 hulean 阅读(240) 评论(0) 推荐(0)
摘要:树形DP的一道较为基础的模板题 状态 转移 初始 答案 完整代码: cpp include using namespace std; const int N=6000+10; int n,m; int r[N]; bool v[N]; vectorson[N]; int dp[N][2]; inli 阅读全文
posted @ 2019-05-07 21:52 hulean 阅读(216) 评论(0) 推荐(0)
摘要:动态规划 状态 初始 转移 答案 完整代码: cpp include using namespace std; const int MAXN=10000+10; const int MAXM=500+10; int n,m; int d[MAXN]; int dp[MAXN][MAXM]; inli 阅读全文
posted @ 2019-05-07 12:19 hulean 阅读(211) 评论(0) 推荐(0)
摘要:详细解析解题过程 设计状态 初始数组 cpp for(int i=0;i using namespace std; typedef long long ll; int n,m; ll a[30],b[30]; ll dp[30][250]; inline int read() { int tot=0 阅读全文
posted @ 2019-05-07 09:33 hulean 阅读(249) 评论(0) 推荐(0)
摘要:$n 特别地,第1个位置的树与第n个位置的树相邻。 这个~~好像~~没有考虑过 所以要把位置为1的特殊处理 那么答案就应该是这个: 完整代码: cpp include using namespace std; const int MAXN=100000+10; int n; int a[MAXN], 阅读全文
posted @ 2019-05-06 13:06 hulean 阅读(251) 评论(0) 推荐(0)
摘要:状态: 转移 判断 计算面积 $S=\sqrt{p (p a) (p b) (p c)}$ $p$为半周长:$(a+b+c)/2$ 献上完整代码: cpp include using namespace std; int n,c; int l[50]; int wood[4]; bool dp[80 阅读全文
posted @ 2019-05-06 11:23 hulean 阅读(336) 评论(0) 推荐(0)
摘要:一道很好的二维前缀和模板题。 什么是二维前缀和? 从这张图可以看出前缀和的求法: 这道题的代码: cpp include using namespace std; const int MAXN=5000+10; int n,r; int Map[MAXN][MAXN];//数组开的下 inline 阅读全文
posted @ 2019-05-05 15:45 hulean 阅读(301) 评论(0) 推荐(1)
摘要:很好的一道数学推导题 45分做法 $O(N^4)$ 暴力枚举四个材料 55分做法 从第一个约束条件可得到所有可行答案都是单调递增的,所以可以排序一遍,减少枚举量,可以拿到55分 100分做法 首先可以发现每个x都小于n,而n最大值只是15000,所以可以开一个桶来存每个魔法值出现的次数 回忆一下3个 阅读全文
posted @ 2019-05-04 14:23 hulean 阅读(468) 评论(0) 推荐(0)
摘要:看到这题,一下就想到了爆搜。(不过这题输入也是够坑的) 单纯的搜索肯定是会超时的,所以这里需要考虑一些剪枝。 我们令 为在第i行j列时,方向为k的最小镜子数,若当时的镜子数已大于或等于此记录,那么就不必要更新了 否则往该点的四个方向进行更新: 方向相同 没必要放镜子了 方向相反 不存在这种可能,忽略 阅读全文
posted @ 2019-05-02 08:20 hulean 阅读(263) 评论(0) 推荐(0)
摘要:状态: : 1. 到达第i行时, 2. 到达第j列时, 3. 刷到第k次时, 4. 这一格有没有刷对 转移 1. 换一块木板时肯定要多刷一次 2. 当前格子与上一个格子颜色相同时 3. 当前格子与上一个格子颜色不相同时 代码: cpp include using namespace std; int 阅读全文
posted @ 2019-05-01 13:11 hulean 阅读(252) 评论(0) 推荐(0)
摘要:"比赛" 题目还是~~比较简单~~的,T3 T4都没要求输出步骤 T1 [CF6C]Alice, Bob and Chocolate "题目传送门" 一开始看到这题总想写个多线程,但肯定是行不通的。(比赛时还写得十分复杂,不过竟然可以过诶)不能同时执行两个人,那么就交替着执行。 注意:处理好两个人在 阅读全文
posted @ 2019-05-01 10:18 hulean 阅读(270) 评论(0) 推荐(0)
摘要:本题算法:贪心+排序+搜索+并查集+图论 输入中的t可以不用管,毕竟这只是特殊情况的标志 题目中虽然没有很明确地说明这是一棵树,但是题目中说有n个点,但是只有n 1条边,想用这n 1条边把整个图连通起来,那么只有可能是棵树。(不信可以自己画画看) 竟然是一棵树了,那么就可以用找到每个节点唯一的父亲、 阅读全文
posted @ 2019-05-01 10:17 hulean 阅读(176) 评论(0) 推荐(0)