11 2019 档案
摘要:每日一题 day52 打卡 Analysis 这道题直接搜索会TLE到**,但我们发现有很多没有用的状态可以删去,比如 1,1,5; 1,5,1; 5,1,1; 所以很容易想到一个优化:按不下降的顺序枚举划分出来的每个数。 然而还是会TLE... 再来想一个事情:n=7,k=4 已经枚举了 1,2,
阅读全文
摘要:每日一题 day51 打卡 Analysis 这道题是用非常恶心的三分套三分做的,有一个技巧是不要枚举坐标,枚举两条线段构成三角形的相似比就好了。 了解思路就还挺好写的(尽管我还调了三天) 1 #include<iostream> 2 #include<cstdio> 3 #include<cstr
阅读全文
摘要:每日一题 day50 打卡 Analysis 用初中学的相似推一波式子,再用三分一搞就好了。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #define int long lo
阅读全文
摘要:每日一题 day49 打卡 Analysis 用dis数组记录每两个点之间的时间,再用一个传递闭包来维护最小的时间就好了 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #incl
阅读全文
摘要:每日一题 day48 打卡 Analysis 二分答案,判断序列的平均值是否大于等于mid 具体怎么实现呢? 将序列减去mid,再用前缀和来维护平均值就好了 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<
阅读全文
摘要:每日一题 day47 打卡 Analysis 首先,最终每个小朋友的糖果数量可以计算出来,等于糖果总数除以n,用ave表示。 假设标号为i的小朋友开始有Ai颗糖果,Xi表示第i个小朋友给了第i-1个小朋友Xi颗糖果,如果Xi<0,说明第i-1个小朋友给了第i个小朋友Xi颗糖果,X1表示第一个小朋友给
阅读全文
摘要:每日一题 day46 打卡 Analysis 首先通过题目我们不难发现,为了得到最优解,那么就不能把时间浪费在路上,也就是说不能走回头路。然后很容易可以发现,在每个时刻在不同的鱼塘钓到的鱼的数量是不同的,为了保证钓到最多的鱼,那么我们每次钓都要选当前可以钓到鱼数量最多的鱼塘,钓完之后就更新这个鱼塘的
阅读全文
摘要:每日一题 day45 打卡 Analysis 这道题跟LOJ P10004 一样,但是数据范围不同,不允许O(n²) 的贪心算法通过。 我们可以加一个limit 来判断这个截止期限已经不行了,所以以后出现截止期限<=limit的就不行了。 LOJ上数据很水,这一个小优化就可以通过此题。 1 #inc
阅读全文
摘要:每日一题 day44 打卡 Analysis 首先有一个结论:先找 p1=(a,b),p2=(c,d) 的LCA的深度,在与(a,c),(a,d),(b,c),(b,d)中最深的LCA n的深度比较,如果 n <=p1 & n<=p2 说明两条路径相交(即满足题目要求)。 假设 (b,c) 是最深的
阅读全文
摘要:每日一题 day43 打卡 Analysis 因为数据规模,所以我们需要对其进行离散化,新创一个数组a里面来放在我们的初始序列中在这个位置上的数是第几大的这里还要用一个小技巧排序,关于离散化的技巧我们具体在代码里面看 离散化之后我们只对a数组进行操作就好了,每次遇到一个数就把他插到树状数组里面去 双
阅读全文
摘要:每日一题 day41 打卡 Analysis 分层图最短路模板 各层内部正常连边,各层之间从上到下连权值为0的边。每向下跑一层,就相当于免费搭一次飞机。跑一遍从s到t+n*k的最短路即可。 三倍经验 洛谷 P4822 [BJWC2012]冻结,洛谷 P1948 [USACO08JAN]电话线Tele
阅读全文
摘要:每日一题 day40 打卡 Analysis 因为两个序列都是1~n 的全排列,那么两个序列元素互异且相同,也就是说只是位置不同罢了,那么我们通过一个book数组将A序列的数字在B序列中的位置表示出来 因为最长公共子序列是按位向后比对的,所以a序列每个元素在b序列中的位置如果递增,就说明b中的这个数
阅读全文
摘要:每日一题 day39 打卡 Analysis 1.当正向思考受阻时,逆向思维可能有奇效。 2.问题转化为:找到最小的d,使去掉所有权值>d的边之后,连通支的个数<k; 3.定理:如果去掉所有权值>d的边之后,最小生成树被分割为k个连通支,则图也被分为k个连通支。 1 #include<iostrea
阅读全文
摘要:KMP模板,就不解释了 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<queue> 6 #define int long long 7 #define maxn
阅读全文
摘要:每日一题 day38 打卡 Analysis 这道题运用的是三分,就是说具有一定的单调性,找最大最小值,然后和二分基本类似,就是说特性就是说当前两个点比较,较优的点和最优点在相对了较差点的同侧,就是说那边差就把范围定到那里去 注意:要注意精度问题,一般定到1e-9或1e-11 1 #include<
阅读全文
摘要:每日一题 day37 打卡 Analysis 经典的带限期和罚款的单位时间任务调度问题 将 val 从大到小排序,优先处理罚款多的,将任务尽量安排在期限之前,并且靠后,如果找不到,则放在最后面 1 #include<iostream> 2 #include<cstdio> 3 #include<cs
阅读全文
摘要:每日一题 day36 打卡 Analysis 非常水的二分模板,就直接二分答案,用贪心策略check就好了 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #define int
阅读全文
摘要:每日一题 day35 打卡 Analysis 先将不符合条件的区间去掉(即半径小于W,不然宽度无法符合),将符合条件的按区间存入节点中。区间的左边界是x-sqrt(r*r-W*W/4.0),要计算x轴的最小长度,而不是x-r。然后将区间按照左边界从小到大排序,依次找到能够覆盖L点的最大右端点。 1
阅读全文
摘要:每日一题 day34 打卡 Analysis 这道题的正解本来是树形dp,但要设5个状态,太麻烦了。于是我就用贪心试图做出此题,没想到还真做出来了。 考虑当前深度最大的叶子结点,你肯定要有一个消防局去覆盖它, 那么既然他是叶子结点,所以与他距离小于等于2的节点有这么 他的父亲 2. 他的兄弟 3.
阅读全文
摘要:每日一题 day33 打卡 Analysis 这道题太难♂了,居然才是蓝的。 每个位子和每种字符都是独立的,对每种字符都记录一下位子。 用f[i]=0 or 1 表示长度为ii的后缀可不可以,0表示可以,1表示不行。 考虑f只有0和1,可以用bitset优化,对每种字符都开一个bitset记录是不是
阅读全文
摘要:每日一题 day32 打卡 Analysis 我们可以想一下,对于每一秒除了被切的哪一个所有的蚯蚓都增长Q米,我们来维护3个队列,队列1表示最开始的蚯蚓,队列2表示每一次被切的蚯蚓被分开的较长的那一部分,队列3表示每一次被切的蚯蚓被分开的较短的那一部分。 我们先把原序列排序,因为不管怎么切,先被切的
阅读全文
摘要:每日一题 day31 打卡 Analysis 题目问的是满足 ax mod b = 1 的最小正整数 x。(a,b是正整数) 但是不能暴力枚举 x,会超时。 把问题转化一下。观察 ax mod b = 1,它的实质是 ax + by = 1:这里 y 是我们新引入的某个整数,并且似乎是个负数才对。这
阅读全文