hdu个人赛6—1007
来源:互联网 发布:网狐6603房卡牛牛源码 编辑:程序博客网 时间:2024/06/08 04:10
bx值
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 0 Accepted Submission(s): 0
Problem Description
对于一个n个数的序列a1,a2,...,an ,从小到大排序之后为ap1,ap2,...,apn ,定义它的bx值为满足api≠api−1 +1,1<i<=n的i 的个数。
给定n个数的一个排列,你需要计算它所有连续子序列的bx值之和。
给定n个数的一个排列,你需要计算它所有连续子序列的bx值之和。
Input
输入第一行包括一个正整数T,表示数据组数。
对于每组数据,第一行一个整数n,第二行n个整数,表示n个数的一个排列。
1 <= T= < 20
1 <= n <= 100000
1 <=ai <= n
对于每组数据,第一行一个整数n,第二行n个整数,表示n个数的一个排列。
1 <= T= < 20
1 <= n <= 100000
1 <=
Output
对每组数据输出一个整数表示答案。
Sample Input
231 2 343 1 4 2
Sample Output
05
【分析】
容斥原理,假设不存在两个连续的数相邻的状态,求出方案和就是∑(n-i+1)*(i-1),也就是对当前i所在的位置,左边的数字数量*右边的数字数量,然后减去任意两个相邻数的影响,计算方式相同,假设前后的位置是y,x,影响就是(n-x+1)*y,也就是保证[y,x]这一段被取的情况下,左边的数字数量*右边的数字数量
//这里有一点要注意..题目n个数的序列的意思是,保证给出的数字是1-n各一个...只是重新排列一下而已...所以每个数只会出现一次
【代码】
#include <stdio.h>#include <algorithm>#include <string.h>using namespace std;int f[100100]; int main() { int pp;scanf("%d",&pp); while(pp--) { long long ans=0; memset(f,0,sizeof(f)); long long n;scanf("%lld",&n); for(long long i=1;i<=n;i++) { int x;scanf("%d",&x); f[x]=i; ans+=(n-i+1)*(i-1); } for(int i=1;i<n;i++) { long long x=max(f[i],f[i+1]); long long y=min(f[i],f[i+1]); ans-=(n-x+1)*y; } printf("%lld\n",ans); } return 0; }
阅读全文
0 0
- hdu个人赛6—1007
- hdu个人赛6—1000
- hdu个人赛6—1003
- hdu个人赛6—1004
- hdu个人赛6—1009
- hdu个人赛6—1009
- 第一场个人训练赛——A-ASCII码排序(HDU 2000)
- 第一场个人训练赛——B-计算两点间的距离(HDU 2001)
- 第一场个人训练赛——C-计算球体积(HDU 2002)
- 第一场个人训练赛——D-求绝对值(HDU 2003)
- 第一场个人训练赛——E-成绩转换(HDU 2004)
- 第一场个人训练赛——F-第几天?(HDU 2005)
- Another kind of Fibonacci (个人赛19 hdu 3306)
- 省赛选拔赛之个人赛(三)FZU 1026 |1050 +HDU 3466【思路题】
- HPU-ACM暑期培训第2周14级个人赛:Problem E HDU 4883
- 背包的个人整理 HDU HLG
- HDU 2665 个人理解(主席树)
- 校个人赛——02
- 日历运用模式嵌套 布局 定位
- 链表带环问题【每日一题】
- ES6学习(一)
- VTK之基于Qt的VTK应用程序
- Redhat6.8安装JDK1.8
- hdu个人赛6—1007
- poj3692 Kindergarten【最大独立集】
- #1531:德国心脏病——[Offer收割]编程练习赛18
- linux系统 终端下 cat中文乱码/vim不乱码 或者 cat不乱码/vim中文乱码
- KinectV2的精度和与V1的对比
- 5-25 念数字 (15分)
- Android开发 之 RadialGradient环形渲染
- scrapy爬取网易云音乐的MP3链接
- UE4----C++调用蓝图类生角色加入场景和用纯C++生成角色加入场景中