luoguP6619 [省选联考 2020 A/B 卷]冰火战士(线段树,二分)

Luogu

题外话1:

LN四个人切D1T2却只有三个人切D1T1

很神必

我是傻逼。

题外话2:

1e6的数据直接io?

这野蛮至极你知道吗。

出题人这是要向全国人民谢罪的。

题解时间

70pts:

求最大的 $ min(presum0[i],sufsum1[i]) $ 。

一个前缀和,一个后缀和。

二分+树状数组可以找到答案。

对于输出最大温度,再二分一次。

$ O( n log ^ {2} n ) $ 。

100pts:

上面两个都改成直接线段树上二分就是一个 $ log $ 。

离散化一下减少常数便于操作。

详情看代码。

虽然洛谷上卡而且考试时没有O2,但是你要相信吸吸艾富用无数选手缴纳的费用购置的8700k的力量(

#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long lint;
template<typename TP>inline void read(TP &tar)
{
TP ret=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){ret=ret*10+(ch-'0');ch=getchar();}
tar=ret*f;
}
namespace RKK
{
const int N=2000011;
struct ques{int t,s,x,v;}q[N];
int lst[N<<1],n;
int qaq;
int find1(int x)
{
int l=1,r=n,m;
while(l<=r)
{
m=l+r>>1;
if(lst[m]==x) return m;
else if(lst[m]<x) l=m+1;
else r=m-1;
}
}
int find0(int x)
{
int ret=n+1,l=1,r=n,m;
while(l<=r)
{
m=l+r>>1;
if(lst[m]>=x) ret=m,r=m-1;
else l=m+1;
}
return ret;
}
int v[N<<2][2];
void edit(int s,int w,int x,int px=1,int pl=0,int pr=n)
{
if(pl==pr){v[px][s]+=w;return;}
int pm=pl+pr>>1;
if(x<=pm) edit(s,w,x,px<<1,pl,pm);
else edit(s,w,x,px<<1|1,pm+1,pr);
v[px][s]=v[px<<1][s]+v[px<<1|1][s];
}
int sa[2],ans,ansi,p[2];
void getans(int px=1,int pl=0,int pr=n)
{
if(pl==pr) return;
int pm=pl+pr>>1;
p[0]=sa[0]+v[px<<1][0],p[1]=sa[1]+v[px<<1|1][1];
int tmp=min(p[0],p[1]);
if(tmp>ans) ans=tmp,ansi=pm+1;
if(p[0]<p[1]) sa[0]+=v[px<<1][0],getans(px<<1|1,pm+1,pr);
else if(p[0]>p[1]) sa[1]+=v[px<<1|1][1],getans(px<<1,pl,pm);
else return;
}
void query(int px=1,int pl=0,int pr=n)
{
if(pl==pr) return;
int pm=pl+pr>>1;
if(pm+1<=ansi) sa[0]+=v[px<<1][0],query(px<<1|1,pm+1,pr);
else
{
p[0]=sa[0]+v[px<<1][0],p[1]=sa[1]+v[px<<1|1][1];
int tmp=min(p[0],p[1]);
if(tmp==ans)
{
ansi=pm+1;
sa[0]+=v[px<<1][0],query(px<<1|1,pm+1,pr);
}else sa[1]+=v[px<<1|1][1],query(px<<1,pl,pm);
}
} int main()
{
read(qaq);for(int i=1;i<=qaq;i++)
{
read(q[i].t),read(q[i].s);
if(q[i].t==1)
{
read(q[i].x),read(q[i].v);
if(q[i].s==1) lst[++n]=q[i].x;
}
}
sort(lst+1,lst+1+n),n=unique(lst+1,lst+1+n)-(lst+1);
int ans1=0,ans2=0;
for(int i=1;i<=qaq;i++)
{
if(q[i].t==1)
{
if(q[i].s==1) q[i].x=find1(q[i].x),edit(1,q[i].v,q[i].x);
else q[i].x=find0(q[i].x),edit(0,q[i].v,q[i].x-1);
}else
{
int j=q[i].s;
if(q[j].s==1) edit(1,-q[j].v,q[j].x);
else edit(0,-q[j].v,q[j].x-1);
}
sa[0]=sa[1]=0,ansi=ans=0;
getans();
sa[0]=sa[1]=0;;
if(ans) query();
if(ans==0) puts("Peace");
else printf("%d %d\n",lst[ansi],ans*2);
}
return 0;
}
}
int main(){return RKK::main();}

