首页 > 其他分享 >E. Tracking Segments

E. Tracking Segments

时间:2024-07-13 10:30:44浏览次数:8  
标签:Tracking int Segments cin while length eles include

链接

https://codeforces.com/problemset/problem/1843/E

题面

思路

二分加树状数组。关键点在于看出来单点修改和区间查询,然后离线+二分:令l=1(1次操作),r=q(最多q次操作)。二分判断能不能行。
以及树状数组的板子要记得。

代码

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
#include<vector>
#include<algorithm>
#include<math.h>
#include<sstream>
#include<string>
#include<string.h>
#include<iomanip>
#include<stdlib.h>
#include<map>
#include<queue>
#include<limits.h>
#include<climits>
#include<fstream>
#include<stack>
#define IOS ios::sync_with_stdio(false), cin.tie(0) ,cout.tie(0)
using namespace std;
#define int long long
const int N = 1e5 + 10;

struct ele
{
	int begin, end;
	int length;
}eles[N];
bool cmp(ele a, ele b) { return a.length < b.length; }
int lowbit(int x) { return x & (-x); }
int a[N];
void update(int x)
{
	while (x < N)
	{
		a[x]++;
		x += lowbit(x);
	}
}
int n, m;
int sum(int x)
{
	int ans = 0;
	while (x > 0)
	{
		ans += a[x];
		x -= lowbit(x);
	}
	return ans;
}
vector<int>vt;
bool check(int nm)
{
	memset(a, 0, sizeof(a));
	for (int i = 1; i <= nm; i++)
	{
		update(vt[i]);
	}
	bool fa = false;
	for (int i = 1; i <= m and !fa; i++)
	{
		int xnoe = sum(eles[i].end) - sum(eles[i].begin - 1);
		if (xnoe>= eles[i].length / 2 + 1)fa = true;
	}
	return fa;

}


signed main()
{
	IOS;
	int t; cin >> t;
	while (t--)
	{
		vt.clear();
		vt.push_back(0);
		cin >> n >> m;
		for (int i = 1; i <= m; i++)
		{
			int l; int r;
			cin >> l >> r;
			eles[i].begin = l, eles[i].end = r;
			eles[i].length = r - l + 1;
		}
		int q; cin >> q;
		int x;
		for (int i = 0; i < q; i++) { cin >> x; vt.push_back(x); }
		int l = 1, r = q;
		while (l < r)
		{
			int m = (l + r ) / 2;
			if (check(m))r = m;
			else l = m + 1;
		}
		if (r == q and !check(r))cout << -1;
		else cout << r;
		cout << '\n';

		


	}

	return 0;
}

标签:Tracking,int,Segments,cin,while,length,eles,include
From: https://www.cnblogs.com/zzzsacmblog/p/18299744

相关文章

  • CF 1968 F. Equal XOR Segments (*1800) 思维
    CF1968F.EqualXORSegments(*1800)思维题意:给你一个长度为\(n\)的数组,如何可以把数组分成\(k(k>1)\)组,并且使得每组的异或和相等,那么这个数组就是完美的。现在给你\(q\)组询问,每次给你\(l,r\)。请你判断\(a_l\)到\(a_r\)之间是否是完美的。思路:对于每次询问......
  • WPF Path Data PathGeometry PathFigure Segments BezierSegment,LineSegment,ArcSeg
     BezierSegment//BezierCurveusingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows;usingSystem.Windows.Controls;usingSystem.Windows.Data;usingSystem.Windows.Documen......
  • Sql数据库利用linkserver和 CT[CHANGE_TRACKING]实现发布订阅
    源服务器初始化同步数据表SELECT*INTO【用于同步数据的表名】FROM( SELECTtop0 CT.SYS_CHANGE_VERSION, CT.SYS_CHANGE_OPERATION, CT.【同步数据表的主键ID】 FROMCHANGETABLE(CHANGES源数据表名,0)ASCT)t创建获取同步数据存储......
  • Intensity Segments问题
    https://github.com/zongzw/intensity-segmentIntensitySegments问题,是一个动态规划问题,考察的是对数据结构的掌握程度,从各种不同的数据结构中选择适合问题的的那个。问题到代码的转化能力,如何使用计算机语言描述数据动态变化的过程。以上链接中,使用两种语言golang和javas......
  • CF1961E Turtle and Intersected Segments 题解
    题目链接点击打开链接题目解法不是,我这咋不会做/fn边数很多的最小生成树有一个方法是\(boruvka\),但这个处理完全图的比较方便另一个方法是用到一个\(trick\):连出的图中的环,可以删去最长边扫描线是容易想到的,主要是如何把连的边数缩减到合理的范围内考虑扫描线到当前时刻......
  • [Paper Reading] MOTR: End-to-End Multiple-Object Tracking with Transformer
    MOTR:End-to-EndMultiple-ObjectTrackingwithTransformerlink时间:22.07机构:MegviiTL;DR传统MOT通过motion与appearance来建模,有复杂的后处理难以E2E。本文基于DETR设计出MOTR算法,通过引入trackquery来建模被追踪物体。效果上超过同期方法,TrackFormer/TransTrack。Meth......
  • CF1843E Tracking Segments
    题目链接:https://www.luogu.com.cn/problem/CF1843E思路:题目要求至少第几次修改后满足给定的一个区间是美丽区间.我们发现修改操作是有单调性的,随着修改次数的增加,那么满足的美丽区间数量一定会保持不变或增多.因此我们选择二分答案,二分修改次数.二分答案的check函数就根......
  • WPF Path Geometry PathFigureCollection PathFigure PathFigure.Segments PolyQuadra
    <Windowx:Class="WpfApp118.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft......
  • [SDCPC2023] Colorful Segments 线段树转移DP
    Codeforces链接​  洛谷题目链接#[SDCPC2023]ColorfulSegments##题面翻译**【题目描述】**考虑数轴上的$n$条线段,其中第$i$条线段的左端点为$l_i$,右端点为$r_i$。每一条线段都被涂上了颜色,其中第$i$条线段的颜色为$c_i$($0\lec_i\le1$)。颜色共有两种,$c_i......
  • F. Equal XOR Segments
    原题链接题解1.如果能分成偶数个区间,那么一定能分为两个区间2.如果能分为奇数个区间,那么一定能分为三个区间3.能分为两个区间,说明区间异或和为\(0\)4.能分为三个区间,这三个区间分别为区间\(a,b,c\),则\(ab\)区间异或和为零,\(bc\)区间异或和为零code#include<bits/std......