Cup Trick

平衡树维护一下位置。

  1. #include<bits/stdc++.h>
  2. #include <bits/extc++.h>
  3. #define LL long long
  4. #define fi first
  5. #define se second
  6. #define mk make_pair
  7. #define PLL pair<LL, LL>
  8. #define PLI pair<LL, int>
  9. #define PII pair<int, int>
  10. #define SZ(x) ((int)x.size())
  11. #define ull unsigned long long
  12.  
  13. using namespace std;
  14. using namespace __gnu_pbds;
  15.  
  16. const int N = 1e6 + ;
  17. const int inf = 0x3f3f3f3f;
  18. const LL INF = 0x3f3f3f3f3f3f3f3f;
  19. const int mod = ;
  20. const double eps = 1e-;
  21. const double PI = acos(-);
  22.  
  23. template <class T>
  24. using Tree = tree<T, null_type, std::less<T>, rb_tree_tag,tree_order_statistics_node_update>;
  25.  
  26. Tree<PII> T;
  27.  
  28. int n, m, ans[N];
  29. bool vis[N];
  30.  
  31. int main() {
  32. scanf("%d%d", &n, &m);
  33. int mn = m;
  34. for(int i = ; i <= n; i++)
  35. T.insert(mk(i + m, i));
  36. while(m--) {
  37. int x, y; scanf("%d%d", &x, &y);
  38. PII p = *T.find_by_order(y - );
  39. T.erase(p);
  40. p.fi = mn--;
  41. T.insert(p);
  42. if(ans[p.se]) {
  43. if(x != ans[p.se]) return puts("-1"), ;
  44. } else {
  45. if(vis[x]) return puts("-1"), ;
  46. ans[p.se] = x;
  47. vis[x] = true;
  48. }
  49. }
  50. for(int i = , j = ; i <= n; i++) {
  51. if(!ans[i]) {
  52. while(vis[j]) j++;
  53. vis[j] = true;
  54. ans[i] = j;
  55. }
  56. printf("%d ", ans[i]);
  57. }
  58. puts("");
  59. return ;
  60. }
  61.  
  62. /*
  63. find_by_order(k - 1) 求第k小的值
    order_of_key(k) 求有多少个数 <= k
  64. */

Codeforces 420D Cup Trick 平衡树的更多相关文章

  1. codeforces 420D Cup Trick

    codeforces 420D Cup Trick 题意 题解 官方做法需要用到线段树+平衡树(? 如果数据小的话似乎可以用莫队).然后代码好长好长.我补了一个只要用到树状数组的做法. 代码 #inc ...

  2. Codeforces VK Cup 2015 A.And Yet Another Bracket Sequence(后缀数组+平衡树+字符串)

    这题做得比较复杂..应该有更好的做法 题目大意: 有一个括号序列,可以对其进行两种操作: ·        向里面加一个括号,可以在开头,在结尾,在两个括号之间加. ·        对当前括号序列进 ...

  3. Codeforces VK CUP 2015 D. Closest Equals(线段树+扫描线)

    题目链接:http://codeforces.com/contest/522/problem/D 题目大意:  给你一个长度为n的序列,然后有m次查询,每次查询输入一个区间[li,lj],对于每一个查 ...

  4. Codeforces VK Cup 2012 Round 3 A. Variable, or There and Back Again(dfs)

    题目链接:http://codeforces.com/problemset/problem/164/A 思路:用vector分别保留原图和发图,然后分别从val值为1的点正向遍历,va值为2的点反向遍 ...

  5. Codeforces Bubble Cup 8 - Finals [Online Mirror] B. Bribes lca

    题目链接: http://codeforces.com/contest/575/problem/B 题解: 把链u,v拆成u,lca(u,v)和v,lca(u,v)(v,lca(u,v)是倒过来的). ...

  6. Codeforces Bubble Cup 8 - Finals [Online Mirror]H. Bots 数学

    H. Bots Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/575/problem/H Desc ...

  7. Codeforces Bubble Cup 8 - Finals [Online Mirror] D. Tablecity 数学题

    D. Tablecity Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/575/problem/D ...

  8. Codeforces Bubble Cup 8 - Finals [Online Mirror] F. Bulbo DP

    F. Bulbo Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/575/problem/F Des ...

  9. codeforces VK Cup 2015 - Qualification Round 1 B. Photo to Remember 水题

    B. Photo to Remember Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/522/ ...

随机推荐

  1. <转载>关系规范化之求最小函数依赖集(最小覆盖)

    原文链接http://blog.csdn.net/icurious/article/details/51240114 最小函数依赖集 一.等价和覆盖 定义:关系模式R<U,F>上的两个依赖 ...

  2. django.db.utils.OperationalError: (1049, "Unknown database 'djangodb'")

    DATABASES = { 'default': { 'ENGINE':'django.db.backends.mysql', 'NAME': 'mysql', 'USER':'root', 'PAS ...

  3. workflow的简介

    工作流(Workflow) 是对工作流程及其各操作步骤之间业务规则的抽象.概括描述.工作流建模,即将工作流程中的工作如何前后组织在一起的逻辑和规则,在计算机中以恰当的模型表达并对其实施计算. 工作流要 ...

  4. grep,find

    grep是强大的文本搜索工具,他可以对文件逐行查看,如果找到匹配的模式,就可以打印出包含次模式的所有行,并且支持正则表达式 find查找文件的grep是来查找字符串的,文件的内容 grep 文件的内容 ...

  5. git的学习笔记(一):git本地操作

    1.Git介绍 Git是一个开源的分布式版本控制软件,用以有效.高速的处理从很小到非常大的项目版本管理. Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发. Git ...

  6. python之+=与+(转载)

    先看一个简单的例子 从程序分析,进行直接+操作后,python会重新生成一个对象,而进行+=操作并不改变原来的对象,是在原来对象的基础上进行操作,所以+=也称为就地加 除此之外+和+=还有不同: 从程 ...

  7. 1705: 小明在工作(zzuli)

    题目描述 小明的工作是负责记录饭堂中正在排队的人的信息 在他的工作中会有三种可能的事件发生:     1.编号为id的学生加入到队伍的最后面     2.排在最前面的学生打完饭离开了队伍     3. ...

  8. laravel 兜底路由

    在 Laravel 5.6 中,引入了兜底路由功能.所谓兜底路由,就是当路由文件中定义的所有路由都无法匹配用户请求的 URL 时,用来处理用户请求的路由,在此之前,Laravel 都会通过异常处理器为 ...

  9. Metasploit one test

    1.对Metasploit的文件结构层次做一个目录结构图 2.漏洞利用的原理及其过程 攻击者发送一个附加攻击载荷的漏洞攻击代码给存在漏洞的系统.漏洞攻击代码首先执行,如果执行成功,攻击载荷中的实际代码 ...

  10. java爬虫笔记

    一.URl解释 1.URl统一资源定位符, Uniform Resource Location 也就是说是Internet上信息资源的字符串,所谓的网页抓取就是把URl地址中指定的网络资源从网络中读取 ...