随笔分类 -  思维

摘要:题目链接 题解思路:题目给了一棵n个节点的数和q次询问,每次询问是询问[L,R]区间内有多少个连通块。由于是一棵树,连通块的数量=节点数-边数,在明白这点以后就可以开始思考了,节点数很简单,就等于R-L+1,那么最重要的就是求边数。由于q有2e5次询问,因此每次算边数必须在log一下的时间内计算。这 阅读全文
posted @ 2020-05-15 14:18 Mmasker 阅读(201) 评论(0) 推荐(0)
摘要:题目链接 题解思路:对于完全图而言,图中每一个点都可以直接到达其他点,题目中又已说明每个完全图中边的权值一样,因此我们可以对每个完全图加一个“超级原点”,最后跑两遍 dijkstra 即可。 #include<bits/stdc++.h> using namespace std; typedef l 阅读全文
posted @ 2019-11-01 13:10 Mmasker 阅读(109) 评论(0) 推荐(0)
摘要:题目链接 题解思路:首先最最重要的就是要注意到1e7这个数很暧昧,它非常小,因此两个整数的平方和 <= 1e7 的情况是十分有限的,我们可以先预处理1——1e7 = 另外两个数平方和 的情况,之后在m次询问中枚举这些情况即可。经过程序计算,1——>1e7内可以由另外两个数的平方和构成的最多的是“59 阅读全文
posted @ 2019-10-18 16:24 Mmasker 阅读(374) 评论(0) 推荐(0)
摘要:题目链接 题解思路:把每两个点的对称中心用map记录下来,最后的答案就是n减去成为中心对称的点的最多次数。 #include<bits/stdc++.h> using namespace std; #define maxn 1005 #define ll long long typedef pair 阅读全文
posted @ 2019-09-10 16:07 Mmasker 阅读(103) 评论(0) 推荐(0)
摘要:看了好多篇别人写的题解,感觉好像不少用unordered_map的都有点错误,于是自己来写一篇。 题目链接 #include<bits/stdc++.h> using namespace std; #define maxn 300005 #define ll long long const int 阅读全文
posted @ 2019-09-10 15:40 Mmasker 阅读(106) 评论(0) 推荐(0)
摘要:本题解借鉴了某大佬的博客,由于那篇博客里有点小错误,因此我这里重写一篇,希望大家在看到我的博客的同时也关注一下那位大佬。 大佬博客地址 题目链接 题解思路:很显然,要使奥特曼受到的伤害最小,肯定要先杀死一只怪兽,所以我们就分类讨论先杀A还是先杀B。 //不少人可能会说比较一下A,B的攻击力,先杀攻击 阅读全文
posted @ 2019-09-10 10:52 Mmasker 阅读(375) 评论(0) 推荐(0)