http://codeforces.com/contest/459/problem/D

题意:给你n个数,然后统计多少组(i,j)使得f(1,i,ai)>f(j,n,aj);

思路:先从左往右统计f(1,i,ai)记录在b[i],然后从右往左统计f(j,n,aj)记录在c[i],然后利用树状数组统计个数即可。

  1. #include <cstdio>
  2. #include <iostream>
  3. #include <cstring>
  4. #include <cmath>
  5. #include <queue>
  6. #include <map>
  7. #include <algorithm>
  8. #define maxn 1000010
  9. #define ll long long
  10. using namespace std;
  11. const int inf=<<;
  12.  
  13. int n,m;
  14. ll a[maxn];
  15. ll b[maxn];
  16. ll c[maxn];
  17. ll y[maxn];
  18. ll xx[maxn];
  19. ll vis1[maxn],vis2[maxn];
  20.  
  21. int lowbit(int x)
  22. {
  23. return x&(-x);
  24. }
  25.  
  26. void Insert(int x,ll val)
  27. {
  28. while(x<maxn)
  29. {
  30. y[x]+=val;
  31. x+=lowbit(x);
  32. }
  33. }
  34.  
  35. ll Getsum(int x)
  36. {
  37. ll ans=;
  38. while(x>)
  39. {
  40. ans+=y[x];
  41. x-=lowbit(x);
  42. }
  43. return ans;
  44. }
  45.  
  46. int main()
  47. {
  48. scanf("%d",&n);
  49. for(int i=; i<=n; i++)
  50. {
  51. scanf("%lld",&a[i]);
  52. xx[i]=a[i];
  53. }
  54. sort(xx+,xx++n);
  55. int cnt=;
  56. for(int i=; i<=n; i++)
  57. {
  58. if(xx[i-]!=xx[i])
  59. {
  60. xx[++cnt]=xx[i];
  61. }
  62. }
  63. for(int i=; i<=n; i++)
  64. {
  65. int pos=lower_bound(xx+,xx+cnt+,a[i])-xx;
  66. vis1[pos]++;
  67. b[i]=vis1[pos];
  68. }
  69. for(int i=n; i>=; i--)
  70. {
  71. int pos=lower_bound(xx+,xx+cnt+,a[i])-xx;
  72. vis2[pos]++;
  73. c[i]=vis2[pos];
  74. }
  75. ll ans=;
  76. for(int i=n; i>=; i--)
  77. {
  78. ans+=Getsum(b[i]-);
  79. Insert(c[i],);
  80. }
  81. printf("%I64d\n",ans);
  82. return ;
  83. }

codeforces D. Pashmak and Parmida's problem的更多相关文章

  1. CodeForces 459D Pashmak and Parmida's problem

    Pashmak and Parmida's problem Time Limit:3000MS     Memory Limit:262144KB     64bit IO Format:%I64d ...

  2. codeforces 459D - Pashmak and Parmida&#39;s problem【离散化+处理+逆序对】

    题目:codeforces 459D - Pashmak and Parmida's problem 题意:给出n个数ai.然后定义f(l, r, x) 为ak = x,且l<=k<=r, ...

  3. codeforces 459D D. Pashmak and Parmida's problem(离散化+线段树或树状数组求逆序对)

    题目链接: D. Pashmak and Parmida's problem time limit per test 3 seconds memory limit per test 256 megab ...

  4. cf459D Pashmak and Parmida's problem

    D. Pashmak and Parmida's problem time limit per test 3 seconds memory limit per test 256 megabytes i ...

  5. codeforces 459 D. Pashmak and Parmida's problem(思维+线段树)

    题目链接:http://codeforces.com/contest/459/problem/D 题意:给出数组a,定义f(l,r,x)为a[]的下标l到r之间,等于x的元素数.i和j符合f(1,i, ...

  6. Codeforces Round 261 Div.2 D Pashmak and Parmida's problem --树状数组

    题意:给出数组A,定义f(l,r,x)为A[]的下标l到r之间,等于x的元素数.i和j符合f(1,i,a[i])>f(j,n,a[j]),求有多少对这样的(i,j). 解法:分别从左到右,由右到 ...

  7. Codeforces Round #261 (Div. 2) D. Pashmak and Parmida's problem (树状数组求逆序数 变形)

    题目链接 题意:给出数组A,定义f(l,r,x)为A[]的下标l到r之间,等于x的元素数.i和j符合f(1,i,a[i])>f(j,n,a[j]),求i和j的种类数. 我们可以用map预处理出  ...

  8. 【Codeforces 459D】Pashmak and Parmida's problem

    [链接] 我是链接,点我呀:) [题意] 定义两个函数 f和g f(i)表示a[1..i]中等于a[i]的数字的个数 g(i)表示a[i..n]中等于a[i]的数字的个数 让你求出来(i,j) 这里i ...

  9. codeforces459D:Pashmak and Parmida's problem

    Description Parmida is a clever girl and she wants to participate in Olympiads this year. Of course ...

随机推荐

  1. popupWindow使用详解

    popupWindow说起来简单,但是使用略麻烦,今天带大家来看看怎么使用,先来看看效果图: 先来看看布局文件吧: <RelativeLayout xmlns:android="htt ...

  2. GUI编程笔记(java)08:GUI通过鼠标移动到按钮上更改背景色案例

    首先我们看看源代码如下: package cn.itcast_06; import java.awt.Button; import java.awt.Color; import java.awt.Fl ...

  3. Objective-C:内存管理

    1 传统内存管理 Objective-C对象的生命周期可以分为:创建.存在.消亡. 1.1 引用计数 类似Java,Objective-C采用引用计算(reference counting)技术来管理 ...

  4. 调试php的soapServer

    用.NET的webservice做调试很轻松. 用soapserver的try和cacth获取不了多少信息

  5. Gym 100187A-Potion of Immortality

    题意:有n个药瓶,里面有一个有毒,然后每次拿兔子去试吃k瓶并且只能是k瓶,如果兔子死了就知道那瓶是毒药了,现在问你最少兔子要试吃几次. 分析:这题卡了好久,其实很简单.先考虑肯定要吃n/k次,那么剩下 ...

  6. J2EE入门必备

    1,J2EE是什么 J2EE(Java 2 platform Enterprise Edition)是软件平台,适于创建服务器端的大型应用软件和服务系统. J2EE适合开发大规模的业务系统,这种级别的 ...

  7. IIS配置不正确可能导致“远程服务器返回错误: (404) 未找到"错误一例。

    今天上传附件出现了下图所示的问题: 查找百度发现http://www.cnblogs.com/chuncn/archive/2009/09/08/1562759.html 文中提的比较靠谱. 但是,设 ...

  8. Android 设计随便说说

    我曾经搞过应用程序的设计,当时只是读了半本宝典<重构...>,现在看来就这半本九阴真经,收益甚多啊 .再加上这现年工作上的印证,基本上可以拿出喷一下了.当然现在看来当年的项目设计真是很烂了 ...

  9. jvm - 内存结构以其解析

    可以将jvm粗略分为以下部分: Heap Memory:存储java对象. Non-Heap Memory:存储加载的class文件,以及其他meta-data信息. Other:存储java代码,j ...

  10. oracle数据库误删恢复方法

    一.如果只是误删部分数据或者某条数据可以通过 1.select * from 误删除的表明 as of timestamp to_Date('恢复年月日  时分秒', '恢复时间格式')       ...