牛客周赛11TG B-弹钢琴
链接:https://ac.nowcoder.com/acm/contest/941/B
来源:牛客网
题目描述
为了阻止异变的发生,Pi将钢琴魔改了
钢琴上有 N 个键,每个键有音高、音色、春希度三种属性
和纱需要依次敲击若干个键,这些键的春希度之和越大,春希就越满意
然而由于Pi的魔改,一个键被敲下后,该键和所有音高或音色小于它的键都会坏掉(坏掉即不能再被敲击)
Pi想知道在这种情况下,和纱能弹琴的最大春希度之和
输入描述:
第一行一个数,为按键个数 N
接下来 N 行每行三个数,分别表示第 i 个键的音高、音色、春希度
输出描述:
一行一个数,为最大的春希度和
备注:
90% N≤105N\leq 10^5N≤105
100% N≤106N\leq 10^6N≤106, 输入中所有数均为正整数且 ≤108\leq 10^8≤108 emm这题正解树状数组???(但是我永远喜欢线段树并且永远讨厌离散化所以就用动态开点线段树写了qvq
最简单的动态开点线段树单点修改区间查值操作
改到最后还是90pts emmm线段树的常数还是大了而且1000000乘上logINF也不太遭得住
注意的是那个根一开始是取0的emmmm
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <cstring>
#define int long long
using namespace std; const int maxn=;
const int INF=; struct node{
int w;
signed son[];
}tr[maxn<<]; struct qvq{
int x,y,w;
}a[maxn];
inline int max(int x,int y) {
return x>y?x:y;
} inline bool cmp(qvq x,qvq y) {
if (x.x==y.x) return x.y<y.y;
return x.x<y.x;
} int cnt;
inline void add(signed &now,int l,int r,int loc,int w) {
if (!now) now=++cnt;
tr[now].w=max(w,tr[now].w);
if (l==r) return;
int mid=l+r>>;
if (loc<=mid) add(tr[now].son[],l,mid,loc,w);
if (mid+<=loc) add(tr[now].son[],mid+,r,loc,w);
} inline int query(signed now,int l,int r,int x,int y) {
if (!now) return ;
if (x<=l && r<=y) return tr[now].w;
int ans=,mid=l+r>>;
if (x<=mid) ans=max(ans,query(tr[now].son[],l,mid,x,y));
if (mid+<=y) ans=max(ans,query(tr[now].son[],mid+,r,x,y));
return ans;
} signed main(){
int n;
scanf("%lld",&n);
for (int i=;i<=n;i++)
scanf("%lld%lld%lld",&a[i].x,&a[i].y,&a[i].w);
sort(a+,a+n+,cmp);
int ans=;
for (int i=;i<=n;i++) {
signed rt=;
if (i>) rt=;
int val=query(rt,,INF,,a[i].y)+a[i].w;
ans=max(ans,val);
add(rt,,INF,a[i].y,val);
}
printf("%lld",ans);
}
牛客周赛11TG B-弹钢琴的更多相关文章
- 牛客OI周赛9-提高组题目记录
牛客OI周赛9-提高组题目记录 昨天晚上做了这一套比赛,觉得题目质量挺高,而且有一些非常有趣而且非常清奇的脑回路在里边,于是记录在此. T1: 扫雷 题目链接 设 \(f_i\) 表示扫到第 \(i\ ...
- 牛客OI周赛8-提高组A-用水填坑
牛客OI周赛8-提高组A-用水填坑 题目 链接: https://ac.nowcoder.com/acm/contest/403/A 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制: ...
- 栈的压入、弹出顺序 牛客网 剑指Offer
栈的压入.弹出顺序 牛客网 剑指Offer 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是 ...
- 牛客OI周赛7-提高组 A 小睿睿的等式
链接:https://ac.nowcoder.com/acm/contest/371/A来源:牛客网 小睿睿在游戏开始时有n根火柴棒,他想知道能摆成形如“A+B=n”的等式且使用的火柴棒数也恰好等于n ...
- 牛客OI周赛7-提高组 B小睿睿的询问(ST打表)
链接:https://ac.nowcoder.com/acm/contest/371/B来源:牛客网 小睿睿的n个妹纸排成一排,每个妹纸有一个颜值val[i].有m个询问,对于每一个询问,小睿睿想知道 ...
- 牛客OI周赛7-普及组 解题报告
出题人好评. 评测机差评. A 救救喵咪 二位偏序.如果数据范围大的话直接树状数组,不过才1000就\(O(n^2)\)暴力就ok了. #include <bits/stdc++.h> s ...
- 牛客OI周赛2-提高组
A.游戏 链接:https://www.nowcoder.com/acm/contest/210/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语 ...
- 牛客OI周赛10-普及组-A眼花缭乱的街市-(加速+二分)
https://ac.nowcoder.com/acm/contest/901/A 很简单的一道题,全场只有20+AC,卡时间.新学了cin加速语法和数组二分查找的函数调用. 知道有个读写挂,可以加速 ...
- 牛客OI周赛11-普及组 B Game with numbers (数学,预处理真因子)
链接:https://ac.nowcoder.com/acm/contest/942/B 来源:牛客网 Game with numbers 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C+ ...
随机推荐
- php基础 php 全局变量
$_GET ----->get传送方式 $_POST ----->post传送方式 $_REQUEST ----->可以接收到get和post两种方式的值 $GLOBALS ---- ...
- 操作系统OS - Zip Bomb
42.zip - A 42 kb zip file that contains 4.5 Petabytes of uncompressed data.
- Weka算法算法翻译(部分)
目录 Weka算法翻译(部分) 1. 属性选择算法(select attributes) 1.1 属性评估方法 1.2 搜索方法 2. 分类算法 2.1 贝叶斯算法 2.2 Functions 2.3 ...
- HTML5中改变了哪些东西?
HTML5 推出的理由 想要把目前web上存在的各种问题一并解决 Web浏览器之间的兼容性很低 文档结构不够明确 Web应用程序的功能受到了限制 HTML5重新定义了浏览器的统一标准 HTML5 与 ...
- [转]No configuration found for the specified action 原因及解决方案
转自 报错内容 警告: No configuration found for the specified action: 'login' in namespace: ''. Form action d ...
- STM32的程序升级
IAP基础参考http://www.eeworld.com.cn/mcu/2018/ic-news112042038.html https://blog.csdn.net/tq384998430/ar ...
- get方法和load方法的区别
get方法的特点 get方法采用的是立即检索策略(查询):执行到这行的时候,马上发送SQL查询 get方法查询后返回的是真实对象的本身 load方法的特点 load方法采用的是延 ...
- redis小功能大用处-bitmaps
- vs Qt,运行后,中文字符显示乱码
方法一: //在头文件前面加上下面几行代码 #pragma execution_character_set("utf-8") 方法二: //直接中文前面加u8 setWindows ...
- 郁闷的 IE6/7/8 所遇兼容问题
IE6,7只支持inline元素设置为inline-block,但不支持block元素转换成inline-block,所以非inline元素在IE6,7下要转换成inline-block,需先转换成i ...