19-11-14-Finally
如果这是世界末日的前一晚,
这是我的回答。
#include <bits/stdc++.h> using namespace std; int main(){
cout<<"Hello, the end."<<endl;
}
ZJ:
最后一场了,不写写总结就没了。
T1,先打一个暴力,然后发现可以简单容斥,就$\Theta(N \log N)$
T2不会,一个搜索,还感觉过不了最小点。
T3不会,打了一个$1$分算法(滑稽)
但是想了半天T3……
T2的剪枝有点难打……
TJ:
T1
就会T1,于是写个。
首先我们发现可以把四元组拆成两个二元组。
那么有$<a,b>,S_a < S_b$和$<c,d>,S_c > S_d$
于是直接用树状数组维护,算出$i$前严格比$S_i$大和小的数的数量就行。
但是有个问题,$a,b,c,d$各不相同,那么就需要算出有那些非法。
于是有
- $(a<i\ and\ S_a<S_i ,i,i, b>i\ and\ S_b<S_i)$
- $(a<i\ and\ S_a<S_i ,i,i, b<i\ and\ S_b>S_i)$
- $(a>i\ and\ S_a<S_i ,i,i, b>i\ and\ S_b>S_i)$
- $(a<i\ and\ S_a>S_i ,i,i, b>i\ and\ S_b>S_i)$
四种情况,同样用树状数组算出并容斥就行了!
//a #include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#define N 111111
#define LL long long using namespace std; int nn,vn;
int arr[N],val[N];
int pre[N];
LL befs[N],befb[N],afts[N],aftb[N];
LL ans; inline int fvind(int va){
return lower_bound(val+1,val+vn+1,va)-val;
}
inline int lowbit(int x){
return x&(-x);
}
void add(int pos,int v){
while(pos<=vn+10){
pre[pos]+=v;
pos+=lowbit(pos);
}
}
int query(int pos){
int res=0;
while(pos){
res+=pre[pos];
pos-=lowbit(pos);
}
return res;
}
int main(){
#ifndef LOCAL
freopen("a.in" ,"r",stdin);
freopen("a.out","w",stdout);
#endif
scanf("%d",&nn);
for(int i=1;i<=nn;i++){
scanf("%d",arr+i);
val[i]=arr[i];
}
sort(val+1,val+nn+1);
vn=unique(val+1,val+nn+1)-val-1;
for(int i=1;i<=nn;i++)
arr[i]=fvind(arr[i]); /* for(int i=1;i<=nn;i++)
cout<<arr[i]<<" ";
cout<<endl;*/ for(int i=1;i<=nn;i++){
befs[i]=query(arr[i]-1);
befb[i]=i-1-query(arr[i]);
add(arr[i],1);
}
memset(pre,0,sizeof pre);
for(int i=nn;i>=1;i--){
afts[i]=query(arr[i]-1);
aftb[i]=nn-i-query(arr[i]);
add(arr[i],1);
}
/* cout<<"Befs:";
for(int i=1;i<=nn;i++)
cout<<befs[i]<<" ";
cout<<endl<<"Befb:";
for(int i=1;i<=nn;i++)
cout<<befb[i]<<" ";
cout<<endl<<"Afts:";
for(int i=1;i<=nn;i++)
cout<<afts[i]<<" ";
cout<<endl<<"Aftb:";
for(int i=1;i<=nn;i++)
cout<<aftb[i]<<" ";
cout<<endl;
*/
LL suma=0,sumb=0;
for(int i=1;i<=nn;i++){
suma+=1ll*befs[i];
sumb+=1ll*afts[i];
}
ans=suma*sumb;
for(int i=1;i<=nn;i++){
ans-=1ll*befb[i]*aftb[i];
ans-=1ll*befs[i]*afts[i];
ans-=1ll*befs[i]*befb[i];
ans-=1ll*afts[i]*aftb[i];
}
cout<<ans<<endl;
}
T2T3咕了,可能不会补了。
"Hello CSP-S,Hello AFO"
19-11-14-Finally的更多相关文章
- JavaSE_ API常用对象 总目录(11~14)
JavaSE学习总结第11天_开发工具 & API常用对象111.01 常见开发工具介绍11.02 Eclipse和MyEclipse的概述11.03 Eclipse的下载安装及卸载11.04 ...
- 2021.11.14 CF1583E Moment of Bloom(LCA+图上构造)
2021.11.14 CF1583E Moment of Bloom(LCA+图上构造) https://www.luogu.com.cn/problem/CF1583E 题意: She does h ...
- Intel Artificial Intelligence Conference(2018.11.14)
时间:2018.11.14地点:北京国贸大酒店
- 第26次Scrum会议(11/14)【欢迎来怼】
一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,阚博文 小组照片 二.开会信息 时间:2017/11/14 11:35~11:57,总计22min.地点:东北 ...
- Notes of Daily Scrum Meeting(11.14)
Notes of Daily Scrum Meeting(11.14) 今天是项目第三周的周五,按原计划这时我们的项目应该已经要进入尾声进行组装调试了,但由于之前放假还有队员们的 效率比较低的原因,我 ...
- C++11/14笔记
目录 语言层面 模板表达式中的空格 nullptr和std::nullptr_t 自动推导类型----auto 一致性初始化----Uniform Initialization 初始化列表(initi ...
- 基数排序的可复用实现(C++11/14/17/20)
基数排序,是对整数类型的一种排序方法,有MSD (most significant digit)和LSD (least significant digit)两种.MSD将每个数按照高位分为若干个桶(按 ...
- Update 19.11 for Azure Sphere
今天,微软发布了面向Azure Sphere的19.11更新,其主要亮点就是加入了对开发工具Visual Studio Code和Linux开发环境的支持.具体来讲,本次更新包含3个部分: 1. Az ...
- JZOJ 11.14 提高B组反思
JZOJ 11.14 提高B组反思 T1 题目虽然有点高大上,但是很容易懂 有一个\(d\)维空间,同时有一个长度为\(2n\)的操作序列,每个操作往某一维的正方向或反方向走一格,问多少种方案使得最后 ...
- 毕向东_Java基础视频教程第19天_IO流(11~14)
第19天-11-IO流(字节流File读写操作) import java.io.FileInputStream; import java.io.FileOutputStream; import jav ...
随机推荐
- shell 命令 链接文件 ln
1. 创建软链接文件 [ ln -s 源文件 链接文件] 类似于windows下的快捷方式 [ ln -s expr.sh expr ] 此时创建的链接文件路径是相对于现在所在的路径 ...
- 计算a,b,c的排列组合
递归实现,思路的确有点难得想: public void SortAll(List<string> list,int start,int end) { if (start==end) { f ...
- SpringMVC常用注解知识总结
1.@Controller 注解到类名上,表示该类是控制器. 2.@RequestMapping("/xxxx") 可以放在类名/方法名之上,表示访问请求该方法时的url.如果该方 ...
- log4j.rootLogger
log4j.rootLogger=INFO, FILE, CONSOLE log4j.rootLogger=TRACE, FILE, CONSOLE
- Sqlite多线程相关整理
Sqlite多线程相关整理 Sqlite With MultiThreads 什么是线程安全? 当多个线程访问某个方法时,不管你通过怎样的调用方式.或者说这些线程如何交替地执行,我们在主程序中不需要去 ...
- leetcode-分治
题目169: 分治:O(nlgn) class Solution: def majorityElement(self, nums: List[int]) -> int: def majorE(l ...
- Spring+Mybatis常见问题随笔
错误1:无法绑定指定方法 异常堆栈:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 原因 ...
- python实现全局配置和用户配置文件
一.文件目录格式 二.代码 1.conf.__init__.py import importlib import os from conf import gsettings class Setting ...
- Java笔记 - GUI编程
一.图形界面开发 1.AWT开发 AWT(Abstract Window Toolkit)在Windows.Linux提供的图形窗口之上,再次进行了抽象,为不同语言开发的程序提供统一定义的图形接口,可 ...
- Docker系列(二):Docker基础命令
docker的部署安装(Linux kernel至少3.8以上): yum install docker docker1.8安装:(下面 是两个命令) # cat >/etc/yum.repos ...