2017华南理工华为杯H bx值(容斥问题)
题目描述
对于一个nnn个数的序列 a1,a2,⋯,ana_1,a_2,\cdots,a_na1,a2,⋯,an,从小到大排序之后为ap1,ap2,⋯,apna_{p_1},a_{p_2},\cdots,a_{p_n}ap1,ap2,⋯,apn,定义它的 bxbxbx 值为满足 api≠api−1+1,1<i≤na_{p_i} \neq a_{p_{i-1}}+1, 1 < i \leq napi≠api−1+1,1<i≤n 的 iii 的个数。
给定 nnn 个数的一个排列,你需要计算它所有连续子序列的 bxbxbx 值之和。
输入格式
输入第一行包括一个正整数 TTT,表示数据组数。
对于每组数据,第一行一个整数 nnn,第二行 nnn 个整数,表示 nnn 个数的一个排列。
1≤T≤201 \leq T \leq 201≤T≤20
1≤n≤1000001 \leq n \leq 1000001≤n≤100000
1≤ai≤n1 \leq a_i \leq n1≤ai≤n
输出格式
对每组数据输出一个整数表示答案。
样例数据
输入
2
3
1 2 3
4
3 1 4 2
输出
0
5
备注
题解:
先计算每个长度为 i 的连续子串的时候的全部bx值:(i-1个), 每一个i有(n-i+1)个方案可以选择。 所以ans = ∑(n-i+1)*(i-1)。(1≤i≤n)。
然后就需要减去不合法的情况。就是找出相邻2个值在的连续子串。
我们就需要将a[i]的值记录一下相应的位置。eg. a[3] = 6, a[6] = 7。所以我们需要将包含a[3]和a[6]的子串,每一个子串都减去1个。
而包含a[3]和a[6]的子串有:(n-6+1)个从1开始包含这两个数的子串,而且在这些字串中从1~3一共又有3个不同开头相同结尾的子串。所以一共就是:(n-6+1)*3。
推广一下:每2个相邻度的数,在a串中会有2个位置,一个在前面pre,一个在后面back, (n-back+1)*(pre)。ans 就需要减掉这些。
#include <bits/stdc++.h> using namespace std;
typedef long long LL;
const int maxn = 1e5+;
int a[maxn];
int c[maxn];
void init()
{ }
void solve()
{
int n;
LL ans = ;
scanf("%d", &n);
for(int i = ;i<=n;i++) scanf("%d", &a[i]);
for(int i = ;i<=n;i++){
c[a[i]] = i;
ans += 1LL*(n-i+)*(i-);
}
for(int i = ;i<n;i++){
int pre = c[i];
int next = c[i+];
if(pre > next) swap(pre, next);
ans -= 1LL*pre*(n-next+);
}
printf("%lld\n", ans);
}
int main()
{
int t;
scanf("%d", &t);
while(t--){
init();
solve();
}
return ;
}
你努力的时候,比你厉害的人也在努力。
2017华南理工华为杯H bx值(容斥问题)的更多相关文章
- 2017华南理工华为杯D bx回文
比赛的时候队友过了,补补题XD. 题目链接:https://scut.online/p/125(赛后补题) 125. 笔芯回文 题目描述 bx有一个长度一个字符串S,bx可以对其进行若干次操作 ...
- bzoj2440 完全平方数 莫比乌斯值+容斥+二分
莫比乌斯值+容斥+二分 /** 题目:bzoj2440 完全平方数 链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2440 题意:求第k个小x数 ...
- HDU 6270 Marriage (2017 CCPC 杭州赛区 G题,生成函数 + 容斥 + 分治NTT)
题目链接 2017 CCPC Hangzhou Problem G 题意描述很清晰. 考虑每个家庭有且仅有$k$对近亲的方案数: $C(a, k) * C(b, k) * k!$ 那么如果在第$1$ ...
- 2020华为杯数学建模B题-RON建模 赛后总结与分析
好久好久没有写博客了...挺累的,从二月份开始找暑期实习,接着在进行暑期实习,然后马不停蹄地进行秋招,现在总算结束实习,前两天又参加了华为杯数学建模竞赛,感觉接下来就会很轻松了,希望能好好休息休息.这 ...
- (更新中)"华为杯" 武汉大学21级新生程序设计竞赛 非官方题解
"华为杯" 武汉大学21级新生程序设计竞赛 https://ac.nowcoder.com/acm/contest/31620#question D.和谐之树 思路:披着线段树外皮 ...
- bx值
bx值 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Problem De ...
- LOJ2542. 「PKUWC2018」随机游走【概率期望DP+Min-Max容斥(最值反演)】
题面 思路 我们可以把到每个点的期望步数算出来取max?但是直接算显然是不行的 那就可以用Min-Max来容斥一下 设\(g_{s}\)是从x到s中任意一个点的最小步数 设\(f_{s}\)是从x到s ...
- Trees in a Wood. UVA 10214 欧拉函数或者容斥定理 给定a,b求 |x|<=a, |y|<=b这个范围内的所有整点不包括原点都种一棵树。求出你站在原点向四周看到的树的数量/总的树的数量的值。
/** 题目:Trees in a Wood. UVA 10214 链接:https://vjudge.net/problem/UVA-10214 题意:给定a,b求 |x|<=a, |y|&l ...
- [HDU4336]Card Collector(min-max容斥,最值反演)
Card Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
随机推荐
- Bootstrap 学习笔记 项目实战 首页内容介绍 上
效果图: HTML代码: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset ...
- 微信小程序---》分包加载
[小程序]---分包加载 一.分包加载 某些情况下,开发者需要将小程序划分成不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载 在构建小程序分包项目时,构建会输出一个或多个分包.每个使 ...
- CTF夺旗赛丨网络内生安全试验场第四季圣诞赛明日开赛!
期待许久的圣诞狂欢就要来喽 <Jingle bell>欢快的旋律 在耳边翩翩起舞 白胡子老爷爷骑着麋鹿准时来送礼物 2019圣诞节 i 春秋做你的圣诞老人 参加CTF欢乐圣诞赛 你提交答案 ...
- Web API 入门一
之前我也了解过Web API 这部分,但是没有系统学习,更没有相关记录,故现在,写些博客记录入门学习过程.首先,关于API,只要学习编程的都应该知道,也都用过,API(应用程序编程接口)是一些预先定义 ...
- HDU 3228 题解(最小生成树)(Kruskal)(内有详细注释)
Problem Description A group of explorers has found a solitary island. They land on the island and ex ...
- MS COCO 数据集学习笔记(Common Objects in COntext)
一.数据来源 COCO中图片资源均引用自Flickr图片网站 二.数据集创建目的 进行图像识别训练,主要针对以下三个方向: (1)object instances (2)object keypoint ...
- k8s结合helm部署
一.安装Helm helm教程以及安装可以参考这篇文章 二.Heml说明 常见的helm模板如下 myapp - chart 包目录名 ├── charts - 依赖的子包目录,里面可以包含多个依赖的 ...
- 二分查找法(java版)
二分查找法也称为折半查找法,在有序的序列中使用二分法可以提高程序的执行效率. 典型的二分查找法代码 public int binarySearch1(int[] arr,int target){ in ...
- JavaScriptDOM对象和jQuery对象的互相转换
前言: 首先我们思考能不能直接在jQuery对象上调用原生DOM对象的方法或者直接在原生DOM对象调用jQuery对象呢?答案是否定的,我们看下把body背景色变为红色的代码: $("bod ...
- 银联银行卡查询服务-dubbo实现
最近看到银联开放了一个银行卡查询的服务,具体内容见官网https://open.unionpay.com/tjweb/api/detail?apiSvcId=51 尝尝鲜 在文档下载目录下,下载upa ...