luoguP6619 [省选联考 2020 A/B 卷]冰火战士(线段树,二分)的更多相关文章

  1. [省选联考 2020 A/B 卷] 冰火战士

    一.题目 点此看题 二.解法 其实这道题也不是特别难吧 \(......\) 但树状数组上二分是我第一次见. 我们把冰人和火人都按温度排序,那么考虑一个分界线 \(x\) ,问题就是求冰数组 \(x\ ...

  2. 题解 P6622 [省选联考 2020 A/B 卷] 信号传递

    洛谷 P6622 [省选联考 2020 A/B 卷] 信号传递 题解 某次模拟赛的T2,考场上懒得想正解 (其实是不会QAQ), 打了个暴力就骗了\(30pts\) 就火速溜了,参考了一下某位强者的题 ...

  3. luoguP6622 [省选联考 2020 A/B 卷] 信号传递(状压dp)

    luoguP6622 [省选联考 2020 A/B 卷] 信号传递(状压dp) Luogu 题外话: 我可能是傻逼, 但不管我是不是傻逼, 我永远单挑出题人. 题解时间 看数据范围可以确定状压dp. ...

  4. [省选联考 2020 A 卷] 组合数问题

    题意 [省选联考 2020 A 卷] 组合数问题 想法 自己在多项式和数论方面还是太差了,最近写这些题都没多少思路,看完题解才会 首先有这两个柿子 \(k*\dbinom{n}{k} = n*\dbi ...

  5. luoguP6623 [省选联考 2020 A 卷] 树(trie树)

    luoguP6623 [省选联考 2020 A 卷] 树(trie树) Luogu 题外话: ...想不出来啥好说的了. 我认识的人基本都切这道题了. 就我只会10分暴力. 我是傻逼. 题解时间 先不 ...

  6. luoguP6620 [省选联考 2020 A 卷] 组合数问题(斯特林数)

    luoguP6620 [省选联考 2020 A 卷] 组合数问题(斯特林数) Luogu 题外话: LN切这题的人比切T1的多. 我都想到了组合意义乱搞也想到可能用斯特林数为啥还是没做出来... 我怕 ...

  7. luoguP6624 [省选联考 2020 A 卷] 作业题(莫比乌斯反演,矩阵树定理)

    luoguP6624 [省选联考 2020 A 卷] 作业题(莫比乌斯反演,矩阵树定理) Luogu 题外话: Day2一题没切. 我是傻逼. 题解时间 某种意义上说刻在DNA里的柿子,大概是很多人学 ...

  8. [省选联考 2021 A/B 卷] 卡牌游戏

    垃圾福建垫底选手来看看这题. 大家怎么都写带 \(log\) 的. 我来说一个线性做法好了. 那么我们考虑枚举 \(k\) 作为翻转完的最小值. 那么构造出一个满足条件的操作,我们在 \(a_i\) ...

  9. P5283 [十二省联考2019]异或粽子 可持久化01Trie+线段树

    $ \color{#0066ff}{ 题目描述 }$ 小粽是一个喜欢吃粽子的好孩子.今天她在家里自己做起了粽子. 小粽面前有 \(n\) 种互不相同的粽子馅儿,小粽将它们摆放为了一排,并从左至右编号为 ...

随机推荐

  1. Solution -「CF 1380F」Strange Addition

    \(\mathcal{Description}\)   Link.   定义两个数在进行加法时,进位单独作为一位.例如: .   给定一个 \(n\) 为数和 \(m\) 次修改操作,每次修改会修改 ...

  2. v77.01 鸿蒙内核源码分析(消息封装篇) | 剖析LiteIpc(上)进程通讯内容 | 新的一年祝大家生龙活虎 虎虎生威

    百篇博客分析|本篇为:(消息封装篇) | 剖析LiteIpc进程通讯内容 进程通讯相关篇为: v26.08 鸿蒙内核源码分析(自旋锁) | 当立贞节牌坊的好同志 v27.05 鸿蒙内核源码分析(互斥锁 ...

  3. 多图|一文详解Nacos参数!

    Nacos 中的参数有很多,如:命名空间.分组名.服务名.保护阈值.服务路由类型.临时实例等,那这些参数都是什么意思?又该如何设置?接下来我们一起来盘它. 1.命名空间 在 Nacos 中通过命名空间 ...

  4. 反射、反射机制、类加载、Class类专题复习

    一.反射概念 1.反射机制允许程序在执行期借助于ReflectionAPI取得任何类的内部信息(比如成员变量,构造器,成员方法等等),并能操作对象的属性及方法.反射在设计模式和框架底层都会用到. 2. ...

  5. NPM保资源管理工具

    一.简介 什么是NPM NPM全称Node Package Manager,是Node.js包管理工具,是全球最大的模块生态系统,里面所有的模块都是开源免费的:也是Node.js的包管理工具,相当于前 ...

  6. NSSCTF-easyupload2.0

    相对于easyupload3.0,这个easyupload2.0就简单的很多,也可以使用和3.0一样的做法,但是应该还是有别的做法,就比如可以使用phtml这个后缀绕过检测 使用BP抓包修改一下 放包 ...

  7. Clickhouse写入问题汇总

    Clickhouse写入问题汇总 Zookeeper相关 当clickhouse在建表时使用了Replicated引擎族时, 会对zookeeper有非常重的依赖, 这时候就要注意zookeeper集 ...

  8. Smartbi大数据在金融业的应用案例

    我们平时听说的商业智能其实就是BI分析,它是一种提高企业智能化的手段和工具,既可以满足企业发展的需要,而且也可提高企业竞争力.思迈特软件Smartbi作为数据分析系统,受到了不少金融业客户的青睐.今天 ...

  9. 通过ILSpy反编译工具和ilasm修改.NET程序

    文章来源:https://blog.peos.cn/2016/12/26/ilspy-ilasm-ildasm-net.html 金庸群侠传X中,田青文.木婉清.王语嫣的点穴游戏忒难过了,所以上网摸索 ...

  10. 【C#基础概念】函数参数默认值和指定传参和方法参数

    函数参数默认值和指定传参 最近在编写代码时发现介绍C#参数默认值不能像PL/SQL那样直接设置default,网上也没有太多详细的资料,自己琢磨并试验后整理成果如下: C#允许在函数声明部分定义默认值 ...