国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Pinely Round 2 (Div. 1 + Div. 2) F. Divide, XOR, and Conquer(區(qū)間dp)

這篇具有很好參考價值的文章主要介紹了Pinely Round 2 (Div. 1 + Div. 2) F. Divide, XOR, and Conquer(區(qū)間dp)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

題目

給定長為n(n<=1e4)的數(shù)組,第i個數(shù)為ai(0<=ai<2的60次方)

初始時,區(qū)間為[1,n],也即l=1,r=n,

你可以在[l,r)中指定一個k,將區(qū)間分成左半邊[l,k]、右半邊[k+1,r]

1. 如果左半邊異或和與異或和的異或和相等,則可以二選一,要么保留左半邊,要么保留右半邊

2. 否則,只能保留異或和大的那半邊

當(dāng)l=r時,游戲結(jié)束

對于每個i,判斷是否能通過適當(dāng)操作,使得游戲結(jié)束時l=r=i

實際t(t<=1e4)組樣例,保證sumn不超過1e4

思路來源

力扣群 潼神

Pinely Round 2 (Div. 1 + Div. 2) F. Divide, XOR, and Conquer(區(qū)間dp),# 區(qū)間dp,區(qū)間dp,異或

題解

這個st0[i]和ed0[i]實際只需要占一位,分開寫的話可讀性會好一點

此處由于值域限制,直接維護在了st[i]和ed[i]的第60位

n=1e4,說明只能是O(1)轉(zhuǎn)移的區(qū)間dp

異或和的兩種情況:

1. [l,r]異或和為0,那么[l,x](x<r)和[y,r](y>l)的區(qū)間都可以異或出

2. [l,r]異或和為s(s≠0),記s的最高位為b,

那么,如果[l,x](x<r)的異或和包含b這一位,[l,x]的異或和就一定大于[x+1,r]的異或和

同理,如果[y,r](y>l)的異或和包含b這一位,[y,r]的異或和就一定大于[l,y-1]的異或和

判斷

①左端點/右端點第60位打過標(biāo)記,說明存在共左端點/右端點的更大的區(qū)間異或和為0

②[l,r]異或和為s,s和左端點/右端點的標(biāo)記有交,說明存在共左端點/右端點的更大的區(qū)間的異或和的最高位能被s取到,也就是s比區(qū)間另一半大

設(shè)位

①如果異或和為0,在第60位打標(biāo)記

②否則,在異或和最高位打標(biāo)記

心得

本題是長區(qū)間向短區(qū)間下放,沒怎么寫過,但本身區(qū)間dp也很靈活

由于下放時一定需要固定一個端點,所以可以將信息維護在端點處供后續(xù)使用

也就只需要開一維,不像傳統(tǒng)區(qū)間dp開兩位數(shù)組那樣了

__builtin_clzll(s)是獲取64位數(shù)二進制前導(dǎo)0個數(shù)

63-__builtin_clzll(s)是獲取64位數(shù)二進制最高位的1是第幾位

從右往左,從第0位開始數(shù),也就是1<<b中的b,不存在時為-1

32位數(shù)時,可以對應(yīng)改成__builtin_clz(s)、31-__builtin_clz(s)文章來源地址http://www.zghlxwxcb.cn/news/detail-698859.html

代碼

