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. Spring Boot数据访问之多数据源配置及数据源动态切换

    如果一个数据库数据量过大,考虑到分库分表和读写分离需要动态的切换到相应的数据库进行相关操作,这样就会有多个数据源.对于一个数据源的配置在Spring Boot数据访问之数据源自动配置 - 池塘里洗澡的 ...

  2. 手撸一个springsecurity,了解一下security原理

    手撸一个springsecurity,了解一下security原理 转载自:www.javaman.cn 手撸一个springsecurity,了解一下security原理 今天手撸一个简易版本的sp ...

  3. linux历史命令审计

    一.添加历史命令记录 1.首先在/etc/profile中添加 export HISTORY_FILE=/var/log/Command/Command.log export PROMPT_COMMA ...

  4. vue中按需引入Element-ui

    安装 1.安装element-ui:npm i element-ui -S. 2.安装babel-plugin-component:npm install babel-plugin-component ...

  5. excel写入数值型内容

    一开始的想法是设置单元格格式为数值型 XSSFDataFormat format= (XSSFDataFormat) workbook.createDataFormat(); CellStyle cs ...

  6. web渗透绕过

    ////目录: 403 IP地址绕过与文件名绕过 登录框绕过 SQL注入绕过 文件上传绕过 RCE绕过 403 IP地址绕过与文件名绕过 X-Forwarded-For:127.0.0.1 X-For ...

  7. BI工具做数据可视化项目频频失败的原因

    现如今数据可视化可谓是非常之火,随着硬件价格的一降再降,仿佛做数据可视化项目,你没有数据大屏,你就没有逼格.理想很丰满,现实很骨感,并不是每一个数据可视化项目都能够成功.数据可视化项目的进行,无外乎是 ...

  8. Spark on Yarn出现hadoop.compression.lzo.LzoCodec not found问题发现及解决

    问题描述: spark.SparkContext: Created broadcast 0 from textFile at WordCount.scala:37 Exception in threa ...

  9. 019 Linux tcpdump 抓包案例入门可真简单啊?

    目录 1 tcpdump 是什么? 2 tcpdump 常用命令参数 3 tcpdump 抓包wss,配合Wireshark分析 4 tcpdump 抓包白度,配合Wireshark分析) 5 tcp ...

  10. omnet++:cMessage、cSimpleModule、cGate

    cMessage Message可以被调度(self-message).取消.从一个Gate发送出去.直接发给另一个module:所有以上,都是通过cSimpleModule来实现的. Message ...