首页 > 其他分享 >P7424 [THUPC2017] 天天爱射击

P7424 [THUPC2017] 天天爱射击

时间:2023-08-26 16:24:54浏览次数:46  
标签:THUPC2017 P7424 ll tr mid pos 射击 jgt find

传送门

我们发现,考虑每个子弹击碎哪些木板是不现实的,所以我们要转换问题:考虑每个木板被哪个子弹击碎

考虑可持久化线段树,转换问题成求区间\(l\sim r\)的第s早发射的子弹,模板题

上代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll N=2e5+50,M=2e5;
ll n,m;
ll x1[N],x2[N],s[N];
struct jgt
{
	ll pos,ti;
}zd[N];
bool cmp(jgt t1,jgt t2)
{
	return t1.pos<t2.pos;
}
struct jgt1
{
	ll l,r,gs;
}tr[N*20];
ll rt[N],tot;
ll ans[N],sr[N];
void add(ll &now,ll last,ll l,ll r,ll x)
{
	now=++tot;
	tr[now]=tr[last];
	tr[now].gs++;
	if(l==r) return ;
	ll mid=(l+r)>>1;
	if(x<=mid) add(tr[now].l,tr[last].l,l,mid,x);
	else add(tr[now].r,tr[last].r,mid+1,r,x);
}
void find(ll now,ll last,ll l,ll r,ll x)
{
	if(l==r)
	{
		ans[l]++;
		return ;
	}
	if(tr[now].gs-tr[last].gs<x) return;
	ll mid=(l+r)/2;
	ll tzy=tr[tr[now].l].gs-tr[tr[last].l].gs;
	if(tzy>=x) find(tr[now].l,tr[last].l,l,mid,x);
	else find(tr[now].r,tr[last].r,mid+1,r,x-tzy);
}
int main()
{
	scanf("%lld %lld",&n,&m);
	for(ll i=1;i<=n;i++)
	scanf("%lld %lld %lld",&x1[i],&x2[i],&s[i]);
	for(ll i=1;i<=m;i++)
	{
		scanf("%lld",&zd[i].pos);
		zd[i].ti=i;
	}
	sort(zd+1,zd+m+1,cmp);
	for(ll i=1;i<=m;i++)
	add(rt[i],rt[i-1],1,m,zd[i].ti);
	ll l,r,mid,no;
	for(ll i=1;i<=n;i++)
	{
		l=0,r=m;
		while(l<r)
		{
			mid=(l+r+1)/2;
			if(zd[mid].pos<=x2[i]) l=mid;
			else r=mid-1;
		}
		no=l;
		l=0,r=m;
		while(l<r)
		{
			mid=(l+r+1)/2;
			if(zd[mid].pos>=x1[i]) r=mid-1;
			else l=mid;
		}
		find(rt[no],rt[l],1,m,s[i]);
	}
	for(ll i=1;i<=m;i++)
	printf("%lld\n",ans[i]);
	return 0;
}

标签:THUPC2017,P7424,ll,tr,mid,pos,射击,jgt,find
From: https://www.cnblogs.com/pengchujie/p/17658955.html

相关文章

  • 射击比赛
    1.题目给定一个射击比赛成绩单包含多个选手若干次射击的成绩分数请对每个选手按其最高三个分数之和进行降序排名输出降序排名后的选手ID序列条件如下:一个选手可以有多个射击成绩的分数且次序不固定如果一个选手成绩小于三个则认为选手的所有成绩无效排名忽略该选手......
  • Unreal5 第三人称射击游戏 角色基础制作2
    接上一篇Unreal5第三人称射击游戏角色基础制作1角色蹲伏效果上面是需要的操作映射,蹲伏实现,首先要开启相应功能,你需要在角色移动组件上面开启可蹲伏蹲伏还有一些其它设置,比如蹲下角色高度,蹲下以后行走的速度中英文截图这里我设置的移动速度,蹲伏时可以走出平台,就为了防止在物体......
  • mac太空射击游戏:Nova Drift (新星漂移)中文版
    NovaDrift是一款激动人心的太空射击游戏。NovaDriftMac整合了现代独立游戏风格和游戏历史上最深的根源。它不仅具有时尚和性感的外观,而且具有平稳的控制功能。玩家控制着一艘不断开发的生物机械船,面对敌人的大量奇怪而致命的疲劳,将垂死的星星驱逐出空隙。NovaDriftMac游戏介......
  • 使用python完成一个射击类游戏“小黄人保卫战”
    1.项目开发环境下载Python且保证能够正常工作,为了能用Python来写一个游戏,需要安装PyGame。PyGame是一个Python的库,能够让我们容易的写出一个游戏。它提供的功能包括图片处理和声音重放的功能,并且它们能很容易的整合进你的游戏里。2.项目功能介绍通过设计一款塔防游戏“小黄......
  • PAT Basic 1082. 射击比赛
    PATBasic1082.射击比赛1.题目描述:本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军;谁差得最远,谁就是菜鸟。本题给出一系列弹洞的平面坐标(x,y),请你编写程序找出冠军和菜鸟。我们假设靶心在原点(0,0)。2.输入格式:输入在第一行中给出一个正整数N(≤10......
  • 自己早期做的一个基于j2me的飞行射击类游戏
    早期的代码,MVC思想大小:52.3KB大小:47.6KB1945.rar(431.3KB)下载次数:19Game6.rar(192.9KB)下载次数:16MapTest.rar(187.9KB)下载次数:15查看图片附件......
  • 使用unity构建射击小游戏
    使用unity构建射击小游戏成果图参考例程www.manning.com/hocking问题汇总1、renderer.material方法过时换成使用this.GetComponent()参考网址:https......
  • 耗资百万的TPS第三人称射击『赛博朋克』游戏,免费开源啦!下载攻略奉上
    Cocos引擎最近开源了《赛博朋克》游戏源码,这是一个TPS第三人称视射击游戏。项目包含13W行源代码,50W外包美术资源,并且它演示了CocosCreator引擎最新的渲染能力。喜欢3D......
  • 耗资百万的TPS第三人称射击『赛博朋克』游戏,免费开源啦!下载攻略奉上
    Cocos引擎最近开源了《赛博朋克》游戏源码,这是一个TPS第三人称视射击游戏。项目包含13W行源代码,50W外包美术资源,并且它演示了CocosCreator引擎最新的渲染能力。喜欢3D......
  • 噩梦系列篇之Player之激光制作及射击完成
    下面完成player的射击功能。该功能设定为自动开枪,也就是用计时器来开枪。。。。首先给player加入一个脚本Gunshoot如图:然后要给player在射击的时候加入光效,很简单,在枪口的位......