#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define per(i,a,b) for(int i=(a);i>=(b);--i)
typedef long long ll;
typedef double db;
typedef pair<ll,int> P;
#define fi first
#define se second
#define pb push_back
#define dbg(x) cerr<<(#x)<<":"<<x<<" ";
#define dbg2(x) cerr<<(#x)<<":"<<x<<endl;
#define SZ(a) (int)(a.size())
#define sci(a) scanf("%d",&(a))
#define pt(a) printf("%d",a);
#define pte(a) printf("%d\n",a)
#define ptlle(a) printf("%lld\n",a)
#define debug(...) fprintf(stderr, __VA_ARGS__)
typedef unsigned ui;
//typedef __uint128_t L;
typedef unsigned long long L;
typedef unsigned long long ull;
const int N=1e4+10,B=60;//xor=0代表的位
int t,n;
ll v,bl[N],br[N],sum[N];
char ans[N];
bool cal(int l,int r){
	if(l==1 && r==n)return 1;
	//之前的[l,R](R>r)的異或和有0
	//之前的[L,r](L<l)的異或和有0
	if(bl[l]>>B&1 || br[r]>>B&1)return 1;
	ll s=sum[r]^sum[l-1];
	return (s&bl[l]) || (s&br[r]);
	//[l,r]的異或和有[l,R](R>r)的異或和的最高位
	//[l,r]的異或和有[L,r](L<l)的異或和的最高位
}
void op(int l,int r){
	ll s=sum[r]^sum[l-1];
	int b;
	if(!s)b=B;	// 當(dāng)前[l,r]的異或和有0 
	else b=63-__builtin_clzll(s); // 當(dāng)前[l,r]的異或和的最高位
	bl[l]|=1ll<<b;
	br[r]|=1ll<<b;
}
int main(){
	sci(t);
	while(t--){
		sci(n);
		rep(i,1,n){
			scanf("%lld",&v);
			sum[i]=sum[i-1]^v;
			bl[i]=br[i]=0;
			ans[i]='0';
		}
		per(sz,n,1){
			rep(l,1,n+1-sz){
				int r=l+sz-1;
				//printf("l:%d r:%d ok:%1d s:%lld b:%d\n",l,r,cal(l,r),sum[r]^sum[l-1],63-__builtin_clzll(sum[r]^sum[l-1]));
				if(cal(l,r)){
					op(l,r);
					if(l==r)ans[l]='1';
				}
			}
		}
		ans[n+1]='\0';
		printf("%s\n",ans+1);
	}
	return 0;
}

