首页 > 其他分享 >E. Iva & Pav

E. Iva & Pav

时间:2024-05-05 14:11:06浏览次数:20  
标签:二分 return Iva Pav int cin st include

链接:https://codeforces.com/problemset/problem/1878/E
洛谷链接:https://www.luogu.com.cn/problem/CF1878E
知识点:st表+二分(我不知道为什么有的题解说不用二分...反正我的在第11个测试点会TLE)
思路就是一样的,存储区间的位与,然后按照区间查询:st_query来看每个区间符不符合,注意,这里的右边界通过二分而来
为什么可以二分:从左端点到右边:连续区间的位与一定是非升数列,结合位与的性质,所以如果小了就移动右边;
注意这里的二分形式可能和之前有点不一样,注意模拟。
代码:

#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<cmath>
#include<limits.h>
#include<climits>
#include<fstream>
#include<stack>
#include<set>
typedef long long ll;
using namespace std;

const int N = 2e5 + 10;
int n;
ll a[N], dp_min[N][21], dp_and[N][21];
int LOG2[N];
void st_init()
{
	LOG2[0] = -1;
	for (int i = 1; i <= N; i++)LOG2[i] = LOG2[i >> 1] + 1;
	for (int i = 1; i <= n; i++)
	{
		dp_and[i][0] = a[i];
	}
	int p = LOG2[N];
	for (int k = 1; k <= p; k++)
		for (int s = 1; s + (1 << k) <= n + 1; s++)
		{
			dp_and[s][k] = dp_and[s][k - 1] & dp_and[s + (1 << (k - 1))][k - 1];
		}
	return;
}
int st_query(int l, int kp)
{
	if (a[l] < kp)return -1;
	else
	{
		int rr = 0;
		int L = l, R = n;//二分
		if (L == n - 1)//特判
		{
			if ((a[n - 1] & a[n]) >= kp)return n;
			else return n - 1;
		}
		while (L <= R)//二分的第二种形式
		{
			int mid = L + (R - L) / 2; int k = LOG2[mid - l + 1];
			int jd = dp_and[l][k] & dp_and[mid - (1 << k) + 1][k];//注意这个jd,就是从左边到当前的mid所有元素的与
			if (jd >= kp)L = mid + 1;
			else R = mid-1;
		}
		if (l == n)return l;
		return L-1;
	}
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);
	int t; cin >> t;
	while (t--)
	{
		cin >> n;
		for (int i = 1; i <= n; i++)cin >> a[i];
		int q; cin >> q;
		st_init();
		for (int i = 0; i < q; i++)
		{
			int x, k; cin >> x >> k;
			cout << st_query(x, k)<< ' ';

		}
		cout << '\n';
	}
	return 0;
}

标签:二分,return,Iva,Pav,int,cin,st,include
From: https://www.cnblogs.com/zzzsacmblog/p/18173470

相关文章

  • 第三章:Memory Consistency Motivation and Sequential Consistency
    chapter3:内存为什么需要consistency和顺序Consistency本章深入研究内存consistency模型,这些模型为程序员和实现者定义了共享内存系统的行为。这些模型定义了行为正确性,以便程序员知道期望什么,实现者知道提供什么。1、共享内存行为存在的问题要了解为什么必须定义共享内存行......
  • POI2012FES-Festival
    POI#Year2012#Tarjan#最短路强联通分量之间是不影响的,考虑对于一个强联通分量内,方案数等于这个强联通内的最短路\(+1\)//Author:xiaruizeconstintN=6e2+10;intn,m1,m2;vector<int>g[N];intdis[N][N];boolvis[N];intdfn[N],top[N],low[N],tot;stac......
  • Java源码阅读-String中的private final char value[];
    /**Thevalueisusedforcharacterstorage.*/privatefinalcharvalue[];在Java的源码中是这样来实现String对字符串的存储的首先使用final关键字来修饰这个变量,来保证value不会被重写,确保字符串的内容在创建后不会被修改,从而保持字符串的不可变性。final是......
  • [Place 30-575]VIVADO 布局布线bug
     开始怀疑是约束文件有问题,把输入引脚的位置错误约束了,但是并没有,DDR的输入时钟也是用的bank33,电平、引脚约束也没错(AlinxAX7325B开发板) 尝试按照建议添加set_propertyCLOCK_DEDICATED_ROUTEBACKBONE,但是imple仍然报该错误,并且综合提示setproperty为空? 原代码中ddr参......
  • WPF implemented Single Instance via mutex and activated the existed window via
    1.RemoveStartUri="MainWindow.xaml"inApp.xaml;2.IntheApp.xaml.cs,overriveasbelowusingSystem;usingSystem.Collections.Generic;usingSystem.Configuration;usingSystem.Data;usingSystem.Linq;usingSystem.Runtime.InteropServices;usin......
  • .net 通过特性及继承IValidatableObject完成自定义表单验证
    Model:publicclassPartAItem:IValidatableObject{[Required]publicstringTOKEN{get;set;}[Required]publicstringPROJECT_ID{get;set;}publicstringPART{get;set;}[Required]publicstringFORM_ID{get;set;......
  • day12_我的Java学习笔记 (package包、权限修饰符_private+缺省+protected+public、fin
    1.包IDEA配置自动导包:2.权限修饰符同一个类中的,【private、缺省、protected、public】都可以访问同一个包中的其他类,【private】不可以访问,【缺省、protected、public】都可以访问不同包下的无关类,【private、缺省、protected】都不可以访问,只有【public......
  • CommandNotFoundError: Your shell has not been properly configured to use 'conda
    当使用condaactivatemy_env激活环境时,可能会遇到如下错误:CommandNotFoundError:Yourshellhasnotbeenproperlyconfiguredtouse'condaactivate'.Toinitializeyourshell,run$condainit<SHELL_NAME>Currentlysupportedshellsare:-bash......
  • 生命中的开关:深入探讨Deactivated和Activated生命周期
    在软件开发中,生命周期管理是一个至关重要的概念,特别是在移动应用开发中。在移动应用的开发过程中,Deactivated和Activated生命周期扮演着至关重要的角色。本文将深入探讨Deactivated和Activated生命周期,探讨它们的含义、作用以及如何在应用程序中正确地管理它们。什么是Deactiv......
  • 使用Vivado Design Suite进行物理优化(二)
    物理优化是对设计的negative-slack路径进行时序驱动的优化。而phys_opt_design命令是用于对设计进行物理优化。这个命令可以在布局后的后置模式(post-placemode)中运行,也就是在放置所有组件之后;还可以在完全布线后的后置模式(post-routemode)中运行,即在设计完全布线之后。一......