【POJ2182】Lost Cows

题面

vjudge

题解

从后往前做

每扫到一个点\(i\)以及比前面小的有\(a[i]\)个数

就是查询当前的第\(a[i]+1\)小

然后查询完将这个数删掉

两个操作可以用平衡树实现

但是我比较懒用了\(01trie\)

据说暴力也可以过

代码

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std; inline int gi() {
register int data = 0, w = 1;
register char ch = 0;
while (ch != '-' && (ch > '9' || ch < '0')) ch = getchar();
if (ch == '-') w = -1 , ch = getchar();
while (ch >= '0' && ch <= '9') data = data * 10 + (ch ^ 48), ch = getchar();
return w * data;
}
const int MAX_N = 80005;
struct Trie { int ch[2], size; } t[MAX_N * 18]; int tot;
void insert(int v) {
int o = 1; t[o].size++;
for (int i = 17; i >= 0; i--) {
int c = v >> i & 1;
if (!t[o].ch[c]) t[o].ch[c] = ++tot;
t[o = t[o].ch[c]].size++;
}
}
void erase(int v) {
int o = 1; t[o].size--;
for (int i = 17; i >= 0; i--) {
int c = v >> i & 1;
t[o = t[o].ch[c]].size--;
}
}
int Kth(int k) {
int o = 1, res = 0;
for (int i = 17; i >= 0; i--) {
int sz = t[t[o].ch[0]].size;
if (k <= sz) o = t[o].ch[0];
else k -= sz, res |= 1 << i, o = t[o].ch[1];
}
return res;
}
int N, a[MAX_N], ans[MAX_N];
int main () {
N = gi(); for (int i = 1; i < N; i++) a[i + 1] = gi(); ++tot;
for (int i = 1; i <= N; i++) insert(i);
for (int i = N; i >= 1; i--) {
ans[i] = Kth(a[i] + 1);
erase(ans[i]);
}
for (int i = 1; i <= N; i++) printf("%d\n", ans[i]);
return 0;
}

【POJ2182】Lost Cows的更多相关文章

  1. 【POJ2182】Lost Cows 树状数组+二分

    题中给出了第 i 头牛前面有多少比它矮,如果正着分析比较难找到规律.因此,采用倒着分析的方法(最后一头牛的rank可以直接得出),对于第 i 头牛来说,它的rank值为没有被占用的rank集合中的第A ...

  2. 【POJ3621】Sightseeing Cows 分数规划

    [POJ3621]Sightseeing Cows 题意:在给定的一个图上寻找一个环路,使得总欢乐值(经过的点权值之和)/ 总时间(经过的边权值之和)最大. 题解:显然是分数规划,二分答案ans,将每 ...

  3. 【2186】Popular Cows(强连通分支及其缩点)

    id=2186">[2186]Popular Cows(强联通分支及其缩点) Popular Cows Time Limit: 2000MS   Memory Limit: 65536 ...

  4. 【POJ3621】Sightseeing Cows

    Sightseeing Cows Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8331   Accepted: 2791 ...

  5. 【USACO】Milking Cows

    Three farmers rise at 5 am each morning and head for the barn to milk three cows. The first farmer b ...

  6. 【poj2182】【poj2828】树状数组/线段树经典模型:逆序查找-空位插入法

    poj2182题意:有一个1~n的排列,现在给定每个人前面有多少个人的编号比他大,求这个排列是什么.n<=8000 poj2182题解: 逆序做,可以确定二分最后一个是什么,然后删除这个数.树状 ...

  7. 【图论】Popular Cows

    [POJ2186]Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 34752   Accepted: ...

  8. 【USACO】Strolling Cows

    Strolling Cows 给定有 \(n\) 个点 \(n\) 条边的有向图,每个点的出度都为 \(1\),求图中的最大环. 显然入度为 \(0\) 的点不可能为最大环上的点,所以考虑删点. 然后 ...

  9. 【poj2186】 Popular Cows

    http://poj.org/problem?id=2186 (题目链接) 题意 给出一个n个点m条边的有向图,求其中没有出度强连通分量所包含的点有几个 Solution 其实这道题的题解已经在“题意 ...

随机推荐

  1. php获取视频长度,php.ini配置

    php获取视频长度 $long = exec("ffmpeg -i video.mp4 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | s ...

  2. UEditor 中配置可以跨域访问的图片路径

    文档里很清楚:http://fex.baidu.com/ueditor/#server-path 进入配置文件 当域名不是直接配置到项目根目录时,例:http://a.com/b/c  域名下有两文件 ...

  3. Java中多线程重复启动

    在面试时候经常被问到多线程的相关问题: 今天在测试的时候发现下面的代码会抛出异常: java.lang.IllegalThreadStateException public static void m ...

  4. OC Copy and MutableCopy的使用

    #import <Foundation/Foundation.h> @interface Student : NSObject <NSCopying> // copy代表set ...

  5. TypeScript----类

    一.类的属性 public: 公有, private: 私有,不能在声明它的类的外部访问,只能在类内部访问 protect: 保护,不能在声明它的类的外部访问,但继承者除外 readonly 只读属性 ...

  6. jquery 判断元素可见性

    $(".more_list").is(":visible") $(".more_list").is(":hidden")

  7. Adobe flash player 因过期而遭到阻止解决办法

    最近使用谷歌浏览器时总是提示Adobe flash player 因过期而遭到阻止,这让人很头痛,基本上就是打开一个网页就会弹出一个提示,下面是解决办法. 问题的截图界面: 解决方法:在chrome浏 ...

  8. TraceWrite waittype

    今天上午突然开发人员叫起来说数据库非常慢,马上连上数据查看. 使用sp_who2和下面脚本可以看到大量的TraceWrite 等待事件.我的第一反应就是有人启用的Profiler在生产服务器上抓数据了 ...

  9. BZOJ2005:[NOI2010]能量采集(莫比乌斯反演,欧拉函数)

    Description 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量.在这些植物采集能量后,栋栋再使用一个能量汇集机器把这些植物采集到的能量汇集到一起. 栋栋的植物种得 ...

  10. python SQL注入测试脚本(更新中)

    import requests import json import warnings warnings.filterwarnings("ignore") url = 'https ...