题目

link

求偶数子序列

满足

的个数。

分析

首先, 我们先把每一对a[i] + a[j]存起来, 这样就可以把题目的偶数个条件无视了。
设 T[i,j] = a[i] + a[j]; 因为我们是要求序列个数, 所以对于 [i,j]区间, 我们
要找出 [i,j] 内有多少对满足 T[x,y] < T[i,j] 的。
把 (i,j)想成坐标系的点, 那么上面求的就是 平面矩形 {[i,i],[j,j]} 中有多少点。
利用前缀和 和矩形相减就可以快速得出了。所以用二维的树状数组维护就有了。

Code

取余是一个特殊值, 可以直接用unsigned更加简便。

#include <bits/stdc++.h>

using namespace std;

typedef long long LL;

const LL MOD = 1LL<<32;
const int maxn = 500 + 31; struct Point {
int x, y;
LL sum; Point(int _x, int _y, LL _s):\
x(_x),y(_y),sum(_s){} bool operator < (const Point a) const {
if(sum == a.sum) {
return x == a.x ? y < a.y : x < a.x;
} else return sum < a.sum;
}
}; vector<Point> Tmp;
LL Num[maxn][maxn];
LL A[maxn], B[maxn]; ///BIT
int lowbit(int x) { return x&(-x); }
LL Sum(int x, int y) {
LL ret = 0;
int xx = x;
while(xx > 0) {
int yy = y;
while(yy > 0)
{
ret = (ret + Num[xx][yy]) % MOD;
yy -= lowbit(yy);
}
xx -= lowbit(xx);
}
return ret;
}
void Add(int x, int y, LL Val) {
int xx = x;
while(xx < maxn)
{
int yy = y;
while(yy < maxn)
{
Num[xx][yy] = (Num[xx][yy] + Val) % MOD;
yy += lowbit(yy);
}
xx += lowbit(xx);
}
} int main() {
//cout << MOD <<endl;
int t, n;
scanf("%d",&t);
for(int kase = 1; kase <= t; ++kase)
{
Tmp.clear();
memset(Num,0,sizeof(Num));
scanf("%d",&n);
for(int i = 0; i < n; ++i)
scanf("%lld",A+i);
for(int i = 0; i < n; ++i)
for(int j = i+1; j < n; ++j)
{
Tmp.push_back(Point(i+1,j+1,(A[i]+A[j])%MOD));
}
sort(Tmp.begin(), Tmp.end());
LL Ans = 0;
for(int i = 0; i < Tmp.size(); ++i)
{
Point t = Tmp[i];
LL ss = (Sum(t.y-1,t.y-1) - Sum(t.x,t.y-1) + MOD) % MOD;
ss = (ss - Sum(t.y-1,t.x) + Sum(t.x,t.x) + MOD) % MOD;
ss = (ss+1) % MOD;
Ans = (Ans + ss) % MOD;
Add(t.x,t.y,ss);
}
//Ans %= MOD;
printf("Case %d: %lld\n",kase, Ans);
}
return 0;
}

