Day6 - K - 陌上花开 HYSBZ - 3262
Input
Output
包含N行,分别表示评级为0...N-1的每级花的数量。
Sample Input10 3 3 3 3 2 3 3 2 3 1 3 1 1 3 1 2 1 3 1 1 1 2 1 2 2 1 3 2 1 2 1
Sample Output3 1 3 0 1 0 1 0 0 1
思路:CDQ分治板子题,这题注意去重+排序时要三个关键字都用
using namespace std;
#define lowbit(x) ((x)&(-x))
typedef long long LL; const int maxm = 2e5+; int C[maxm], N, K, cnt[maxm]; void add(int x, int val) {
for(; x <= K; x += lowbit(x))
C[x] += val;
} int getsum(int x) {
int ret = ;
for(; x; x -= lowbit(x))
ret += C[x];
return ret;
} void clearr(int x) {
for(; x <= K; x += lowbit(x)) {
if(C[x] == ) break;
C[x] = ;
}
} struct Node {
int S, C, M, sum, ans;
} buf[maxm], res[maxm]; bool cmp_S(Node a, Node b) {
if(a.S == b.S && a.C == b.C) return a.M < b.M;
if(a.S == b.S) return a.C < b.C;
return a.S < b.S;
} void CDQ(int L, int R) {
if(L >= R) return;
int mid = L+R >> ;
CDQ(L, mid), CDQ(mid+, R);
int i = L, j = mid+, k = L;
//左修改右查询
while(i <= mid && j <= R) {
if(res[i].C <= res[j].C) {
add(res[i].M, res[i].sum);
buf[k++] = res[i++];
} else {
res[j].ans += getsum(res[j].M);
buf[k++] = res[j++];
}
}
while(i <= mid)
buf[k++] = res[i++];
while(j <= R) {
res[j].ans += getsum(res[j].M);
buf[k++] = res[j++];
}
for(int t = L; t <= R; ++t) {
clearr(buf[t].M); // 清空树状数组
res[t] = buf[t];
}
} int main() {
scanf("%d%d", &N, &K);
for(int i = ; i < N; ++i) {
scanf("%d%d%d", &buf[i].S, &buf[i].C, &buf[i].M);
buf[i].ans = ;
}
sort(buf, buf+N, cmp_S);
// 去重
int now = , sz = ;
for(int i = ; i < N; ++i) {
now++;
if(buf[i].S != buf[i+].S || buf[i].C != buf[i+].C || buf[i].M != buf[i+].M) {
res[sz] = buf[i];
res[sz++].sum = now;
now = ;
}
}
CDQ(, sz-);
for(int i = ; i < sz; ++i)
cnt[res[i].ans+res[i].sum-]+=res[i].sum; //比他小的+和他一样的-自身(1)
for(int i = ; i < N; ++i)
printf("%d\n", cnt[i]);
return ;
}
Day6 - K - 陌上花开 HYSBZ - 3262的更多相关文章
- 陌上花开 HYSBZ - 3262 (CDQ分治)
陌上花开 HYSBZ - 3262 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),用三个整数表示. 现在要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量. 定义一朵花A比另 ...
- Day6 - L - Mokia HYSBZ - 1176
维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数M<=160000,询问数Q<=10000,W<=2000000. Input 第 ...
- Day6 - C - Count HYSBZ - 1452 /1452: [JSOI2009]Count
Description 一个N*M的方格,初始时每个格子有一个整数权值,接下来每次有2个操作: 改变一个格子的权值 求一个子矩阵中某个特定权值出现的个数 Input 每一行有两个数字N,M 接下来 ...
- 【教程】简易CDQ分治教程&学习笔记
前言 辣鸡蒟蒻__stdcall终于会CDQ分治啦! CDQ分治是我们处理各类问题的重要武器.它的优势在于可以顶替复杂的高级数据结构,而且常数比较小:缺点在于必须离线操作. CDQ分治的基 ...
- POJ1195Mobile phones (从二维树状数组到cdq分治)
Suppose that the fourth generation mobile phone base stations in the Tampere area operate as follows ...
- django模型操作
Django-Model操作数据库(增删改查.连表结构) 一.数据库操作 1.创建model表
- 【BZOJ 3262】 3262: 陌上花开 (CDQ分治)
3262: 陌上花开 Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A ...
- bzoj 3262 陌上花开 - CDQ分治 - 树状数组
Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一朵花B要美丽,当 ...
- 「BZOJ」「3262」陌上花开
CDQ分治 WA :在solve时,对y.z排序以后,没有处理「y.z相同」的情况,也就是说可能(1,2,3)这个点被放到了(2,2,3)的后面,也就是统计答案在前,插入该点在后……也就没有统计到! ...
随机推荐
- leetcode菜鸡斗智斗勇系列(7)--- 用最小的时间访问所有的节点
1.原题: https://leetcode.com/problems/minimum-time-visiting-all-points/ On a plane there are n points ...
- 吴裕雄--天生自然PythonDjangoWeb企业开发:解决ModuleNotFoundError: No module named 'config'报错
使用创建完模块应用之后python manage.py startapp test_app,您应该进入settings.py并将其注册到
- Pytorch本人疑问(1) torch.nn和torch.nn.functional之间的区别
在写代码时发现我们在定义Model时,有两种定义方法: torch.nn.Conv2d()和torch.nn.functional.conv2d() 那么这两种方法到底有什么区别呢,我们通过下述代码看 ...
- EC20的低功耗模式
EC20的支持以下几种工作模式,睡眠模式包括MCU主机睡眠和EC20睡眠. 当MCU主机不睡眠时,通过AT+QICSK =1(发送完之后串口被禁用不再响应AT指令),DTR=1(投票EC20可以进入睡 ...
- 如何往gitlab/github上游贡献代码
Git 是一个开源的分布式版本控制系统,它能够记录每一次改动. 一些概念 仓库:git 中以仓库为单位:每个项目对应一个仓库,如 /eayuntest/Rally./eayuntest/stack 是 ...
- IDEA 打 jar包
方法一:Maven插件打包(我用此方法解决的问题) 报错:找不到主类Main class,找不到某个依赖的 jar包 解决方法:将未找到的依赖 jar,使用mvn命令打包放入到我们的本地mvn仓库,I ...
- JavaScript数组用法
本文介绍一些js数组的用法: 上图的要点为: 1.unshift增加数组头部的元素,shift删除数组头部的元素. 2.delete除可删除对象的属性外,还可以删除数组的元素,使其占位变为undefi ...
- 如何在ubuntu14.04(64位)编译运行32位程序
sudo -i cd /etc/apt/sources.list.d echo "deb http://archive.ubuntu.com/ubuntu/ raring main rest ...
- Write-up-Toppo
关于 下载地址:点我 哔哩哔哩:哔哩哔哩 信息收集 vmnet8网卡,IP:192.168.131.144,开放web,ssh服务 ➜ ~ ip a show dev vmnet8 5: vmnet8 ...
- pip3与pyttsx3文字语音转换
今天想做个语音读取的小脚本,在网上查了一下发现python里有个pyttsx可以识别文字, 打算通过pip3 install pyttsx安装包,结果报错, 然后试了一下发现不行,去网上查了一下发现p ...