首页 > 其他分享 >CSP 模拟 30

CSP 模拟 30

时间:2024-09-15 11:02:55浏览次数:8  
标签:num int sum 30 mid 妈妈 tag CSP 模拟

妈妈妈妈妈妈妈妈妈妈妈妈妈妈妈妈

#include<bits/stdc++.h>
#define int long long
#define ls p<<1
#define rs p<<1|1
#define int long long
typedef long long ll;
typedef unsigned long long ull;
inline int read(){char ch=getchar();int x=0,f=1;for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;for(;ch>='0'&&ch<='9';ch=getchar())x=(x<<3)+(x<<1)+(ch^48);return x*f;}
const int N=2e5+10;
int n,m,c[N],now;
__int128 num[N],sum[N];
struct MT{int a;__int128 b;}w[N];
inline bool cmp(MT a,MT b){if(a.a==b.a)return a.b>b.b;return a.a<b.a;}
struct TREE{
	__int128 num,sum;
	int tag,cl;
}t[N<<2];
inline void update(int p){
	t[p].num=t[ls].num+t[rs].num;
	t[p].sum=t[ls].sum+t[rs].sum;
}
inline void pushdown(int p,int l,int r){
	if(t[p].cl){
		t[ls].num=t[rs].num=t[ls].sum=t[rs].sum=t[ls].tag=t[rs].tag=0;
		t[ls].cl=t[rs].cl=1;
		t[p].cl=0;
	}
	if(t[p].tag){
		int mid=l+r>>1;
		t[ls].num+=t[p].tag*(num[mid]-num[l-1]);
		t[rs].num+=t[p].tag*(num[r]-num[mid]);
		t[ls].sum+=t[p].tag*(sum[mid]-sum[l-1]);
		t[rs].sum+=t[p].tag*(sum[r]-sum[mid]);
		t[ls].tag+=t[p].tag,t[rs].tag+=t[p].tag;
		t[p].tag=0;
	}
}
inline void change(int p,int l,int r,int x){
	if(x>0){
		t[p].num+=(num[r]-num[l-1]);
		t[p].sum+=(sum[r]-sum[l-1]);
		t[p].tag+=x;
	}else{
		t[p].num=t[p].sum=t[p].tag=0;t[p].cl=1;
	}
}
inline int query(int p,int l,int r,int k){
	if(l==r){
		t[p].num-=k,t[p].sum-=w[l].a*k;
		return w[l].a*k;
	}
	pushdown(p,l,r);
	int mid=l+r>>1,res=0;
	if(k<=t[ls].num){
		res=query(ls,l,mid,k);
		update(p);return res;
	}
	res=t[ls].sum+query(rs,mid+1,r,k-t[ls].num);		
	change(ls,l,mid,-1);
	update(p);return res;
}
signed main(){
	freopen("a.in","r",stdin);freopen("a.out","w",stdout);
	std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);
	n=read(),m=read();for(int i=1;i<=n;++i)c[i]=read();
	for(int i=1;i<=m;++i){
		w[i].a=read(),w[i].b=read();
		if(w[i].b==-1)w[i].b=1e12;
	}
	std::sort(w+1,w+m+1,cmp);
	for(int i=1;i<=m;++i){
		num[i]=num[i-1]+w[i].b;
		sum[i]=sum[i-1]+w[i].a*w[i].b;
		if(w[i].b==1e12){m=i;break;}
	}
	// for(int i=1;i<=m;++i)std::cout<<(ll)num[i]<<' ';std::cout<<'\n';
	// for(int i=1;i<=m;++i)std::cout<<(ll)sum[i]<<' ';std::cout<<'\n';
	int ans=0;
	for(int i=1;i<=n;++i){
		change(1,1,m,1);
		ans+=query(1,1,m,c[i]);
		// std::cout<<ans<<'\n';
		// std::cout<<(ll)t[2].num<<(ll)t[2].sum<<'\n';
	}
	std::cout<<ans<<'\n';
}

标签:num,int,sum,30,mid,妈妈,tag,CSP,模拟
From: https://www.cnblogs.com/Ishar-zdl/p/18415064

