树状数组
__wwwwn
这个作者很懒,什么都没留下…
展开
-
codeforces 1191 F 离散化+树状数组
题意:定义无序集合s(l,r,a)为x∈[l,r],y∈(a,+∞)的所有点,给你n个点,问你最多有多少个这样的集合题解:将坐标离散化为a[i].x和a[i].x-1,从上到下从左到右,加上每个点的贡献值即可。注意,树状数组只记录一次,即最大是1即可,因为只需要看当前y坐标的所有点就行,与上一层和下一层的无关。#include <iostream>#include <...原创 2019-07-17 18:10:28 · 176 阅读 · 0 评论 -
J - Swaps and Inversions HDU - 6318 树状数组+离散化
题解 :第一种是逆序数对的个数*x,第二种最小交换次数也是逆序数对的个数*y,直接取最小值细节就是需要离散化,不然会爆#include <bits/stdc++.h>using namespace std;#define INF 0x3f3f3f3fconst int maxn=2e5+10;typedef long long ll;int n,x,y;ll c[...原创 2019-07-30 19:27:31 · 161 阅读 · 0 评论 -
Simple Puzzle HDU - 3600 N数码有解+逆序数对+树状数组
题意:n数码是否有解题解:如果n为奇数,逆序数对如果跟n同奇则不行。如果n为偶数,就得判断0的行数到目标行的距离是否是同奇同偶#pragma comment(linker, "/STACK:1024000000,1024000000")#include <bits/stdc++.h>using namespace std;typedef long long ll;ty...原创 2019-08-01 23:09:39 · 176 阅读 · 0 评论 -
The Preliminary Contest for ICPC Asia Nanjing 2019 B. super_log 扫描线+树状数组
题解:跟经典题目一样,还是需要离散化,将矩形分成上下两个线段,这里同时也要把对应的点也加进去。在扫描线从下往上扫描的同时,用树状数组更新对应点的值,遇到线段就计算l,r之间的和。同时上边界减去下边界就是对应矩形的总和,点的坐标需要找规律,借鉴了这里#include <bits/stdc++.h>using namespace std;typedef long long l...原创 2019-09-05 09:58:39 · 163 阅读 · 0 评论