[USACO09MAR]Look Up】的更多相关文章

单调栈真的很好用呢! P2947 [USACO09MAR]向右看齐Look Up 题目描述 Farmer John's N (1 <= N <= 100,000) cows, conveniently numbered 1..N, are once again standing in a row. Cow i has height H_i (1 <= H_i <= 1,000,000). Each cow is looking to her left toward those wi…
P2947 [USACO09MAR]仰望Look Up 74通过 122提交 题目提供者洛谷OnlineJudge 标签USACO2009云端 难度普及/提高- 时空限制1s / 128MB 提交  讨论  题解 最新讨论更多讨论 中文翻译应当为向右看齐 题目中文版范围.. 题目描述 Farmer John's N (1 <= N <= 100,000) cows, conveniently numbered 1..N, are once again standing in a row. Co…
P2944 [USACO09MAR]地震损失2Earthquake Damage 2 $P$个点,$C$条双向边.求最少删去几个点使$N$个给定的点与点$1$分开. 显然的最小割. 将点$i$套路地拆成$i_1,i_2$,割点转化成割边 对于点$1$:$link(S,1_1,inf),link(1_1,1_2,inf)$.保证不被割掉,且分到$S$割中 对于每个给定点$k$:$link(k_2,T,inf),link(k_1,k_2,inf)$.保证不被割掉,且分到$T$割中 对于每条双向边$(…
地震破坏 时间限制: 1 Sec  内存限制: 128 MB 题目描述 威斯康星发生了一场地震!约翰的牧场遭到了打击,有一些牛棚变成了废墟,如果一间牛棚遭到 了破坏,那么所有和它相连的道路都不能使用了. 约翰有 N 个牛棚,编号为 1 到 N,有 M 条双向道路连接这些牛棚,第 i 条道路连接的牛棚是 A i 和 B i ,A i 可能等于 B i ,也可能有多条道路连接同一对牛棚. 约翰让奶牛们集中到 1 号牛棚避难.有 P 头奶牛通过手机向约翰求救,她们的遭遇类似:好消 息是她们所在的牛棚没…
经典的贪心模型,常规思路:将M和B排序即可 看到没有人用优先队列,于是我的showtime到了 说下思路: 读入时将数加入啊a,b堆中,不用处理(二叉堆本来就有有序的性质) 读完后逐个判断,照题目模拟即可 总时间复杂度:O(nlogn) 其实就是堆排序的时间复杂度 楼下的那位用了sort还说是O(2n)的,大家不要犯这种低级错误 贴代码: #include<cstdlib> #include<cstdio> #include<cmath> #include<cst…
嘟嘟嘟 这个是一个很明显的dp,遇到这种倍数的问题的,就令dp[i][j]表示选到了第 i 只牛(不是选了 i 只牛),sum(Ri) % f == j 的方案数,则, dp[i][j] = dp[i - 1][j] + dp[i - 1][(j + f - a[i] % f) % f] 等式右边第一项表示第 i 只牛不选,第二项表示第 i 只牛选了,j + f 是为了防止出现负数. 初始化令dp[0][0] = 1,但实际上这个状态应该是0,所以随后答案是dp[n][0] - 1. #incl…
嘟嘟嘟 某谷的翻译挺迷的,简单来说就是给一个初值c,然后有两个函数f1 = a1 * x / d1 + b1, f2 = a2 * x / d2 + b2.把c分别带进去,所得的结果也递归带进去,这样的到一串数,输出第n小的. 这道题如果都带进去,然后在排序肯定行不通,因为这一串数不是递增的,不能确定后面多少有比当前数小的. 那或许会想到,可以用一个优先队列维护最小值,这样就避免排序啦.然而数据是4e6,O(nlogn)够强能过啊. 其实没那么难,完全可以用一个普通队列实现这个功能.首先我们建两…
嘟嘟嘟 太水了,大佬们就绕道吧…… 就是m, b数组分别排个序,然后更改对应位置的m[i]和b[i],就行了. 因为如果m[i]不改为b[i]而是b[i + 1]的话,那么必定要将m[j] (j > i)改为b[i],而这一定比m[i]改为b[i]更劣. #include<cstdio> #include<iostream> #include<cmath> #include<algorithm> #include<cstring> #inc…
嘟嘟嘟 题面说的有点问题,应该是向后看齐. 于是我们维护一个单调递减栈,如果当前a[i]比栈顶元素大,就执行pop操作,然后把pop出来的元素的答案都用 i 更新即可. #include<cstdio> #include<iostream> #include<cmath> #include<algorithm> #include<cstring> #include<cstdlib> #include<cctype> #in…
题目传送门 大概思路就是把这两个数组排序.在扫描一次,判断大小,累加ans. #include<bits/stdc++.h> using namespace std; int x,y,z; ],m[]; long long s; int main(){ cin>>z>>x>>y; ;i<=z;i++) cin>>n[i]>>m[i]; sort(n+,n++z); sort(m+,m++z); ;i<=z;i++){ if…