首页 > 其他分享 >1843E - Tracking Segments

1843E - Tracking Segments

时间:2023-07-11 22:36:11浏览次数:47  
标签:Tracking 1843E 段长度 int Segments mid 100005 序列 check

Problem - E - Codeforces

题意是现在有n个0,给你m段序列,然后给你q次操作,每次操作给一个x,把第x个0变成1,问你最少几次操作能出现一段序列里的1的数量大于0的数量,如果不存在,输出-1

对于操作数是一个递增序列。如果第k次操作后正好可行,那么就不用管k+1及以后了。

所以可以使用二分来解决。

一开始在check函数犯了一个错误,当check k时,成功的条件是当前段里的1的数目*2>段长度,而不应该是(当前段里的1的数目>=k&&k*2>段长度)

 

代码

#include<iostream>
#include<cstring>
#define int long long
using namespace std;
int n,m,q;
int b[100005];
int a[100005],e[100005];
struct seg
{
	int l,r;
}c[100005];
inline bool check(int k)
{
	memset(e,0,sizeof(e));
	for(int i=1;i<=k;i++)
		e[a[i]]=1; 
	for(int i=1;i<=n;i++)
		b[i]=b[i-1]+e[i];
	for(int i=1;i<=m;i++)
	{
		int l=c[i].l,r=c[i].r;
		if((b[r]-b[l-1])*2>r-l+1)
		//if(b[r]-b[l-1]>=k&&r-l+1<2*k)错误示例 
			return 1;
	}
	return 0;
}
void solve()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
		cin>>c[i].l>>c[i].r;
	cin>>q;
	for(int i=1;i<=q;i++)
		cin>>a[i];
	int l=1,r=q;
	while(l<r)//log(q)
	{
		int mid=(l+r)>>1;
		if(check(mid))r=mid;
		else l=mid+1;
	}
	if(check(l))
		cout<<l<<endl;
	else cout<<-1<<endl;
}
signed main()
{
	int t;
	cin>>t;
	while(t--)
		solve();
	return 0;
}

 

标签:Tracking,1843E,段长度,int,Segments,mid,100005,序列,check
From: https://www.cnblogs.com/qbning/p/17546115.html

相关文章

  • CF1843E Tracking Segments
    CF1843ETrackingSegmentsVP的时候本来摆烂了,结果快结束的时候想到了做法(没时间敲了qwq)。这里提供一种和已有题解不同的思路。我们发现,对于每个修改,我们可以将该点的值修改为这次修改的时间,未修改的点则赋为\(n+1\)。这样转化后,区间合法的条件就是区间内小于\(n+1\)的值至......
  • CF1843E 二分+前缀和
    题意:给定一个长度为n且均为0的数组,q次单点修改(从0改为1),以及m个基于该数组的区间。规定好区间为:区间内1的个数严格大于0的个数。上述m个区间若存在一个好区间则为合法,问按顺序进行q次单点修改过程中最早出现合法的单次修改编号,若无则输出-1。马后炮思考:对于m个区间,其实际关系......
  • doris 报错: Insert has filtered data in strict mode, tracking url=
    最近使用doris插入数据时,报了如下错误: Inserthasfiltereddatainstrictmode,trackingurl=点击trackingurl的连接地址,可以查看报错具体详情我的程序报错时因为插入的数据长度超过字段长度,所以需要修改对应字段长度。通过命令进行修改即可ALTERTABLEmy_tableMODI......
  • Educational Codeforces Round 4-D. The Union of k-Segments
    原题链接D.TheUnionofk-SegmentstimelimitpertestmemorylimitpertestinputoutputYouaregiven n segmentsonthecoordinateaxis Ox andthenumber k.Thepoint......
  • Codeforces Beta Round #22 (Div. 2 Only)-D. Segments
    原题链接D.SegmentstimelimitpertestmemorylimitpertestinputoutputYouaregiven nInputThefirstlineoftheinputcontainssingleintegernumber n (1 ≤ n ......
  • 【题解】CF193D Two Segments
    题意给定一个\(1\simN\)的排列,在这个排列中选出两段互不重叠的区间,求使选出的元素排序后构成公差为1的等差数列的方案数。选出的两段区间中元素构成的集合相同时视为同一种方案。\(1\leN\le3\times10^5\)。传送门分析如果考虑怎么优化枚举的两个区间的话,发现不太好搞(反正......
  • dba_segments与dba_extents
    好久没写博客了最近在忙的有几点1.RAC+ADG基于阿里云DBFS数据库文件系统,实验训练一周被告知项目内容可能会更改,只剩下ADG容灾。2.挖矿病毒提前防护,客户中毒较多,打了一片片的补丁。3.RAC集群宕机,原因查了两天,发现服务器本身问题,有点无语。4.拆分数据库内容优化及处理,之前没怎......
  • tracking调研
     常用框架有以下三种:      SeparateDetectionandEmbedding(SDE-物体检测,特征提取与物体关联),JOINTDetectionandEmbedding(JDE)(a)Deepsort:SimpleOnlineandRealtimeTrackingwithaDeepAssociationMetricNicolaiWojke,AlexBewley,D......
  • [Algorithm] Disk height (DP + back tracking)
    You'regivenanon-emptyarrayofarrayswhereeachsubarrayholdsthreeintegersandrepresentsadisk.Theseintegersdenoteeachdisk'swidth,depth,......
  • E. Boring Segments (双指针 + 线段树)
    E.BoringSegments(双指针+线段树)题意:给出n条线段的左右端点和权值$l_i$,$r_i$,$w_i$。要求选择一些线段,使得能够从数轴上的1出发,沿着线段走,能够到达m(连通,不是覆盖)。问......