
树状数组
wanherun
今天会有好事发生吗
展开
-
hdu5929 Basic Data Structure
题目咋一看是很毒瘤的数据结构,但是仔细观察一下nand这个运算,可以得到一个结论:答案只和末尾的1的个数的奇偶性有关,这样的话,就可以随便做了。我写的是二分加树状数组,可能比较慢。实现的细节很多,比如处理只有一个数的情况,还有连续一段1后面还有几个数之类的,反正特别麻烦,练习码力吧。#include<bits/stdc++.h>#define N 1000000using namespace s原创 2018-01-17 20:40:09 · 441 阅读 · 1 评论 -
[noip2013]火柴排队 题解
显然,我们要让ai,bi比较”接近”,应该可以观察发现,当a,b都为降序的时候一一对应最小,证明的话,我们可以考虑交换两个数,这样的话,结果一定是会变大的。然后目标就是让它们这样对应,求最小交换次数,这样,就是求逆序对个数了。当然,归并排序是很经典的,但是我写的树状数组,应该常数要小一些吧。#include<bits/stdc++.h>#define N 100000#define mod 99原创 2017-10-25 23:17:13 · 602 阅读 · 0 评论 -
bzoj5055
题目令人恐惧的一道题233。时间的力量。。。。其实我是不想写的,但看在AC人怎么少,而且还没题解,写一发吧。先枚举每一个数,看它前面有几个比它小,算一下和为sum1,后面有几个比它大,算一下和为sum2,对答案的贡献为A[i]*sum1*sum2。离散化后,树状数组就可以了。#include<bits/stdc++.h>#define N 300000using namespace std;i原创 2020-08-25 10:15:18 · 591 阅读 · 0 评论 -
bzoj3529 [Sdoi2014]数表
题目如果不考虑a的限制,这道题就简化了一下。令f(x)f(x)表示x的约数和,g(x)=∑ni=1∑mj=1[gcd(i,j)==x]g(x)=\sum^{n}_{i=1}\sum^{m}_{j=1}[gcd(i,j)==x] 那么,ans=∑ni=1f(i)g(i)ans=\sum^{n}_{i=1}f(i)g(i),由某道题可得g(i)g(i)的表达式。 YY的GCD g(i)=∑i|dμ原创 2018-02-01 14:17:34 · 243 阅读 · 0 评论