【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. 「C语言」在Windows平台搭建C语言开发环境的多种方式

    新接触C语言,如何在Windows下进行C语言开发环境的搭建值得思考并整理. 以下多种开发方式择一即可(DEV C++无须环境准备). 注:本文知识来源于  Windows 平台搭建C语言集成开发环境 ...

  2. itext-2.1.7.jar

    iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转化为PDF文件. ...

  3. Django CreateView 简单使用

    django.views.generic中的CreateView类,是基于View的子类.CreateView可以简单快速的创建表对象. 下面记录小作代码. # polls/views.py from ...

  4. crm动态载入js库

    function load_script(url) {     var xmlHTTPRequest;     if (window.ActiveXObject) {         xmlHTTPR ...

  5. 4.spriing:Bean的生命周期/工厂方法配置Bean/FactoryBean

    1.Bean的生命周期 scope:singleton/prototype 1)spring容器管理singleton作用的生命周期,spring能够精确知道Bean合适创建,何时初始化完成,以及何时 ...

  6. selenium基础知识(概述、安装、IDE等)

    参考http://www.yiibai.com/selenium/selenium_webdriver.html

  7. 关于 Vue.js+Element-UI 日期控件 日期范围选择

    理想效果 : 也就是说前面时间框的时间能选的范围应该小于等于后面的时间框; 后面时间框能选的范围应该大于等于前面的时间框; 示例代码 : 页面: <el-form-item label=&quo ...

  8. TCP-IP Architecture and IP Packet

    Why Internet working? To build a "network of networks" or internet. operating over multipl ...

  9. VS 2017 + EF6 + MySQL5.7 建立实体模型闪退问题

    具体环境是:VS2017 ..NET Framework 4.6 .MySql.Data.Entity 6.9.12 在这个环境下总是不成功,具体是在这一步闪退,也不报错: 在点击“下一步”后,没有进 ...

  10. Asp.net 中 OnClientClick 与 OnClick 的区别

    OnClientClick 是客户端事件处理方法,一般采用JavaScript来进行处理,也就是直接在IE端运行,一点击就运行. OnClick 是服务器端事件处理方法,在服务器端也就是IIS中运行, ...