Lost Cows(BIT poj2182)】的更多相关文章

Lost Cows Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10609   Accepted: 6797 Description N (2 <= N <= 8,000) cows have unique brands in the range 1..N. In a spectacular display of poor judgment, they visited the neighborhood 'wateri…
[POJ2182]Lost Cows 题面 vjudge 题解 从后往前做 每扫到一个点\(i\)以及比前面小的有\(a[i]\)个数 就是查询当前的第\(a[i]+1\)小 然后查询完将这个数删掉 两个操作可以用平衡树实现 但是我比较懒用了\(01trie\) 据说暴力也可以过 代码 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include &l…
POJ2182 Lost Cows 题解 描述 有\(N\)(\(2 <= N <= 8,000\))头母牛,每头母牛有自己的独一无二编号(\(1..N\)). 现在\(N\)头母牛站成一列,已知每头母牛前面编号比它小的母牛数量,求每头母牛的编号. 输入格式 第1行 : 一个整数 \(N\) 第2..N行 : 从 第2头母牛到第N头母牛 的 前面编号比它小的母牛数量 样例输入 5 1 2 1 0 样例输出 2 4 5 3 1 题解 先手造一组数据 2 1 5 4 3 // 编号序列 设比第\(…
线段树 Description N (2 <= N <= 8,000) cows have unique brands in the range 1..N. In a spectacular display of poor judgment, they visited the neighborhood 'watering hole' and drank a few too many beers before dinner. When it was time to line up for the…
Lost Cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10354 Accepted: 6631 Description N (2 <= N <= 8,000) cows have unique brands in the range 1..N. In a spectacular display of poor judgment, they visited the neighborhood 'watering h…
题意 Language:Default Lost Cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13448 Accepted: 8559 Description N (2 <= N <= 8,000) cows have unique brands in the range 1..N. In a spectacular display of poor judgment, they visited the neig…
题目链接:http://poj.org/problem?id=2182 题意:给定1~n个数和n个位置,已知ai表示第i个位置前有ai个数比当前位置的数小,求这个排列. 和刚才YY的题意蛮接近的,用树状数组维护当前数组内数字分别是第几大的,倒着查询,每次查尽可能靠右的位置,可以保证取的数字是未取到并且不会冲突. #include <cstdio> #include <cstring> #include <iostream> #include <cstdlib>…
从后往前查第一个为0的奶牛肯定应该排在第一个.每次从后往前找到第一个为0的数,这个数应该插在第j位.查找之后,修改节点的值为极大值,当整棵树的最小值不为0的时候查找结束. 至于这种查找修改的操作,再没有比线段树效率更高的了. #include<stdio.h> #include<string.h> #include<stdlib.h> #define N 8005 #define M 16100 struct node { int x,y; int min; int f…
题中给出了第 i 头牛前面有多少比它矮,如果正着分析比较难找到规律.因此,采用倒着分析的方法(最后一头牛的rank可以直接得出),对于第 i 头牛来说,它的rank值为没有被占用的rank集合中的第A[i]+1大数.所以,采用树状数组维护0-1序列(表示是否被占用)的前缀和,每次再用二分得出第K大数的下标即可. 代码如下: #include <cstdio> #include <algorithm> #include <iostream> using namespace…
题面 Poj 题解 不难发现最后一位就是\(pre[n]+1\),然后消除这个位置对其他位置的贡献,从左到右扫一遍,必定有至少一个位置可以得出,循环这个过程,\(O(n^2)\)出解. #include <cmath> #include <cstdio> #include <cstring> #include <algorithm> using std::min; using std::max; using std::swap; using std::sor…