03 2019 档案

摘要:额,说实话,还是第一次这样用并查集 本质就是记录连通项的个数。如果,轰炸一个城市,产生一个或者不产生,则说明,该城市对其他城市的连接没有直接作用。 那么怎么来数每次的连通项呢?没错!有多少个祖先就有多少个连通项。其实,就是每次都要把边连接起来,当然,被轰炸的城市所在的边用该丢弃! 阅读全文
posted @ 2019-03-27 17:00 青山新雨 阅读(912) 评论(0) 推荐(0) 编辑
摘要:就是一个最小根堆。 最小根堆的性质,根节点小于等于子树的完全二叉树吧。 构建最小根堆的过程就是一个自下向上的过程。 阅读全文
posted @ 2019-03-26 22:33 青山新雨 阅读(1116) 评论(0) 推荐(1) 编辑
摘要:直接模拟: 阅读全文
posted @ 2019-03-25 18:18 青山新雨 阅读(325) 评论(0) 推荐(0) 编辑
摘要:直接从后面向前面找就可以了。 阅读全文
posted @ 2019-03-25 18:16 青山新雨 阅读(245) 评论(0) 推荐(0) 编辑
摘要:落谷训练场: 普及练习场 第一题:铺地毯 第二题:多项式的输出: 阅读全文
posted @ 2019-03-25 18:14 青山新雨 阅读(269) 评论(0) 推荐(0) 编辑
摘要:树的遍历: 关键在与如何利用中序和后序建树。 中序的作用,提供了左右子树的所有节点的分布! 前序,后序的作用:就是第一个元素(最后一个元素)提供了根节点,让中序找到子树的分布情况。 玩转二叉树: 这里的改变只是在建树的时候,把原本左子树放在实际的右子树上,原本的右子树放在左子树上。 阅读全文
posted @ 2019-03-22 22:10 青山新雨 阅读(513) 评论(0) 推荐(0) 编辑
摘要:这里唯一需要注意的是,各个输出的条件在题目中有点描述模糊。 是朋友关系,(不管是不是间接朋友关系) 既不是朋友也不是敌人(这里不用管是不是间接朋友) 是敌人关系,同时是间接朋友关系 是单纯的敌人关系,(表示,不是间接朋友关系) 阅读全文
posted @ 2019-03-22 21:47 青山新雨 阅读(238) 评论(0) 推荐(0) 编辑
摘要:#include #include #include #include using namespace std; const int maxn = 2e5 + 1000; char s[maxn], str[maxn]; int len1, len2, p[maxn], ans; void init(){ str[0] = '#'; str[1] = '#'; for (... 阅读全文
posted @ 2019-03-22 20:44 青山新雨 阅读(319) 评论(0) 推荐(0) 编辑
摘要:#include #include #include using namespace std; const int maxn = 100; int af[maxn], in[maxn], n; struct node{ int l, r; }tree[maxn]; int biuld(int al, int ar, int bl, int br){ if (al > ar)re... 阅读全文
posted @ 2019-03-22 20:08 青山新雨 阅读(103) 评论(0) 推荐(0) 编辑
摘要:这个题要注意的是:右节点时大于等于根节点的。 阅读全文
posted @ 2019-03-18 19:35 青山新雨 阅读(188) 评论(0) 推荐(0) 编辑
摘要:#include #include #include #include using namespace std; const int maxn = 1e5+10; struct node{ int key, pre, next; }nn[maxn],mm[maxn]; struct kk{ int val, next; }mk[maxn]; mapss; int st, n, ... 阅读全文
posted @ 2019-03-18 17:32 青山新雨 阅读(737) 评论(0) 推荐(0) 编辑
摘要:题意:略 具体规律自己看一下 也就是这样的 1 2 3 4 1 2 3 1 2 4 1 2 3 1 2 4 1 2 3.。。。。 然后,自己去写就是了 阅读全文
posted @ 2019-03-11 21:49 青山新雨 阅读(271) 评论(0) 推荐(0) 编辑
摘要:思路:首先处理名字,让字符串直接映射唯一一个数字,这就用map<string, int>即可。 然后,直接用并查集 阅读全文
posted @ 2019-03-08 21:39 青山新雨 阅读(301) 评论(0) 推荐(0) 编辑
摘要:就是模板题: 阅读全文
posted @ 2019-03-08 20:25 青山新雨 阅读(213) 评论(0) 推荐(0) 编辑
摘要:题意:就是让c=a*x+b,给你一个a[],b[],让你尽可能多的让c[]=0,输出有多少。 思路:直接令c=0,则x=-b/a, 也就是一条直线,通过这样就用hash值使相同的k值映射到一起,使用了map<long double , int>,这样就直接映射了。 让我吐血的是,这个还有特殊情况,a 阅读全文
posted @ 2019-03-08 19:28 青山新雨 阅读(327) 评论(0) 推荐(0) 编辑
摘要:这是一道树状数组题 阅读全文
posted @ 2019-03-02 17:05 青山新雨 阅读(325) 评论(0) 推荐(0) 编辑
摘要:思路:先说一下题意吧。就是给你n个文件大小为v,价值为c, 但是硬盘的大小为S, 而且要存的总价值大于等于p。问每次传输k大小的文件。问k的最大值是多少? 我们以k为二分对象。 直接讲检验函数吧。 假设每次传输x大小的文件,则我们可以要筛选出小于等于的文件。这些文件就像01背包问题中要装的物品一样, 阅读全文
posted @ 2019-03-02 16:20 青山新雨 阅读(286) 评论(0) 推荐(0) 编辑
摘要:思路: 我觉得我现在有一个非常不好的习惯,那就是不爱画图。当我把这个题的检验函数用图来表示出来。感觉就非常好理解了。 直接说检验函数吧。就是非常简单的模拟,我现在换成角度来说:假设你最小能跳x(不能跳小于x的步)那么,在这个过程中统计直接飞过去的石头的个数。 这样是不是很简单就可以统计出来sum。而 阅读全文
posted @ 2019-03-02 14:43 青山新雨 阅读(173) 评论(0) 推荐(0) 编辑
摘要:这道题是直尺法的模板题: 阅读全文
posted @ 2019-03-02 13:25 青山新雨 阅读(215) 评论(0) 推荐(0) 编辑
摘要:思路:检验函数中,先初始化每个节点的下标,每调用检验函数就从新使用一次并查集(并查集的时间复杂度非常低),然后,就看当一条路的价值val<=假设最大值x时,就把他们连接起来。 阅读全文
posted @ 2019-03-02 10:41 青山新雨 阅读(231) 评论(0) 推荐(0) 编辑
摘要:思路:先来分析一下数据范围,是1e4个数据,但是,是double类型,结果不超过0.01那么在绳子最大的情况下,单纯的找正确答案暴力的话就是1e7的时间复杂度,再乘上1e4的数据,这样肯定不行。那么很容易想到二分,在找答案时使用二分的话就可以让时间复杂度下降到log(1e7)这是一个比较小的值,起码 阅读全文
posted @ 2019-03-02 09:54 青山新雨 阅读(618) 评论(0) 推荐(0) 编辑
摘要:思路:都在注解里 阅读全文
posted @ 2019-03-01 23:21 青山新雨 阅读(392) 评论(0) 推荐(0) 编辑
摘要:这道题让我见识了二分的新姿势。本来,我是二分的位置的。 思路:直接二分答案x, 关键是检验函数的写法: 先用前缀和 a[i....], 看满足多少段满足 a[ j ]-a[ i ]<=x; 的注意这里利用了贪心(因为,要使最大值最小,那么每一段要尽量接近x),然后,如果这样的段数刚好等于m 段时,就 阅读全文
posted @ 2019-03-01 22:46 青山新雨 阅读(503) 评论(0) 推荐(0) 编辑
摘要:思路:就是一个模板,只是找最小化而已。在判断函数里面:当湿度<=x*A不判断, 反之sum+=(a[i]-x*A)/B+(a[i]-x*A)%B?1:0; 阅读全文
posted @ 2019-03-01 22:01 青山新雨 阅读(413) 评论(0) 推荐(0) 编辑
摘要:思路: 求这个根,然后有一个关键的条件|x1-x2|>=1,然后就是从-100,枚举到+100,每次二分(i, i+1)注意如果f(i)*f(i+1)>0则不进行二分,如果,你觉得这样的值不行的话就把每次 i++ 变成 i+=0.5;就好了。反正数据范围很小.. 阅读全文
posted @ 2019-03-01 21:00 青山新雨 阅读(449) 评论(0) 推荐(0) 编辑

more_horiz
keyboard_arrow_up light_mode palette
选择主题
点击右上角即可分享
微信分享提示