题目

Link

输出序列中有多少个组合 {a1,a2,a3,a4,a5,a6}可以构成一个六边形。

分析

序列每个数都不相等。

所以可以设 a1<a2<a3<a4<a5<a6。

把六边形分解为 4 个三角形, 又可以得出

a1+a2+a3+a4+a5>a6:

a1+a2+a3>a6−a5−a4。

在 a4 固定的情况下, a3可以取[a3,a4)之间

所以我们枚举 , 用树状数组维护。

Code

#include <bits/stdc++.h>

using namespace std;
const int maxn = 5000000 + 131;
int C[maxn]; int lowbit(int x) {
return x &(-x);
} int Sum(int x) {
int ret = 0;
while(x) {
ret += C[x];
x -= lowbit(x);
}
return ret;
} void Add(int pos) {
while(pos < maxn) {
C[pos] ++;
pos += lowbit(pos);
}
} int Num[105];
int main() {
int T;
scanf("%d",&T);
for(int kase = 1; kase <= T; ++kase) {
memset(C, 0, sizeof(C));
int N;
scanf("%d",&N);
for(int i = 0; i < N; ++i)
scanf("%d",Num+i);
sort(Num, Num+N);
int Ans = 0, LowZ = 0; //小于0的情况用LowZ 统计
for(int i = N-1; i >= 0; --i) {
for(int j = 0; j < i; ++j)
for(int k = j+1; k < i; ++k)
{
int sum = Num[i] + Num[j] + Num[k];
Ans += Sum(sum-1);
Ans += LowZ;
}
for(int j = i + 1; j < N; ++j)
for(int k = j + 1; k < N; ++k)
{
int sub = Num[k] - Num[j] - Num[i];
if(sub > 0) Add(sub);
else LowZ ++;
}
}
printf("Case %d: %d\n",kase, Ans);
}
return 0;
}

LightOJ 1372 (枚举 + 树状数组)的更多相关文章

  1. 「模拟赛20180307」三元组 exclaim 枚举+树状数组

    题目描述 给定 \(n,k\) ,求有多少个三元组 \((a,b,c)\) 满足 \(1≤a≤b≤c≤n\)且\(a + b^2 ≡ c^3\ (mod\ k)\). 输入 多组数据,第一行数据组数\ ...

  2. hdu1394(枚举/树状数组/线段树单点更新&区间求和)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题意:给出一个循环数组,求其逆序对最少为多少: 思路:对于逆序对: 交换两个相邻数,逆序数 +1 ...

  3. lightoj 1088【树状数组+离散化】

    题意: 给你n个数,然后给你q个区间,然后问你这n个数有多少个在这个区间上: 思路: 树状数组搞搞,但是注意到数的范围很大,所以先离散化一下. 初始化初始化!!!卧槽,wa的我好郁闷... #incl ...

  4. Get Many Persimmon Trees_枚举&&二维树状数组

    Description Seiji Hayashi had been a professor of the Nisshinkan Samurai School in the domain of Aiz ...

  5. LightOJ 1085 - All Possible Increasing Subsequences 树状数组+离散

    http://www.lightoj.com/volume_showproblem.php?problem=1085 题意:求一个序列的递增子序列个数. 思路:找规律可以发现,某个数作为末尾数的种类数 ...

  6. LightOJ 1085(树状数组+离散化+DP,线段树)

    All Possible Increasing Subsequences Time Limit:3000MS     Memory Limit:65536KB     64bit IO Format: ...

  7. POJ-2029 Get Many Persimmon Trees---二维树状数组+枚举

    题目链接: https://vjudge.net/problem/POJ-2029 题目大意: 有N棵树在一个n*m的田里,给出每颗树的坐标 用一个s*t的矩形去围,最多能围几棵树 思路: 用二维树状 ...

  8. lightoj 1085【离散化+树状数组】

    题意: 求所有的上升子序列种数: 思路: 我想先离散化一下,然后用树状数组维护一下. 最终答案就是sum(n) ? 卧槽,好像是:然后就过了.. #include <bits/stdc++.h& ...

  9. Lightoj 1112 - Curious Robin Hood 【单点改动 + 单点、 区间查询】【树状数组 水题】

    1112 - Curious Robin Hood PDF (English) Statistics Forum Time Limit: 1 second(s) Memory Limit: 64 MB ...

随机推荐

  1. Kubernetes & Docker

    Docker核心技术原理及其应用 Docker 概览 Docker版本与安装介绍 Docker 核心技术之镜像 Docker 核心技术之容器 Docker 核心技术之容器与镜像 Docker 核心技术 ...

  2. windows常用快捷键和指令

    快捷键: Ctrl+鼠标滚轮:更改图标大小(桌面).缩放(开始屏幕) Ctrl+A:选择所有 Ctrl+C:复制 Ctrl+E:选择搜索框(资源管理器) Ctrl+N:新窗口(资源管理器) Ctrl+ ...

  3. Xshell报错“The remote SSH server rejected X11 forwarding request.”

    Xshell报错“The remote SSH server rejected X11 forwarding request.” 2012年12月17日 ⁄ Linux⁄ 共 218字 ⁄ 字号 小  ...

  4. PLC 数据类型

    类型 长度(位) 取值范围 描述 BOOL 1 0/1 布尔型 BYTE 8 0x00~0xFF 十六进制数 WORD 16 0~65535 无符号整数 DWORD 32 0~4294967295 无 ...

  5. macbook 入门

    前面的话 第一次使用 Mac 之前,需要改变一些原有思维,不应该使用 Windows 的思维习惯去使用 Mac,Mac 会节省系统维护.清理杀毒.升级驱动等操作的时间,让我们可以专注做真正重要的事情, ...

  6. HBuilderX——编译失败:HBuilderX 安装目录不能包括 ( 等特殊字符

    前言 编译小程序的时候报错,原因其实很简单,安装目录的问题! 解决 我安装到了D:\Program Files (x86),放到D盘的根目录下或者D:\Program Files只要不包含一些特殊字符 ...

  7. winform动态生成新窗体并添加控件执行命令

    主要代码 Form nf = new Form(); ; ; nf.Width = _w; nf.Height = _h; //添加textbox TextBox tb = new TextBox() ...

  8. .Net Core实践3 配置文件

    环境 .netcore2.1 / vs2017 / win10 / centos7 在.netcore项目中读取配置文件,先添加应用程序配置文件App.config.这个是类库项目的配置文件名. Sy ...

  9. redis-cli 通过管道 --pipe 快速导入数据到redis中

    最近有个需求,需要把五千万条数据批量写入redis中,方法倒是有很多种!效率最高的就是通过redis-cl管道的方式写入 一:先看看命令 cat redis.txt | redis-cli -h 12 ...

  10. 您必须知道的 Git 分支开发规范

    Git 是目前最流行的源代码管理工具. 为规范开发,保持代码提交记录以及 git 分支结构清晰,方便后续维护,现规范 git 的相关操作. 分支管理 分支命名 master 分支 master 为主分 ...