cf914D. Bash and a Tough Math Puzzle(線段樹)

題意

題目鏈接

Sol

直接在線段樹上二分

當左右兒子中的一個不是\(x\)的倍數就繼續遞歸

由于最多遞歸到一個葉子節點,所以復雜度是對的

開始時在糾結如果一段區間全是\(x\)的兩倍是不是需要特判,實際上是不需要的。

可以這么想,如果能成功的話,我們可以把那個數改成\(1\),這樣比\(x\)大的數就不會對答案產生影響了。

不過我的線段樹為啥要開6倍空間才能過。。真是狗血、、

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 3e6 + 10, INF = 1e9 + 10;
inline int read() {char c = getchar(); int x = 0, f = 1;while(c < '0' || c > '9') {if(c == '-')f =- 1; c = getchar();}while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();return x * f;
}
int N, M, a[MAXN];
#define ls k << 1
#define rs k << 1 | 1 
struct Node {int l, r, g;
}T[MAXN];
int gcd(int a, int b) {return (b == 0 ? a : gcd(b, a % b));
}
void update(int k) {T[k].g = gcd(T[ls].g, T[rs].g);
}
void Build(int k, int ll, int rr) {T[k] = (Node) {ll, rr};if(ll == rr) {T[k].g = a[ll]; return ;}int mid = T[k].l + T[k].r >> 1;Build(ls, ll, mid); Build(rs, mid + 1, rr);update(k);
}
void PointChange(int k, int pos, int val) {if(T[k].l == T[k].r) {T[k].g = val; return ;}int mid = T[k].l + T[k].r >> 1;if(pos <= mid) PointChange(ls, pos, val); else PointChange(rs, pos, val);update(k);
}
int sum = 0;
void IntervalTims(int k, int ll, int rr, int val) {if(sum > 1) return ;if(T[k].l == T[k].r) sum++;int mid = T[k].l + T[k].r >> 1;if(ll <= mid && (T[ls].g % val)) IntervalTims(ls, ll, rr, val);if(rr  > mid && (T[rs].g % val)) IntervalTims(rs, ll, rr, val);
}
main() {N = read();for(int i = 1; i <= N; i++) a[i] = read();Build(1, 1, N);M = read();while(M--) {int opt = read();if(opt == 1) {int l = read(), r = read(), x = read();sum = 0; IntervalTims(1, l, r, x);puts(sum > 1 ? "NO" : "YES");} else {int pos = read(), x = read();PointChange(1, pos, x);}}
}
/*
*/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277151.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277151.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277151.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機答辯答不上來怎么回答,答辯答不上來怎么辦

論文答辯成為了不少同學的最后一次考試&#xff0c;從開題報告、論文定稿到格式排版大家一定都花費了大量的時間和精力&#xff0c;然而有時也會有一點小錯誤。所以&#xff0c;答辯前怎么準備&#xff0c;答辯的時候應該怎么靈活表現才能讓自己最有可能通過答辯呢&#xff1f;…

urllib2.urlopen超時問題

urllib2.urlopen超時問題 沒有設置timeout參數&#xff0c;結果在網絡環境不好的情況下&#xff0c;時常出現read()方法沒有任何反應的問題&#xff0c;程序卡死在read()方法里&#xff0c;搞了大半天&#xff0c;才找到問題&#xff0c;給urlopen加上timeout就ok了&#xff0c…

git 關聯遠程分支

問題解析&#xff1a; git本地新建一個分支后&#xff0c;必須要做遠程分支關聯。如果沒有關聯&#xff0c; git 會在下面的操作中提示你顯示的添加關聯。關聯目的是如果在本地分支下操作&#xff1a; git pull, git push &#xff0c;不需要指定在命令行指定遠程的分支&#x…

Sql Server 常用日期格式

http://www.cnblogs.com/waitu/archive/2006/01/16/318299.html 轉載于:https://www.cnblogs.com/passrift/archive/2006/09/29/517939.html

del服務器能裝win7系統嗎,500系列主板能不能裝win7?500系列主板裝win7教程(支持11代)...

今年intel發布了第十一代酷睿cpu&#xff0c;當前有些網友還停留在win7時代&#xff0c;對win7是戀戀不忘&#xff0c;以前經常聽到討論是400系列主板安裝win7的問題&#xff0c;到了2021年我們應該換一個話題&#xff0c;就是500系列主板能安裝win7嗎&#xff1f;小編在這里可…

代碼可讀性心理學

寫在前面的話&#xff1a; 這周末我一個同學在群上說找到一篇挺有意思的文章&#xff08;就是下面要說的可讀性代碼的心理學&#xff09;&#xff0c;說要翻譯出來&#xff0c;我就主動請纓了&#xff0c;跟他合作翻譯這篇文章&#xff0c;在看這篇文章的同時&#xff0c;我突然…

帶圖片的,多列的DropDownList的實現

下面是模仿的DropDownList的效果&#xff0c;支持圖片&#xff0c;多列&#xff0c;換行等。查看例子 WebDropDownList.aspx 模擬下拉列表框模擬下拉框請選擇&#xff1f;6北京市上海市河南省深圳市大連市云南省WebDropDownList.aspx.cs using System; using System.Collection…

手機連接服務器傳文件在哪里,手機云服務器傳文件在哪里

