洛谷题目传送门 CF题目传送门 对于这题,我无力吐槽. 虽然式子还是不难想,做法也随便口胡,但是一些鬼畜边界情况就是判不对. 首先显然二分答案. 对于每一个雨滴,它出现的时刻我们的绳子必须落在它上面.把绳子的上下端点用二元组\((a,b)\)表示,因为三个点\((a,0)(x_i,y_i)(b,h)\)共线,我们可以推出 \[(b-a,h)×(x_i-a,y_i)=0\\(h-y_i)a+y_ib-x_ih=0\] 这说明了\(a,b\)的关系,必须落在一条直线上!它在\((0,0)(0,w)(…
洛谷题目传送门 费了几个小时杠掉此题,如果不是那水水的数据的话,跟列队的难度真的是有得一比... 话说蒟蒻仔细翻了所有的题解,发现巨佬写的都是倍增,复杂度是\(O(n\log n\log nw)\)的,貌似还不够优秀. 其实我们与其对于每一个点都通过倍增向上找到对应位置,还不如直接从上到下dfs一遍,判断:如果当前点子树内初始位置最浅的军队与当前点距离不超过\(mid\),或者所有子树都被封锁,那么当前点也被封锁. 这样以后再二分,时间复杂度降至\(O(n\log nw)\).其它部分的思路Da…
题面 传送门 题解 看出这是个闵可夫斯基和了然而我当初因为见到这词汇是在\(shadowice\)巨巨的\(Ynoi\)题解里所以压根没敢学-- 首先您需要知道这个 首先如果有一个向量\(w\)使得\(w+b=a\),也就是使\(A,B\)的凸包有交,有\(w=a-b\),那么我们把\(B\)的横坐标和纵坐标全部取反之后,\(w\)就必定在\(A\)和\(-B\)的闵可夫斯基和里 那么只要对\(A,-B\)求一个闵可夫斯基和的凸包就行了,然后判一下输入的向量是否在这个凸包里就行了 //minam…
正解:贪心+倍增+二分答案 解题报告: 正好想做noip的题目然后又想落实学长之前讲的题?于是就找上了这题 其实之前做过,70,然后实在细节太多太复杂就不了了之,现在再看一遍感觉又一脸懵了... 从标签就可以发现是个很麻烦考虑的点很多的问题,所以分开按步骤梳理我觉得应该会好些qwq 帕1,贪心 首先最最基本的思想要想到趴?就是贪心,就是,如果我不能跑到首都,我肯定是尽量往上跑;然后如果能跑到首都就先跑到首都再想怎么分配 帕2,倍增 已经发现是要往上提了,自然考虑倍增,于是写个函数预处理掉倍增这事…
[题目链接] [思路]: 根据题意可以明显看出,当所有任务都完成时的时间是最终的结果,也就是说本题要求,求出最小的最大值. 那这样的话就暗示了将答案二分,进行check. [check方法]: 如果说当前答案为ans,每个任务设为p[i],所花费的时间是p[i].tim,所有任务p[i].tim的最大值为maxdis 那么则将符合条件p[i].tim>=ans的数量num求出来,这个数量也就是符合条件的路径的数量(一个任务在u,v之间有一个简单路径很容易理解), 然后找到一个所有路径中他们的公共…
目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 题面 题目链接 P1948 [USACO08JAN]电话线Telephone Lines 题目描述 Farmer John wants to set up a telephone line at his farm. Unfortunately, the phone company is uncooperative, so he needs to pay for some of…
题目链接:https://www.luogu.com.cn/problem/P1462 题目大意: 有 \(n\) 个点 \(m\) 条边,每个点有一个点权,每个边有一个边权.求所有长度不超过 \(b\) 的路径中的点权最大值的最小值. 解题思路: 二分答案 \(D\)(即点权最小值),每次求最短路查看有没有所有点权都 \(\le D\) 的最短路径长度 \(\le b\). 实现代码如下: #include <bits/stdc++.h> using namespace std; const…
题目: 洛谷 3242 分析: 明确题意:在一棵树上给定若干权值为 \(w\) 的路径 \((u,v)\) (盘子),每次给定 \((a,b)\) (水果),询问所有满足 \((u,v)\) 被 \((a,b)\) 完全覆盖的路径中第 \(k\) 小的路径的权值. 先考虑如何快速判断 \((u,v)\) 是不是 \((a,b)\) 的子路径.第一反应是充要条件是 \(a\) 和 \(b\) 分别在 \(u\) 和 \(v\) 的子树中(设 \(\mathrm{dfn}_p\) 是 \(p\) 在…
题目大意:给定一个长度为 N 的序列,定义两个数 \(a[i],a[j]\) 相互看得见,意味着 \(\forall k\in [i+1,j-1],a[k]\le a[i],a[k]\le a[j]\),求序列中共有多少对数可以看得见. 题解:将序列得每一个值面向左边排序,从左到右扫每一个数,为了避免重复计数,每一个数作为最右边的数进行统计答案贡献,即:在单调栈中二分大于当前值得最小值,算入答案贡献即可. 代码如下 #include <bits/stdc++.h> using namespac…
题意 题目链接 Sol 解题的关键是看到题目里的提示... 设\(f[i]\)表示到第\(i\)天所持有软妹币的最大数量,显然答案为\(max_{i = 1}^n f[i]\) 转移为\(f_i = max(f_{i - 1}, A_i \frac{f_j R_j}{A_j R_j + B_j} + B_i \frac{f_j}{A_j R_j + B_j})\) 变形一下: \[\frac{f_i}{B_i} - \frac{f_j}{A_j R_j + B_j} = \frac{A_i}{B…