到了這里,關(guān)于Pinely Round 2 (Div. 1 + Div. 2) F. Divide, XOR, and Conquer(區(qū)間dp)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Matlab數(shù)學(xué)建模算法之小波神經(jīng)網(wǎng)絡(luò)詳解

    ???運行環(huán)境:Matlab ???撰寫作者:左手の明天 ???精選專欄:《python》 ????推薦專欄:《算法研究》 ??####? 防偽水印——左手の明天?#### ?? ?? 大家好??????,我是 左手の明天 !好久不見?? ??今天分享

    2024年02月20日
    瀏覽(28)
  • 小白入門STM32(2)---控制SG90舵機---基礎(chǔ)工作原理詳解

    小白入門STM32(2)---控制SG90舵機---基礎(chǔ)工作原理詳解

    本人一枚軟件編程人員,有一定C語言基礎(chǔ),目前自學(xué)STM32單片機,寫下此篇一鞏固所學(xué)二交流分享。 按照慣例,先介紹理論再實戰(zhàn)上手,穿插習(xí)題,最后給出我的愚見。 SG90屬于一種舵機,最適合小白入門,可直接由單片機驅(qū)動。另外,單片機中給我們封裝了很多東西,所以

    2023年04月10日
    瀏覽(20)
  • uniapp+node.js前后端做帖子模塊:分享帖子和分享頁面(社區(qū)管理平臺的小程序)

    ?? 點贊,你的認可是我創(chuàng)作的動力! ?? 收藏,你的青睞是我努力的方向! ?? 評論,你的意見是我進步的財富! 溫馨提示:我做的思路可能是復(fù)雜化了或者說代碼寫的不規(guī)范,如果你覺得可以更加簡便的話歡迎分享到評論區(qū)或者自己改寫一下我的代碼,我的后端是寫的

    2024年03月11日
    瀏覽(23)
  • python實現(xiàn)Canny算子邊緣檢測算法

    python實現(xiàn)Canny算子邊緣檢測算法

    ? ? 邊緣檢測是一種將圖片中關(guān)鍵信息表現(xiàn)出來的一種圖片技術(shù),它的結(jié)果并不是字面意思上的獲取圖片邊緣,而是將圖片有用的信息勾勒出來,類似素描的結(jié)果,但是已經(jīng)去掉了很多信息。如下所示,一張原始的圖片是這樣的: ? ?? ? ? 通過邊緣檢測算法,我們最終得到

    2024年02月08日
    瀏覽(23)
  • 黑客教程,從零基礎(chǔ)入門到精通

    黑客教程,從零基礎(chǔ)入門到精通

    學(xué)前感言: 1.這是一條堅持的道路,三分鐘的熱情可以放棄往下看了. 2.多練多想,不要離開了教程什么都不會了.最好看完教程自己獨立完成技術(shù)方面的開發(fā). 3.有時多google,baidu,我們往往都遇不到好心的大神,誰會無聊天天給你做解答. 4.遇到實在搞不懂的,可以先放放,以后再來解決

    2024年02月01日
    瀏覽(22)
  • 【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第6練:內(nèi)嵌發(fā)包提取數(shù)據(jù)

    【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第6練:內(nèi)嵌發(fā)包提取數(shù)據(jù)

    目錄 一、分析目標(biāo): 二、代碼實現(xiàn) 目標(biāo)1:對于捕獲的URL內(nèi)嵌發(fā)包 目標(biāo)2:找到電話和郵箱的位置 目標(biāo)3:提取電話和郵箱 三、完整代碼 四、網(wǎng)絡(luò)安全小圈子 (注:需要帶上登錄成功后的cookie發(fā)包) 點擊進去爬取每個企業(yè)里面的電話、郵箱 (我們是來投簡歷的,切勿干非法

    2024年02月12日
    瀏覽(17)
  • 春晚為什么失去了觀眾?

    春晚為什么失去了觀眾?

    ?? ?春晚失去了觀眾,這是近年來不可忽視的現(xiàn)象。春晚作為中國的一項傳統(tǒng)文化活動,曾經(jīng)吸引了億萬觀眾的眼球,但如今卻面臨著越來越多的挑戰(zhàn)和質(zhì)疑。那么,春晚為什么失去了觀眾呢? 首先,隨著時代的變遷,觀眾的口味和需求也在不斷變化。過去,春晚的節(jié)目形

    2024年01月18日
    瀏覽(14)
  • k8s之親和性、污點

    k8s之親和性、污點

    目錄 親和性 鍵值運算關(guān)系 硬策略 軟策略 Pod親和性與反親和性 污點(Taint) 和 容忍(Tolerations) 污點(Taint)? 容忍(Tolerations) 維護操作 故障排除步驟 官方介紹:https://kubernetes.io/zh/docs/concepts/scheduling-eviction/assign-pod-node/ (1)節(jié)點親和性 pod.spec.nodeAffinity ●preferredDuringSchedulingIgnore

    2024年02月06日
    瀏覽(22)
  • LeetCode_字符串_簡單_415.字符串相加

    給定兩個字符串形式的非負整數(shù) num1 和num2,計算它們的和并同樣以字符串形式返回。 你不能使用任何內(nèi)建的用于處理大整數(shù)的庫(比如 BigInteger), 也不能直接將輸入的字符串轉(zhuǎn)換為整數(shù)形式。 示例 1: 輸入:num1 = “11”, num2 = “123” 輸出:“134” 示例 2: 輸入:num1 = “

    2024年02月01日
    瀏覽(28)
  • 第11章:C語言數(shù)據(jù)結(jié)構(gòu)與算法初階之排序

    第11章:C語言數(shù)據(jù)結(jié)構(gòu)與算法初階之排序

    排序是一種非常重要的算法。 排序 :所謂排序,就是使一串記錄,按照其中的某個或某些的大小,遞增或遞減的排列起來的操作。 穩(wěn)定性 :假定在待排序的記錄序列中,存在多個具有相同的的記錄,若經(jīng)過排序,這些記錄的相對次序保持不變,即在原序列中,

    2024年02月12日
    瀏覽(12)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包