洛谷 P4379 [USACO18OPEN]Lemonade Line】的更多相关文章

P4379 [USACO18OPEN]Lemonade Line 题目描述 这是农场上一个炎热的夏日,Farmer John要给他的 NN 头奶牛发柠檬汽水了!所有的 NN 头奶牛(方便起见,编号为 1 \dots N1…N )都喜欢柠檬汽水,只是有些喜欢的程度更高一些.具体地说,奶牛 ii 为了获得柠檬汽水最多愿意排在w_iwi​ 头奶牛之后.现在所有的 NN 头奶牛都在田里,但是只要Farmer John敲响牛铃,这些奶牛就会立刻赶到FJ的柠檬汽水站.她们会在FJ开始分发柠檬汽水之前到达,但…
分数规划是这样一个东西: 给定若干元素,每个元素有两个属性值\(a_i,b_i\),在满足题目要求的某些限制下选择若干元素并求出\(\frac{\sum a}{\sum b}\)的最大值. 如果没有限制的话,肯定是贪心的选. 假设当前选择了一个解\(x_0\),却并不是\(\frac{\sum a}{\sum b}\)的最大值,我们有 \[\frac{\sum a}{\sum b}>x_0\] 进而 \[\sum a-bx_0>0\] 这时候我们要求的东西变成了\(a-bx_0\),每个元素的…
不敢快速排序又想要快排的速度,还不用STL的小伙伴们看这里! 小金羊终于学会了堆排以外的另外的一种排序 (打个题解巩固一下) 归并排序(mergesort): 时间复杂度和快排一样的优秀. 先说归并排序的实现: 首先我们一样的是要进行分解,以达到\(O(logn)\)の时间复杂度. 然后我们需要了解一下它的思想: 如果两个序列的顺序已经排好,于是我们合并两个序列. emmm...由于分解到最后只有一个元素,一定满足性质. 然后合并?玄学?这咋合并? 其实比较简单. 我们取两个指针,分别指向分解的…
题目大意:康托展开和逆康托展开模板题. 题解: 注:20!约为 2e18. 代码如下 #include <bits/stdc++.h> using namespace std; const int maxn=21; typedef long long LL; char s[4]; LL n,q,a[maxn],fac[maxn]; bool vis[maxn]; void prework(){ fac[0]=1; for(int i=1;i<=20;i++)fac[i]=fac[i-1]…
传送门:Problem 4375 参考资料: [1]:https://www.cnblogs.com/Miracevin/p/9662350.html [2]:https://blog.csdn.net/lengxuenong/article/details/80482202?utm_source=blogxgwz1 今天已经理解了一晚上了,还是处于懵懵懂懂的状态,明天在肝一天,一定要将自己理解的题解写出来,哇咔咔,,,,, 题解: 定义数组 a[maxn] 先将含有 N 个元素的数组a离散化,…
传送门:Problem P4378 https://www.cnblogs.com/violet-acmer/p/9833502.html 要回宿舍休息了,题解明天再补吧. 题解: 定义一数组 a[maxn] 考察冒泡排序的本质. 冒泡排序,每次会把最大的数直接沉底,但是比较小的数,会往前面缓慢冒泡. 具体来说,如果一个数 val 在数组有序后的排名是 i ,但是目前位置在 i 之后,那么,每次循环,val 必然会往前面移动一位. 因为前面必然会有一个比 val 大的数往后沉. swap的次数,…
传送门 不难发现,每一条额外修的路径,会对原树上$(u,v)$路径上的所有边产生贡献 于是这就变成了一个路径修改 那么我们把每一条边赋值到它连接的两个点中深度较大的那个上面,然后每一次用树剖+线段树做路径修改,然后再把权值取回来就行了 几个注意点: 1.记得路径修改的时候$LCA$是不需要改的 2.区间修改要打标记,统计答案之前先把标记全都放掉 3.一个小技巧就是把边从2开始存,这样双向边标号就分别是$(2,3),(4,5)...$,于是每一条双向边的标号除以二都是唯一的,就可以唯一的表示出来…
题目 第一问: 用广搜类似用\(floodfill\)的方法. 第二问: 暴力枚举加剪枝,对于每个连通块,枚举跟这个连通块相连的其他与他颜色不同的连通块,然后向外扩展合并颜色与他们俩相同的连通块.扩展合并颜色的时候需要在以每个连通块为节点的图上广搜,每次都将不在当前双色连通块内连通块且颜色和当前双色其一相同的点加入队列.注意在建图的时候,只连接相邻的颜色不同的连通块,然后有每个边只会被扩展一次,因为边一定连接颜色不同的块,如果该边被遍历了,所以其实该边的双色连通块的两个颜色都确定了,也就找过了.…
分数规划 分数规划可以用来处理有关分数即比值的有关问题. 而分数规划一般不单独设题,而是用来和dp,图论,网络流等算法结合在一起. 而基础的做法一般是通过二分. 二分题目我们都知道,需要求什么的最小或最大值,就二分什么. 而该最小或最大值都会满足单调性. 设当前最大值为\(maxn\),如果存在比值使得比\(maxn\)大,则有\(y/x>maxn\),化简得:\(y-x*maxn>0\) 就可以更新答案.所以满足二分性(即\(maxn\)越大则\(y-maxn*x\))越小则越难更新答案.…
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N x N 的方格.输入数据中包括有树的方格的列表.你的任务是计算并输出,在他的农场中,不需要砍树却能够修建的最大正方形牛棚.牛棚的边必须和水平轴或者垂直轴平行. EXAMPLE 考虑下面的方格,它表示农夫约翰的农场,‘.'表示没有树的方格,‘#'表示有树的方格 1 2 3 4 5 6 7 8 1 .…