P6619-[省选联考2020A/B卷]冰火战士【树状数组二分】

正题

题目链接:https://www.luogu.com.cn/problem/P6619


题目大意

有火系战士和冰系战士有一个温度和一个战斗力,每次加入或删除一个战士,要求一个最大的kkk使得温度不低于kkk的火系战士战斗力和温度不高于kkk的冰系战士战斗力和的最小值最大。


解题思路

不考虑kkk的话,对于这个答案很好求,我们只要求一个位置使得前面减去后面的和最小即可。这个可用树状数组上二分即可求出其中位置。考虑如何求最大的kkk,我们就是要求该位置开始后面的第一个火系战士即可,定义它的前面一个位置的前面有www个火系战士,也就是求第w+1w+1w+1个,也可以用树状数组上二分解决。

时间复杂度O(nlog⁡n)O(n\log n)O(nlogn)


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define lowbit(x) (x&-x)
using namespace std;
const int N=2e6+10;
int n,cnt,op[N],t[N],x[N],y[N];
int T,M,b[N],ti[N],tf[N],tn[N],sf; 
void Change(int x,int ice,int fire,int p){while(x<=M){ti[x]+=ice;tf[x]+=fire;tn[x]+=p;x+=lowbit(x);}sf+=fire;return;
}
int Query(int x,int ice,int fire,int p){int ans=0;while(x){ans+=ice*ti[x]+fire*tf[x]+tn[x]*p;x-=lowbit(x);}return ans;
}
int Ask1(){int zf=0,zi=0,l=1,r=M;while(l<r){int mid=(l+r)>>1;if(zi+ti[mid]>sf-zf-tf[mid])r=mid;else l=mid+1,zi+=ti[mid],zf+=tf[mid];}return l;
}
int Ask2(int x){int l=1,r=M,sum=0;while(l<r){int mid=(l+r)>>1;if(tn[mid]+sum>=x)r=mid;else l=mid+1,sum+=tn[mid];}return l;
}
int Calc(int x)
{return min(Query(x,1,0,0),sf-Query(x-1,0,1,0));} 
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d%d",&op[i],&t[i]);if(op[i]==1){scanf("%d%d",&x[i],&y[i]);b[++cnt]=x[i];}}T=(int)log(n)/log(2)+1;M=(1<<T);sort(b+1,b+1+cnt);cnt=unique(b+1,b+1+cnt)-b-1;for(int i=1;i<=n;i++){if(op[i]==1){ x[i]=lower_bound(b+1,b+1+cnt,x[i])-b;Change(x[i],(!t[i])*y[i],t[i]*y[i],t[i]);}else{int k=t[i];Change(x[k],-(!t[k])*y[k],-t[k]*y[k],-t[k]);}int a1=Ask1();a1=Query(a1-1,0,0,1);int b1=Calc(a1=Ask2(a1+1));if(!b1)printf("Peace\n");else printf("%d %d\n",b[a1],2*b1);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数论】分数拆分

分数拆分 题目大意&#xff1a; 给出一个数k&#xff0c;问满足1/k1/x1/y且x>y的x,y有多少对 原题&#xff1a; 解题思路&#xff1a; 首先1k1x1y\frac{1}{k}\frac{1}{x}\frac{1}{y}k1​x1​y1​,变式为1k−1y1x\frac{1}{k}-\frac{1}{y}\frac{1}{x}k1​−y1​x1​,然后再…

.NET Core Community 第三个千星项目诞生:爬虫 DotnetSpider

DotnetSpider 至力于打造一个轻量化、高效率、易开发、可管理的一体化爬虫框架。它的核心要素是URL调度、基本的网页内容下载器、基于爬虫实体类的爬虫实现模式、常用数据库的支持、多线程的支持、状态的监控、运行日志、网页端管理。DotnetSpider 具有相当高的可定制性&#x…

Wannafly 挑战赛27 题解

Wannafly 挑战赛27 题目连接 https://www.nowcoder.com/acm/contest/215#question A.灰魔法师 题目 题解 考虑到可能的完全平方数只有400400400多个,因此对于每种数,直接暴力枚举所有的完全平方数计算一下就可以了. 代码 #include <iostream> #define int long lon…

【开源】OSharpNS,轻量级.net core快速开发框架发布

OSharpNS简介OSharp Framework with .NetStandard2.0&#xff08;OSharpNS&#xff09;是OSharp的以.NetStandard2.0为目标框架&#xff0c;在AspNetCore的现有组件 Microsoft.Extensions.DependencyInjection&#xff0c;Microsoft.Extensions.Configuration&#xff0c;Micro…

ATcoder-Replace Digits【线段树】

正题 题目链接:https://atcoder.jp/contests/abl 题目大意 nnn个数字开始全是111&#xff0c;要求支持 修改一个区间为一个数字&#xff08;是1∼91\sim 91∼9的数&#xff09;求所有数字串起来%998244353\%998244353%998244353 解题思路 其实就是第iii个数字乘上10i10^i10i…

【模拟】字符串展开

字符串展开 题目大意&#xff1a; 一串缩写的字符串&#xff0c;将它缩写前的输出来&#xff08;详情见原题&#xff09; 原题 解题思路&#xff1a; 直接模拟每一个字符即可 代码&#xff1a; #include<cstdio> #include<string> #include<cstring> #…

2018-2019 ACM—ICPC SEERC 题解

