poj1990两个树状数组
垃圾poj交不上去
- /*
- 按权值从小到大排序,
- 两个树状数组维护权值小于等于并且在i左边的点的个数和权值
- */
- #include<iostream>
- #include<cstring>
- #include<cstdio>
- #include<algorithm>
- using namespace std;
- #define maxn 20005
- #define ll long long
- struct node{
- int w,x;
- bool operator<(const node & a)const {
- return w<a.w;
- }
- }a[maxn];
- int n;
- ll bitcnt[maxn],bittot[maxn],sum;
- void add1(int x,int val){//bitcnt
- for(int i=x;i<=;i+=i&-i)
- bitcnt[i]+=val;
- }
- void add2(int x,int val){//bittot
- for(int i=x;i<=;i+=i&-i)
- bittot[i]+=val;
- }
- ll query1(int x){
- ll res=;
- for(int i=x;i;i-=i&-i)
- res+=bitcnt[i];
- return res;
- }
- ll query2(int x){
- ll res=;
- for(int i=x;i;i-=i&-i)
- res+=bittot[i];
- return res;
- }
- int main(){
- while(scanf("%d",&n)==){
- memset(bitcnt,,sizeof bitcnt);
- memset(bittot,,sizeof bittot);
- sum=;
- for(int i=;i<n;i++) scanf("%d%d",&a[i].w,&a[i].x);
- sort(a,a+n);
- ll ans=;
- for(int i=;i<n;i++){
- ll left_node=query1(a[i].x);
- ll left_total=query2(a[i].x);
- ans+=a[i].w*(left_node*a[i].x-left_total);
- ans+=a[i].w*((sum-left_total-(i-left_node)*a[i].x));
- sum+=a[i].x;
- add1(a[i].x,);
- add2(a[i].x,a[i].x);
- }
- printf("%lld\n",ans);
- }
- return ;
- }
poj1990两个树状数组的更多相关文章
- POJ-1990 MooFest---两个树状数组
题目链接: https://vjudge.net/problem/POJ-1990 题目大意: 一群牛参加完牛的节日后都有了不同程度的耳聋,第i头牛听见别人的讲话,别人的音量必须大于v[i],当两头牛 ...
- hdu-3015 Disharmony Trees---离散化+两个树状数组
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3015 题目大意: 有一些树,这些树的高度和位置给出.现在高度和位置都按从小到大排序,对应一个新的ra ...
- hdu3015,poj1990树状数组
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3015 题意:给定n组数,每组数有值x和值h,求n组数两两的val的总和.将所有x和所有h分别离散化(不 ...
- poj1990树状数组
Every year, Farmer John's N (1 <= N <= 20,000) cows attend "MooFest",a social gather ...
- hdu3015树状数组 poj1990的离散化版本
都是一类题目,推导调试比较烦,想出来还是不难的 /* 给定n个点对,按一维升序排序一次,每个点的序号为Di,按二维升序排序一次,每个点的序号为Hi 求sum{w(i,j)} w(i,j)=abs(Di ...
- Inversion_树状数组***
Problem Description You have a sequence {a1,a2,...,an} and you can delete a contiguous subsequence o ...
- HDU5792 World is Exploding(树状数组)
一共6种情况,a < b且Aa < Ab, c < d 且Ac > Ad,这两种情况数量相乘,再减去a = c, a = d, b = c, b = d这四种情况,使用树状数组 ...
- POJ 1990 MooFest(树状数组)
MooFest Time Limit: 1000MS Mem ...
- hdu-5497 Inversion(滑动窗口+树状数组)
题目链接: Inversion Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
随机推荐
- the difference __str__ and __repr__
First, let me reiterate the main points in Alex’s post: The default implementation is useless (it’s ...
- Mysql忘记数据库密码以及用户授权案例展示
Mysql忘记数据库密码以及用户授权案例展示 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 大家在学习MySQL时如果很长一段时间不使用密码是不是就忘记MySQL的管理密码啦?这种 ...
- Java IO笔记
第一:File类(主要获取文件名,判断文件是否存在,创建或者删除文件) 举个例子,代码如下: import java.io.File; public class Main{ public static ...
- PostgreSQL操作-psql基本命令
一.建立数据库连接----------------接入PostgreSQL数据库: psql -h IP地址 -p 端口 -U 数据库名 之后会要求输入数据库密码 二.访问数据库 1.列举数据库:\l ...
- JDBC-通用查询
手动实现查询结果返回为一个对象集合 实体类 package com.jdbc; public class User { private Integer id; private String name; ...
- Nginx 学习笔记(三)proxy_cache 缓存配置和ngx_cache_purge模块
反向代理的缓存清理 一.proxy_cache配置 (1)如何配置和安装,都在这里了:https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Ng ...
- jQuery基础 (一)——样式篇(jQuery选择器)
一.选择器类型 id选择器 class选择器 元素选择器 层级选择器 全选择器(*选择器) 二.有几种方式可以隐藏一个元素: CSS display的值是none. type="hidden ...
- 使用paramiko远程执行命令、下发文件
写部署脚本时,难免涉及到一些远程执行命令或者传输文件. 之前一直使用sh库,调用sh.ssh远程执行一些命令,sh.scp传输文件,但是实际使用中还是比较麻烦的,光是模拟用户登陆这一点,还需要单独定义 ...
- 转--python之正则入门
原文地址 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法 ...
- HTML语义化
什么是HTML语义化呢? 根据内容的结构化(内容语义化),选择合适的标签(代码语义化),便于开发者阅读,写出优雅的代码的同时让浏览器的爬虫更好的解析 语义化标签的优势: 1)代码结构清晰,方便阅读 2 ...