首页 > 其他分享 >2024-03-29

2024-03-29

时间:2024-03-29 21:44:25浏览次数:27  
标签:03 cnt val nums int res tr 29 2024

2024-03-29

LOG

对于小于等于 \(s\) 的数 \(x\),最多被选 \(x\) 次
大于 \(s\) 的数最多被选 \(s\) 次

看所有小于等于 \(s\) 的数字的和加上 \(s\) 乘大于 \(s\) 的数字的个数 这个值是不是大于等于 \(c\times s\) 就行

离散化之后权值线段树维护一下

离散化之后线段树右边界应该是 nums.size()

#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>

#define ls (u<<1)
#define rs (u<<1|1)

using namespace std;

typedef long long ll;

const int N=2e6+10;

int n,m;
ll w[N];

struct Node {
	int l,r;
	ll val,cnt;
}tr[4*N];

struct Query {
	bool typ;
	ll x,y;
}qry[N];

vector<ll> nums;

ll gt(ll x) {
	return lower_bound(nums.begin(),nums.end(),x)-nums.begin();
}

void pushup(int u) {
	tr[u].val=tr[ls].val+tr[rs].val;
	tr[u].cnt=tr[ls].cnt+tr[rs].cnt;
}

void build(int u,int l,int r) {
	tr[u].l=l,tr[u].r=r;
	if(l==r) return;
	int mid=l+r>>1;
	build(ls,l,mid),build(rs,mid+1,r);
}

void update(int u,int x,int k) {
	if(tr[u].l==tr[u].r) {
		tr[u].cnt+=k;
		tr[u].val+=k*nums[x];
		return;
	}
	int mid=(tr[u].l+tr[u].r)>>1;
	if(x<=mid) update(ls,x,k);
	else update(rs,x,k);
	pushup(u);
}

Node query(int u,int l,int r) {
	if(tr[u].l>=l&&tr[u].r<=r) return tr[u];
	int mid=tr[u].l+tr[u].r>>1;
	Node res;
	res.cnt=res.val=0;
	if(l<=mid) {
		Node qrs=query(ls,l,r);
		res.cnt+=qrs.cnt,res.val+=qrs.val;
	}
	if(r>mid) {
		Node qrs=query(rs,l,r);
		res.cnt+=qrs.cnt,res.val+=qrs.val;
	}
	return res;
}

int main() {
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++) {
		char opt[3];
		scanf("%s%lld%lld",opt,&qry[i].x,&qry[i].y);
		nums.push_back(qry[i].y);
		if(*opt=='U') qry[i].typ=false;
		else qry[i].typ=true;
	}
	sort(nums.begin(),nums.end());
	nums.erase(unique(nums.begin(),nums.end()),nums.end());
	build(1,1,nums.size());
	for(int i=1;i<=m;i++) {
		ll x=qry[i].x,y=qry[i].y;
		if(!qry[i].typ) {
			if(w[x]) update(1,gt(w[x]),-1);
			w[x]=y;
			update(1,gt(w[x]),1);
		}
		else {
			if(query(1,1,gt(y)).val+y*query(1,gt(y)+1,nums.size()).cnt>=x*y) puts("TAK");
			else puts("NIE");
		}
	}
	
	return 0;
} 

考试改题

只改了一道

标签:03,cnt,val,nums,int,res,tr,29,2024
From: https://www.cnblogs.com/Orange-Star/p/18104677

相关文章

  • 2024/3/29
    所花时间:1小时代码行:70行博客量:1篇了解到的知识点:对css文件进行编写,并进行以一些了解和学习.navbar{background-color:#333;overflow:hidden;}.navbara{float:left;display:block;color:#f2f2f2;text-align:center;padding:14px20px;......
  • clean maven工程报错: Cannot find JRE '1.8 (1)'. You can specify JRE to run maven
    在双击Maven的clean时,报错:CannotfindJRE'1.8(1)'.YoucanspecifyJREtorunmavengoalsinSettings原因可能是自己之前下载的是JDK17,并且IDEA认为该JDK为默认JDK,而我的Maven项目设置使用的是JDK8,因此报错。解决方案如下:点击File-settingBuild,Execution,Deploy......
  • 20240329
    没想好副标题。上午打了一场NOIP模拟赛,有两道题因为忘了判\(1\)的情况挂了73pts,痛失rk1,最后rk5。然后T4还是把「NOIP2020排水系统」那道题魔改之后的sb题,实际上多打一个DAG上拓扑排序就好了。蚌,下午听线段树与平衡树,但实际上几乎没讲怎么实现,一直在讲题讲题讲......
  • 2024年03月CCF-GESP编程能力等级认证C++编程八级真题解析
    本文收录于专栏《C++等级认证CCF-GESP真题解析》,专栏总目录:点这里。订阅后可阅读专栏内所有文章。一、单选题(每题2分,共30分)第1题为丰富食堂菜谱,炒菜部进行头脑风暴。肉类有鸡肉、牛肉、羊肉、猪肉4种,切法有肉排、肉块、肉末3种,配菜有圆白菜、油菜、豆腐3种,辣度有......
  • 2024年03月CCF-GESP编程能力等级认证C++编程七级真题解析
    本文收录于专栏《C++等级认证CCF-GESP真题解析》,专栏总目录:点这里。订阅后可阅读专栏内所有文章。一、单选题(每题2分,共30分)第1题下列关于排序的说法,正确的是()。A.冒泡排序是最快的排序算法之一。B.快速排序通常是不稳定的。C.最差情况,N个元素做归并排序......
  • 洛谷1803
    P1803凌乱的yyy/线段覆盖-洛谷|计算机科学教育新生态(luogu.com.cn)所需知识:贪心本来还想用dfsbfs搜索来一点一点做的,看到了大佬的思路之后,直接orz了整体思路:因为要想尽可能的多参加比赛,所以越早结束比赛对后面留出来的时间就更多,可以参加更多场比赛,所以直接将每场......
  • 2024年3月29日-UE5-播放特效、自制特效,发射冰球,销毁actor
    打开特效文件夹 选中要添加的特效,然后切换到蓝色子弹的蓝图里,点添加 然后改名为粒子,再创建一个碰撞球体组件 缩放改为0.2 在碰撞球体里面,添加一个碰撞的查询,会打印出发生碰撞的单位 然后返回到主角的蓝图,在创建子弹里,调整下发射点,让主角本身和子弹不重叠 再把球......
  • 2024.4 模拟赛日志
    2024年syzx春季训练1(20240315)https://www.cnblogs.com/caijianhong/p/18076181SS240323(20240323)http://cplusoj.com/d/senior/contest/65fd9320ccaa6dc9eee1e44f[A魔环上的树]计数,数树,平面图三角剖分[B序列舞蹈]斜率相关,数据结构C脱单计划最小费用最大流,曼哈顿距......
  • KubeSphere 社区双周报|2024.03.15-03.29
    KubeSphere社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过commit的贡献者,并对近期重要的PR进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。本次双周报涵盖时间为:2024.03.15-03.29。贡献者名单新晋KubeSpherecontribut......
  • 2024三掌柜赠书活动第十九期:DevOps企业级CI/CD实战
    目录目录前言关于CI/CD企业级CI/CD实战关于《DevOps企业级CI/CD实战》编辑推荐内容简介作者简介图书目录书中前言/序言《DevOps企业级CI/CD实战》全书速览结束语前言作为开发者,对于编程语言并不陌生,随着技术圈的不断进步和发展,越来越多的编程语言诞生和问世。......