Light OJ 1343 - Aladdin and the Black Stones的更多相关文章

  1. Light OJ 1341 Aladdin and the Flying Carpet Pollard_rho整数分解+DFS

    进入a b 多少努力p, q 使p*q == a && p < q && p >= b 直接大整数分解 然后dfs所有可能的解决方案劫持 #include ...

  2. Light OJ 1341 Aladdin and the Flying Carpet

    题意:求大于b的a的因数对有几组.例10  2结果为{2,5},12 2结果为{2,6}{3,4}-----不反复 解一:分解质因数+DFS #include <iostream> #in ...

  3. Light OJ 1114 Easily Readable 字典树

    题目来源:Light OJ 1114 Easily Readable 题意:求一个句子有多少种组成方案 仅仅要满足每一个单词的首尾字符一样 中间顺序能够变化 思路:每一个单词除了首尾 中间的字符排序 ...

  4. Light OJ 1429 Assassin`s Creed (II) BFS+缩点+最小路径覆盖

    题目来源:Light OJ 1429 Assassin`s Creed (II) 题意:最少几个人走全然图 能够反复走 有向图 思路:假设是DAG图而且每一个点不能反复走 那么就是裸的最小路径覆盖 如 ...

  5. Light OJ 1406 Assassin`s Creed 减少国家DP+支撑点甚至通缩+最小路径覆盖

    标题来源:problem=1406">Light OJ 1406 Assassin`s Creed 意甲冠军:向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路: ...

  6. Light OJ 1316 A Wedding Party 最短路+状态压缩DP

    题目来源:Light OJ 1316 1316 - A Wedding Party 题意:和HDU 4284 差点儿相同 有一些商店 从起点到终点在走过尽量多商店的情况下求最短路 思路:首先预处理每两 ...

  7. light oj 1007 Mathematically Hard (欧拉函数)

    题目地址:light oj 1007 第一发欧拉函数. 欧拉函数重要性质: 设a为N的质因数.若(N % a == 0 && (N / a) % a == 0) 则有E(N)=E(N ...

  8. Light OJ 1406 Assassin`s Creed 状态压缩DP+强连通缩点+最小路径覆盖

    题目来源:Light OJ 1406 Assassin`s Creed 题意:有向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路:最少的的人能够走全然图 明显是最小路径覆盖问题 ...

  9. Light OJ 1288 Subsets Forming Perfect Squares 高斯消元求矩阵的秩

    题目来源:Light OJ 1288 Subsets Forming Perfect Squares 题意:给你n个数 选出一些数 他们的乘积是全然平方数 求有多少种方案 思路:每一个数分解因子 每隔 ...

随机推荐

  1. bind:tap="onLike" 中不能添加参数 及 dataset 传值

    <view bind:tap="onLike({{id}})"></view> //Component "pages/book-detail/bo ...

  2. Async/Await 学习与示例

    参考:Async/await学习 es 7 提供了对 promise 对象的更好的操作,省去了很多丧心病狂的链式异步请求,promise 是回调地狱的福音,而 Async/Await 则是 promi ...

  3. 修改注册表信息来兼容当前WebBrower程序

    public class WebBrower { /// <summary> /// 修改注册表信息来兼容当前程序 /// /// </summary> public stat ...

  4. spring boot下使用logback或log4j生成符合Logstash标准的JSON格式

    spring boot下使用logback或log4j生成符合Logstash标准的JSON格式 一.依赖 由于配置中使用了json格式的日志输出,所以需要引入如下依赖 "net.logst ...

  5. JSP、HTML页面概述

    1. 展示 <%-- 此页面为jsp页面 --%> <!-- <%-- 注释 --%> JSP注释,注释内容不会被发送至浏览器甚至不会被编译 --> <%-- ...

  6. 深入剖析Kubernetes学习笔记:深入理解镜像(07)

    一.容器里的进程看到的文件系统又是什么样子呢? 1.你会看到好多宿主机的文件 [root@k8s-master ~]# vim ns.c [root@k8s-master ~]# gcc -o nl ...

  7. python之路(8)常用模块

    目录 os模块 sys模块 json模块 pickle模块 xml模块 re模块 logging模块 configparser模块 hashlib模块 time模块 random模块 subproce ...

  8. 使用Docker安装Nginx

    启动命令 docker run -d -p : --name nginx -v $PWD/nginx.conf:/etc/nginx/nginx.conf -v $PWD/conf.d/:/etc/n ...

  9. [Deep Learning] 神经网络基础

    目前,深度学习(Deep Learning,简称DL)在算法领域可谓是大红大紫,现在不只是互联网.人工智能,生活中的各大领域都能反映出深度学习引领的巨大变革.要学习深度学习,那么首先要熟悉神经网络(N ...

  10. java接口多实现和多继承

    package test; interface mouth { public abstract void speak(); } interface nose{ public abstract void ...