相关文章

  • 51单片机-DS1302(实时时钟+可调时钟)(可参考主页上一节内容介绍)
    作者:王开心时间:2024.9.10目的:手撕51main.c#include<REGX52.H>#include"LCD1602.h"#include"DS1302.h"#include"Key.h"#include"Delay.h"#include"Timer0.h"unsignedcharKeyNum,MODE,TimeSetSelect,TimeS......
  • 计算机毕业设计必看必学!! 90030 SSM旅行社网站,原创定制程序, java、PHP、python、小
    摘 要旅游业是一个信息密集型产业,传统的旅游景点门票售卖受到技术和人力的限制,旅行社网站则可以建立景区与游客之间的有效通道,能更好的满足游客便捷旅游的需求。旅行社网站的设计是基于SSM框架、Mysql数据库、JSP技术、Ajax技术的方式设计,该系统实现了个人资料、公共管理(......
  • 【重温童年】基于tkinter模块设计的Q宠大乐斗武器升星模拟器:重温经典,畅享休闲时光
    在快节奏的现代生活中,我们总是在寻找那些能够让我们暂时忘却烦恼,沉浸在简单快乐中的休闲方式。对于许多80后、90后而言,Q宠大乐斗无疑是一款充满回忆的经典网页游戏。它以其独特的宠物养成、战斗系统以及丰富多样的武器系统,吸引了无数玩家的心。今天,就让我们一起重温那段美好的......
  • 【2025】“急救课堂”微信小程序的设计与实现, 在线急救培训与模拟演练、在线急救教育
    博主介绍:  ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W+粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导,我致力于帮助更多学生......
  • linux 模拟题
    一,填空题linux主要是基于各种       来完成各种操作。打印当前所在的位置的命令是       linux的选项是哪两种        当前登录的用户tom,切换至用户家目录        想要使用命令本身的作用       ......
  • 【csp201912-2】回收站选址
    题目背景 开学了,可是校园里堆积了不少垃圾杂物。 热心的同学们纷纷自发前来清理,为学校注入正能量~题目描述通过无人机航拍我们已经知晓了n处尚待清理的垃圾位置,其中第i(1≤i≤n)处的坐标为(x,y),保证所有的坐标均为整数。我们希望在垃圾集中的地方建立些回收站。具体来说,对......
  • 最新免费AI视频工具!生成6秒视频只需30秒!
    MiniMaxAI目前可免费使用MiniMaxVideo:AiTextToVideo目前版本的HailuoAI可以生成分辨率为1280x720、每秒25帧的六秒视频片段。该模型受限于片段短暂的持续时间,但MiniMax承诺将在未来更新中解决这个问题。HailuoAI的新版本已经在开发中,预计将提供更长的片段持续......
  • 信息学奥赛初赛天天练-89-CSP-S2023基础题1-linux常用命令、完全平方数、稀疏图、队列
    PDF文档公众号回复关键字:202409142023CSP-S选择题单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正确选项)1在Linux系统终端中,以下哪个命令用于创建一个新的目录?()AnewdirBmkdirCcreateDmkfold2从0,1,2,3,4中选取4个数字,能组成(......
  • macOS 中 Rosetta 模拟器打开,造成 MLX 框架的错误
    概述背景AppleSilicon(M1,M2芯片)是基于ARM架构的,而老的IntelMac是基于x86_64架构的。Rosetta2是macOS提供的工具,用于在AppleSilicon上模拟运行x86应用程序。某些应用程序(如终端)可能默认通过Rosetta运行为x86架构,而不是ARM原生运行。在安装及编......
  • 9.14 模拟赛
    A.矩形小C有一个\(n\timesn\)的矩阵,每个格子有一个颜色\(a_{i,j}\len\)。给定\(k\),你需要计算出对于所有格子,以这个格子为左上角的最大正方形,满足内部颜色数量不超过\(k\)。\(n\le500\)。枚举左上角\(i,j\),二分正方形的边长,然后用\(|a|\)的复杂度求这个正......