11 2018 档案

摘要:题目:戳这里 题意:给出n个线段,问被1~n个线段覆盖的点分别有多少。 解题思路: 这题很容易想到排序后维护每个端点被覆盖的线段数,关键是端点值不好处理。比较好的做法是用差分的思想,把闭区间的线段改为前闭后开,同时在求总点数的时候,也按前闭后开的区间来求,这样就巧妙避开了两个端点之间的讨论,只用维护 阅读全文
posted @ 2018-11-21 20:28 euzmin 阅读(315) 评论(0) 推荐(0)
摘要:题目:戳这里 百度之星初赛原题:戳这里 题意:n个不同的数,求中位数为m的区间有多少个。 解题思路: 此题的中位数就是个数为奇数的数组中,小于m的数和大于m的数一样多,个数为偶数的数组中,小于m的数比大于m的数少一。因此,维护比m小和比m大的数就行。 m~n进行处理,比m大的cnt++,比m小的cn 阅读全文
posted @ 2018-11-20 15:29 euzmin 阅读(386) 评论(0) 推荐(0)
摘要:题目:戳这里 题意:从0走到n,难度分别为a1~an,可以在任何地方休息,每次休息难度将重置为a1开始。求总难度的数学期望。 解题思路: 跟这题很像,利用期望的可加性,我们分析每个位置的状态,不管怎么休息位置1的难度永远是a1,因此其期望为a1*2^(n-1),其他点出现a1的话,说明上一个点绝对休 阅读全文
posted @ 2018-11-19 21:01 euzmin 阅读(325) 评论(0) 推荐(0)
摘要:题目:戳这里 题意:要求构成有n个点,m条边的无向图,满足每条边上的两点互质。 解题思路: 显然1~n这n个点能构成边的条数,就是2~n欧拉函数之和(x的欧拉函数值代表小于x且与x互质的数的个数。 因此m>n-1 && m <= sum成立则可以构成无向图。 接着求出1e5以内的欧拉函数,求和可以发 阅读全文
posted @ 2018-11-19 14:00 euzmin 阅读(207) 评论(0) 推荐(0)
摘要:题目:戳这里 题意:n个数代表n个problem,每个数的值代表这个问题的topic,让我们挑出一些problems,满足挑出problems的topic是首项为a1公比为2的等比数列(每种topic只能选一次。问最多能挑出多少个problems。 解题思路:可以看出这道题只和每个topic的数量有 阅读全文
posted @ 2018-11-18 14:26 euzmin 阅读(404) 评论(0) 推荐(0)
摘要:题目:戳这里 题意:给n个数的数组,要求找k个数满足,这k个数在数组中出现的次数最多。 解题思路:k个数每个数出现次数都要最大化,可以想到二分下限,主要是正确的二分不好写。 附ac代码: 1 #include <bits/stdc++.h> 2 typedef long long ll; 3 con 阅读全文
posted @ 2018-11-17 17:15 euzmin 阅读(309) 评论(0) 推荐(0)
摘要:题目:戳这里 题意:机器人走过一个花,可以给那个花浇水,给定步数下,问花的最小的最大能量值。 学习博客:戳这里 本人代码: 1 #include <bits/stdc++.h> 2 typedef long long ll; 3 const int maxn = 1e6+10; 4 const ll 阅读全文
posted @ 2018-11-17 15:55 euzmin 阅读(177) 评论(0) 推荐(0)
摘要:为了图省事我好几次都习惯的用puts输出一些确定答案,比如直接puts("-1"); 每次都wa到心态崩溃才想起来数字不能用puts。。。 阅读全文
posted @ 2018-11-15 18:18 euzmin 阅读(369) 评论(0) 推荐(0)
摘要:题目:戳这里 题意:给定有n个点的一棵树,顶点1为根。m次操作,每次都把以v为根,深度dep以内的子树中所有的顶点(包括v本身)加x。求出最后每个点的值为多少。 解题思路:考虑到每次都只对点及其子树操作,要用dfs。设v当前要操作的点,操作的深度是dep,d[v]表示v的深度。要把深度[d[v],d 阅读全文
posted @ 2018-11-14 22:30 euzmin 阅读(415) 评论(0) 推荐(0)
摘要:离线就是把所有输入读完了以后进行操作。 在线就是边读输入边操作。 阅读全文
posted @ 2018-11-14 17:45 euzmin 阅读(843) 评论(0) 推荐(0)
摘要:题目:戳这里 题意:求出1到所有点的最短路径后,把边减到小于等于k条,问保留哪些边可以使仍存在的最短路径最多。 解题思路:这题就是考求最短路的原理。比如dijkstra,用优先队列优化后存在队列中的前k条边就是答案。因为可以优先队列维护最小值,因此放进队列中的边一定是最短的。借这道题又复习了下dij 阅读全文
posted @ 2018-11-13 22:53 euzmin 阅读(360) 评论(0) 推荐(0)
摘要:题目:戳这里 题意:给一个不下降序列,有n个数。问能否构造一个二叉搜索树,满足父亲和儿子之间的gcd>1. 解题思路:其实这题就是构造个二叉搜索树,只不过多了个条件。主要得了解二叉搜索树的性质,比如一段区间[l,r],这段区间要么是[l-1]的右子树,要么是[r+1]的左子树。(二叉树中左子树都比根 阅读全文
posted @ 2018-11-08 16:32 euzmin 阅读(151) 评论(0) 推荐(0)
摘要:题目:戳这里 题意:选出三个点构成三角形,要求面积为n*m/k。 解题思路:因为三个点的坐标都是正整数,根据三角形面积公式(x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2))/2=n*m/k可知,若三角形存在,则2*n*m/k必为整数。若面积*2为整数,则把该三角形放置在x轴上即可。 阅读全文
posted @ 2018-11-08 14:30 euzmin 阅读(233) 评论(0) 推荐(0)
摘要:题目:戳这里 题意:有n个数,问有多少个区间满足[L,R]内的和小于t。 解题思路: [L,R]内的和小于t等价于sum[R]-sum[L-1]<t,将sum[L-1]左移,可以看出R与L的关系sum[R]<sum[L-1]+t。 因为n个数有正有负,所以前缀和sum[]没法直接二分,需要构造出一个 阅读全文
posted @ 2018-11-06 20:38 euzmin 阅读(219) 评论(0) 推荐(0)
摘要:题目:戳这里 题意:给1e5个字符串,问有多少对字符串组合,满足最多只有一种字符有奇数个。 解题思路:每种情况用map存一下就行了。感觉这题自己的代码思路比较清晰,所以写个题解记录一下 附ac代码: 1 #include <bits/stdc++.h> 2 using namespace std; 阅读全文
posted @ 2018-11-05 17:54 euzmin 阅读(296) 评论(0) 推荐(0)
摘要:题目:戳这里 题意:两个数n,k,满足给的n个数小于2的k次方。每个数可以进行一次操作,即把a[i]换成a[i]^(1<<k-1);求最多的连续区间数使得 区间[L,R] (1<=L<=R<=n),满足: a[L] ^ a[L+1] ^ … ^ a[R-1] ^ a[R] != 0 解题思路: 首先 阅读全文
posted @ 2018-11-05 16:13 euzmin 阅读(225) 评论(0) 推荐(0)
摘要:学习博客:戳这里 本人代码: 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn = 2e5 + 10; 5 const ll mod = 998244353; 6 ve 阅读全文
posted @ 2018-11-04 14:18 euzmin 阅读(169) 评论(0) 推荐(0)
摘要:学习博客:戳这里 附本人代码: 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn = 2e3 + 10; 5 const ll mod = 998244353; 6 c 阅读全文
posted @ 2018-11-04 11:22 euzmin 阅读(177) 评论(0) 推荐(0)
摘要:学习博客:戳这里 附本人代码: 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn = 1e5 + 10; 5 const ll mod = 998244353; 6 s 阅读全文
posted @ 2018-11-03 12:06 euzmin 阅读(409) 评论(0) 推荐(0)