手機云服務器傳文件在哪里 內容精選換一換華為云幫助中心&#xff0c;為用戶提供產品簡介、價格說明、購買指南、用戶指南、API參考、最佳實踐、常見問題、視頻幫助等技術文檔&#xff0c;幫助您快速上手使用華為云服務。如果私鑰文件丟失了&#xff0c;可以為服務器替換新的密…

本周ASP.NET英文技術文章推薦[03/25 - 03/31]

摘要 本期共有6篇文章&#xff1a; ASP.NET AJAX&#xff1a;客戶端事件查看器JavaScript和.NET中的JavaScript對象標記&#xff08;JSON&#xff09;介紹在ASP.NET 2.0應用程序中使用NHibernate和Log4Net在數據Web控件中顯示二進制數據為什么異步回送時不能使用文件上傳&…

忙的日子

很久沒有這么正兒八經的忙了&#xff0c;腦子里很多事的日子忽然覺得很不適應。兩個人的工作都算塵埃落定&#xff0c;也許是憂患意識持續得太久了&#xff0c;沒有太多的驚喜和踏實&#xff0c;卻想著福兮禍之所依。很久不做夢了&#xff0c;忽然有夢時卻總是校園里那些人那些…

虛擬機服務器斷網,Vmware虛擬機斷網不能上網的解決方法教程[多圖]

vmware虛擬機不能上網怎么辦&#xff1f;正常來說在給虛擬機安裝了系統之后&#xff0c;虛擬機是可以共享電腦的網絡進行上網的&#xff0c;但是最近有用戶反映vmware虛擬機出現不能上網的問題&#xff0c;這該怎么辦呢&#xff1f;請看下文具體介紹。方法1&#xff1a;1、我們…

本周ASP.NET英文技術文章推薦[09/30- 07/13]:.NET Framework、JSON、Google Analytics、文件上傳、GridView、IIS 7、Web開發...

摘要 本期共有9篇文章&#xff1a; .NET Framework源代發發布Tip/Trick&#xff1a;在.NET 3.5中編寫ToJSON擴展方法在Google Analytics中統計訪客瀏覽器的Silverlight啟用狀況使用文本編輯器開發并部署ASP.NET Web應用程序在ASP.NET 2.0中編寫類似Gmail的文件上傳系統各種非…

深入剖析Redis系列(四) - Redis數據結構與全局命令概述

前言Redis 提供了 5 種數據結構。理解每種數據結構的特點&#xff0c;對于 Redis 的 開發運維 非常重要&#xff0c;同時掌握 Redis 的 單線程命令處理 機制&#xff0c;會使 數據結構 和 命令 的選擇事半功倍。接下來的幾篇文章&#xff0c;將從如下幾個方面介紹 Redis 的幾種…

網易云服務器上傳文件,網易云音樂怎么把音樂上傳到云盤 網易云音樂把音樂上傳到云盤的步驟方法...

現在很多用戶保存文件都會選擇保存到網盤&#xff0c;喜歡的音樂也是一樣&#xff0c;網易云音樂早已引入了云盤功能&#xff0c;不過上傳的方法相信有很多朋友都不知道&#xff0c;下面小編為大家帶來網易云音樂把音樂上傳到云盤的步驟方法&#xff0c;感興趣的朋友可以進來了…

MOSS 2007基礎:內容類型(Content Type)之二

原文地址&#xff1a;http://www.msd2d.com/Content/Tip_viewitem_03NoAuth.aspx?ida14f3443-c394-4950-a048-8394bcce749b&sectionSharepoint 上次&#xff0c;我們說到MOSS 2007中的內容類型。下面我們將繼續該話題&#xff0c;更深入了解其特性。在開始之前&#xff0c…

7.18 collection random os sys等模塊

7.18 collection random os sys等模塊 collection模塊 應用場景1 # 具名元組 # 想表示坐標點x為1 y為2 z為5的坐標 from collections import namedtuple # point namedtuple(坐標,[x,y,z]) # 第二個參數既可以傳可迭代對象 point namedtuple(坐標,x y z) # 也可以傳字符串 …

結對作業

1、要求地址 博客要求地址&#xff1a;https://www.cnblogs.com/happyzm/p/9626779.htmlFork碼云項目地址&#xff1a;https://gitee.com/YeHei/PairProject-Java/tree/master結對伙伴&#xff1a;余碩銘 博客地址&#xff1a;https://gitee.com/hellolv/PersonalProject-Java2…

leetcode(34)在排序數組中查找元素的第一個和最后一個位置

在排序數組中查找元素的第一個和最后一個位置 class Solution {public int[] searchRange(int[] nums, int target) {int len nums.length;int start 0;int end len - 1;int mid 0;int temp 0;while(start<end){mid (startend)/2;if(nums[mid]>target){end mid - …

縮略圖不變形

Public Shared Sub MakeSmallImg(ByVal postFile As System.Web.HttpPostedFile, ByVal saveImg As String, ByVal Width As System.Double, ByVal Height As System.Double) Dim originalFilename As String postFile.FileName 生成的高質量圖片名稱 Dim strGo…

spring boot druid 監控沒有sql記錄

2019獨角獸企業重金招聘Python工程師標準>>> 1 之前配置了 druid的監控 但是 調用查詢后 監控沒有記錄&#xff0c;查了下原因 發現是因為依賴打入錯誤 <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starte…