2018 - 2019 SEERC 题解 比赛发出来太新了,网上根本就搜不到题解,补题补的太难受了. 在这里分享一篇我自己写的题解,也方便别人补题. 题目链接 http://codeforces.com/gym/101964/attachments/download/7814/seerc-2018.pdf A.Numbers 不留坑,这题不会. B.Broken Watch 题解…

P6623-[省选联考2020A卷]树【Trie,树上启发式合并】

正题 题目链接:https://www.luogu.com.cn/problem/P6623 题目大意 一棵树&#xff0c;每个节点有一个权值valival_ivali​&#xff0c;定义disi,jdis_{i,j}disi,j​表示iii到jjj的距离。 一个节点xxx的权值定义为该节点子树中的每个节点yyy的disx,yvaljdis_{x,y}val_{j}disx…

【DP】过桥

过桥 题目大意&#xff1a; 有n个人要过一条桥&#xff0c;每个人都有自己的过桥时间&#xff0c;一条桥同时只能有2个人过&#xff08;过桥时间求较慢的一人&#xff09;&#xff0c;且要有人拿着手电筒才能过&#xff0c;只有一个手电筒&#xff0c;且不能扔手电筒&#xf…

.NET Core完成向RyuJIT的迁移

.NET Core CLR团队宣布&#xff0c;他们的.NET Core平台现在已经是完全基于其下一代即时编译器RyuJIT。有人可能不知道&#xff0c;在.NET Core中&#xff0c;编译器&#xff08;Roslyn&#xff09;会把C#代码编译成CIL&#xff08;公共中间语言&#xff09;字节码。接下来&…

P3166-[CQOI2014]数三角形【GCD】

正题 题目链接:https://www.luogu.com.cn/problem/P3166 题目大意 求一个N∗MN*MN∗M的网格上有多少个三角形。 解题思路 考虑减去共线的情况&#xff0c;我们分为两种情况。一是平行于坐标轴的&#xff0c;这个很好算。二是倾斜的&#xff0c;我们考虑如何计算斜下角的。 …

【DP】【BFS】迷之阶梯

迷之阶梯 题目大意&#xff1a; 有n层阶梯&#xff0c;如果上面一层离这一层只有1个单位高度&#xff0c;就可以直接上去&#xff0c;也可以下去一层&#xff0c;当下去k层时&#xff0c;可以向上飞2k{2}^{k}2k个单位高度&#xff0c;当然要找到一个小于等于这个高度的阶梯落…

UVA10601 Cubes - 波利亚定理

Cubes 题意 给出121212根长度相等的木棒,颜色最多有666种,问能构成的本质不同的正方体数量. 题解 根据波利亚定理公式: 设X是元素集合,G是X的置换群,{u1,u2,...,uk}\{u_1,u_2,...,u_k\}{u1​,u2​,...,uk​}是kkk种颜色的集合,CCC是XXX的任意着色集.这时,针对各颜色的数目的…

COMCMS_CORE 起步篇,如何运行和部署

前言&#xff1a;关于最近开源后&#xff0c;不少朋友问&#xff0c;怎么我下载下来&#xff0c;运行不了。或者怎么没有左边菜单。货不对板&#xff1f;还是我吃了数据&#xff1f;感言&#xff1a;开源不容易&#xff0c;更不容易的是&#xff0c;明明毫无保留&#xff0c;还…

P4313-文理分科【最小割】

正题 题目链接:https://www.luogu.com.cn/problem/P4313 题目大意 有n∗mn*mn∗m个人&#xff0c;第(i,j)(i,j)(i,j)选择文科就可以获得arti,jart_{i,j}arti,j​的价值&#xff0c;选择理科就可以获得scii,jsci_{i,j}scii,j​的价值。如果一个选择文科的人周围都选择了文科&a…

初一模拟赛总结(3.30)

成绩&#xff1a; rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3T4T4T4111lyflyflyf360360360100100100100100100606060100100100222wjjwjjwjj170170170100100100707070000000333fyfyfy167167167100100100505050000171717444hkyhkyhky11011011010010010000000010…

UVALive7670 Asa's Chess Problem,上下界费用流,另类解法

Asa’s Chess Problem 先阐述一下带上下界的边怎么建. 带上下界的建图方法 设我要建一条边(u→v)(u\rightarrow v)(u→v),流量上界为upupup,下界为downdowndown,费用为costcostcost.则我需要建两条边. 为保证一定会有downdowndown的流量流过去,我们可以建立一条u→vu \right…

ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了

引言在使用asp.net core 进行api开发完成后&#xff0c;书写api说明文档对于程序员来说想必是件很痛苦的事情吧&#xff0c;但文档又必须写&#xff0c;而且文档的格式如果没有具体要求的话&#xff0c;最终完成的文档则完全取决于开发者的心情。或者详细点&#xff0c;或者简单…

P3201-[HNOI2009]梦幻布丁【启发式合并,链表】

正题 题目链接:https://www.luogu.com.cn/problem/P3201 题目大意 开始有nnn个布丁&#xff0c;第iii个是cic_ici​颜色的。 每次有操作 将所有颜色为xxx的布丁变为颜色yyy的。询问有多少个布丁颜色段。 解题思路 对于每次修改&#xff0c;我们可以考虑启发式合并&#xff…

【贪心】奶酪厂(jzoj 1285)

奶酪厂 题目大意&#xff1a; 有一个奶酪厂&#xff0c;每个星期&#xff08;共n个星期&#xff09;都有一定的单位生产成本和客户需求量&#xff0c;把奶酪保存一个星期每单位要s元&#xff0c;问一共花的钱最少是多少 Sample Input 4 5 88 200 89 400 97 300 91 500Sampl…