七月月赛T3
题目背景
本题时空限制已经扩大
题目描述
人比人,气死人;鱼比鱼,难死鱼。小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度。参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只鱼的可爱程度,很显然整数越大,表示这只鱼越可爱,而且任意两只鱼的可爱程度可能一样。由于所有的鱼头都朝向左边,所以每只鱼只能看见在它左边的鱼的可爱程度,它们心里都在计算,在自己的眼力范围内有多少只鱼不如自己可爱呢。请你帮这些可爱但是鱼脑不够用的小鱼们计算一下。
和之前的要求不一样,比赛组委会关心的是这个排列的“总得意值”。一共有 n 只小鱼,总共有 n×(1+n)/2 个不同的区间。每个区间的得意值等于这个区间中符合“左边的一只鱼的可爱值比右边的一只鱼可爱值更大”的对数(其实就是区间逆序对数啦)。总得意值就是所有区间的“得意值”的和。现在要求输出“总得意值”是多少。
输入输出格式
输入格式:
第一行输入一个整数 n,表示鱼的数目。
第二行内输入 n 个整数,用空格间隔,依次表示从左到右每只小鱼的可爱程度。
输出格式:
输出一个整数表示答案。
输入输出样例
20
6 0 4 5 8 8 0 6 6 1 0 4 6 6 0 0 7 2 0 5
3481
思路
小鱼比可爱我记得好像是个红题,为啥就加了一个括号,带上升级版就红的发紫了。。。
这题是个正常人都会想到逆序对,让后看了一下数据范围,这题是要杀人啊。这什么范围。。。。对出题人表示强烈的谴责。。。
考虑一组逆序对(a[i],a[j])(a[i],a[j])贡献了几次,不难发现贡献了i*(n - j + 1)i∗(n−j+1)次。
考虑怎么统计,通常求逆序对我们是让树状数组上的值+1+1,现在我们实际上只要把+1+1改成+(n - j + 1)+(n−j+1)就行了(想想乘法分配律就知道这是对的)。
那么接下来就是常规的离散化加树状数组
要是想满分要用int 128
但好像noip 不给用就没改,就放个60分的吧
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=;
long long n,a[maxn],b[maxn],c[maxn],tot,ans,f[maxn];
int lowbit(long long x)
{
return x&(-x);
}
void update(long long x,long long y)
{
while(x<=n)
{
c[x]+=y;
x+=lowbit(x);
}
}
int query(long long x)
{
long long ans=;
x--;
while(x)
{
ans+=c[x];
x-=lowbit(x);
}
return ans;
}
int main()
{
cin>>n;
for(int i=;i<=n;i++)
{
cin>>a[i];
b[i]=a[i];
}
sort(b+,b++n);
int tot=unique(b+,b++n)-b-;
for(int i=;i<=n;i++)
{
f[i]=lower_bound(b+,b+tot+,a[i])-b;
}
for(int i=n;i>=;i--)
{
long long i1=i;
long long i2=n-i+;
ans+=(long long )(i1*query(f[i]));
update(f[i],i2);
}
cout<<ans<<endl;
return ;
}
七月月赛T3的更多相关文章
- 【BZOJ4956】lydsy七月月赛 I 乱搞
[BZOJ4956]lydsy七月月赛 I 题面 题解:傻题,Floyd传递闭包即可~ #include <cstdio> #include <cstring> #includ ...
- 【BZOJ4953】lydsy七月月赛 F DP
[BZOJ4953]lydsy七月月赛 F 题面 题解:设f[i][j]表示第i个强度取为j时的最小误差.那么每次转移时,我们只计算j'和j之间的像素点带来的误差,于是有: $f[i][j]=min( ...
- 【BZOJ4952】lydsy七月月赛 E 二分答案
[BZOJ4952]lydsy七月月赛 E 题面 题解:傻题...二分答案即可,精度有坑. #include <cstdio> #include <cstring> #incl ...
- 【BZOJ4950】lydsy七月月赛 C 二分图最大匹配
[BZOJ4950]lydsy七月月赛 C 题面 题解:比较直接的想法就是:每行,每列的最大值都留下,剩下的格子都变成1.但是如果一个格子既是行的最大值又是列的最大值,那么我们只需要把它留下即可.这就 ...
- luogu11月月赛T3咕咕咕(组合数学)
题目描述 小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙. 比如,时间回溯到了 2018 年 11 月 3 日.小 F 望着自己的任务清单: 看 iG 夺冠 ...
- 洛谷2019 3月月赛 T3
题干 唯一AC T3 的大巨佬%%% 这题就是个大模拟吧. 题解
- 七月月赛T1
题目背景 借助反作弊系统,一些在月赛有抄袭作弊行为的选手被抓出来了! 题目描述 现有 2^n\times 2^n (n\le10)2n×2n(n≤10) 名作弊者站成一个正方形方阵等候 kkksc03 ...
- AC日记——松江1843路 洛谷七月月赛
松江1843路 思路: 三分: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 #define ...
- AC日记——小A和uim之大逃离 II 洛谷七月月赛
小A和uim之大逃离 II 思路: spfa: 代码: #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f ...
随机推荐
- group by 如何合并字符串优化记?
sqlserver 2005及以上版本 表(tb) id value 1 aa 2 cc 3 bb 3 dd 4 aa 4 cc 4 dd ...
- Linux内存描述之内存区域zone–Linux内存管理(三)
服务器体系与共享存储器架构 日期 内核版本 架构 作者 GitHub CSDN 2016-06-14 Linux-4.7 X86 & arm gatieme LinuxDeviceDriver ...
- HTML innerHTML、textContext、innerText
网址 : https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML 1.innerHTML : 获得.修改元素的用HTML语 ...
- PHP代码审计基础-中级篇
初级篇更多是对那些已有的版本漏洞分析,存在安全问题的函数进行讲解,中级篇更多是针对用户输入对漏洞进行利用 中级篇更多是考虑由用户输入导致的安全问题. 预备工具首先要有php本地环境可以调试代码 总结就 ...
- (转)python中@property详解
转:https://www.cnblogs.com/zhangfengxian/p/10199935.html
- python学习-变量和简单类型(二)
学习笔记中的源码:传送门 1.注释: 单行注释(#):多行注释("""或者''') 2.python标准数据类型:数字(numbers).字符串(string).列表(l ...
- SpringBoot生命周期管理之停掉应用服务几种方法
前言 在生产环境下管理Spring Boot应用的生命周期非常重要.Spring容器通过ApplicationContext处理应用服务的所有的beans的创建.初始化.销毁. 本文着重于生命周期中的 ...
- 学习Spring的思考框架
引子 很早之前听同事说:“要开会了.我都知道领导要问什么,就那几板斧.”其实领导之所以为领导,人家问的问题确实很合情合理,甚至可以说一针见血.而之所以能问出来这些合理的问题,就是因为头脑中有自己的思考 ...
- vue-cli2、vue-cli3脚手架详细讲解
前言: vue脚手架指的是vue-cli它是vue官方提供的一个快速构建单页面(SPA)环境配置的工具,cli 就是(command-line-interface ) 命令行界面 .vue-cli是 ...
- 百万年薪python之路 -- python的历史
1.python的历史 2004 Django框架诞生了 python2: 源码不统一,有重复的功能代码 python3: 源码统一,没有重复的功能 2.python是一个什么编程 ...