首页 > 其他分享 >11.17 鲜花

11.17 鲜花

时间:2024-11-17 20:56:04浏览次数:1  
标签:me log 鲜花 int 11.17 huh uh Uh

11.17 鲜花(RMQ专题)

哈哈,回家看到朴彩英这个歌绷不住了。

不是吧,姐?

推歌-박채영《아파트》
채영이가 좋아하는
랜덤 게임
랜덤 게임
Game start
아파트 아파트
아파트 아파트
아파트 아파트
Uh, uh huh uh huh
아파트 아파트
아파트 아파트
아파트 아파트
Uh, uh huh uh huh
Kissy face, kissy face
Sent to your phone but,
I'm trying to kiss your lips for real
Red hearts, red hearts
That’s what I’m on yeah
Come give me something I can feel
Oh oh oh
Don't you want me like I want you, baby
Don't you need me like I need you now
Sleep tomorrow but tonight go crazy
All you gotta do is just meet me at the
아파트 아파트
아파트 아파트
아파트 아파트
Uh, uh huh uh huh
아파트 아파트
아파트 아파트
아파트 아파트
Uh, uh huh uh huh
It’s whatever it’s whatever it’s whatever you like
Turn this 아파트 into a club
I’m talking drink, dance, smoke, freak, party all night
건배 건배 girl what’s up
Oh oh oh
Don't you want me like I want you, baby
Don't you need me like I need you now
Sleep tomorrow but tonight go crazy
All you gotta do is just meet me at the
아파트 아파트
아파트 아파트
아파트 아파트
Uh, uh huh uh huh
아파트 아파트
아파트 아파트
아파트 아파트
Uh, uh huh uh huh
Hey so now you know the game
Are you ready?
Cause I’m comin to get ya
Get ya, get ya
Hold on, hold on
I’m on my way
Yeah yeah yeah yeah yeah
I’m on my way
Hold on, hold on
I’m on my way
Yeah yeah yeah yeah yeah
I’m on my way
Don't you want me like I want you, baby
Don't you need me like I need you now
Sleep tomorrow but tonight go crazy All
you gotta do is just meet me at the
아파트 아파트
아파트 아파트
아파트 아파트
Just meet me at the
(Uh huh uh huh)
아파트 아파트
아파트 아파트
아파트 아파트
Just meet me at the
(Uh huh uh huh)
아파트 아파트
아파트 아파트
아파트 아파트
Just meet me at the
(Uh huh uh huh)
아파트 아파트
아파트 아파트
아파트 아파트
Uh, uh huh uh huh

省流: \(HANGRY\_Sol\) 牌拍子大大地好用!

RMQ 专题

四毛子(Four Russian)算法

据说是四个俄罗斯科学家发明的。

还是举区间最大值的例子。

我们把这么个区间分块,分成左边散块,中间整块,右边散块。

然后如果我们把块长调成 \(\frac{\log_2n}{2}\) 然后发现这个可以 \(\mathcal{O}(n)\) 预处理( \(\mathcal{O}(\frac{n}{len}\log{\frac{n}{len}})\) ), \(\mathcal{O}(1)\) 查询。

但是这个区间在一个块里面怎么办?

然后这四只毛熊就开始唐了。

首先噢,先建一颗大根笛卡尔树。

然后统计一下 \(dfs\) 序。发现 \(LCA\) 就是最大值。

转化成 \(dfs\) 序,即 \(\pm RMQ\) 问题。

对于长度为 \(len = \frac{\log_2n}{2}\) 的块来说,他只有 \(\mathcal{O}(\sqrt N)\) 种不同的情况吧。

我们直接对于每个块的情况状压,最后统计一下第 \(i\) 种, \([l, r]\) 的最大值。

时间复杂度 \(\mathcal{O}(n)\) , 空间复杂度 \(\mathcal{O}(N)\) 。

然后你就发现不仅难写,常数还贼大。

伯约的这真有单 log 跑得快吗?

然后考虑怎么优化一下这个东西。

我们发现这个题的瓶颈就在于两个端点在一个块时的情况。

然后发现块长为 \(\log\) 级,也就是说 \(r - l \le \log n\)

那我们直接跑残疾 \(ST\) 表,跑到 \(\log\log n\) 大概 \(2 \times 10 ^ 7\) 才 \(4\) 的样子。

额……这是不是能叫…… \(O(n)\) ?

有兴趣的可以去由乃救爷爷草草,应该可以过的。

四毛子 Pro Max : 二毛子

感觉这个东西就应该叫四毛娘吧,毕竟阉割了……

这个和四毛子后面我想的的那个东西异曲同工,都是在对于两个端点在同一个块时的优化。

考虑一个显然的性质,对于一个区间 \([l, r]\) , 其区间最值的位置肯定是

\[\min_{1 \le i \le l}maxpos_{i, r} (maxpos_{i, r} \ge l) \]

其实为什么考虑这个呢,就是因为开不下,想想有没有什么能够优化空间的。

这个 \(maxpos\) 显然可单调栈维护。发现这个后,直接将 \(maxpos_{i, r}\) 在 \(r\) 处状压。查的时候先将 \(l\) 前的清掉,然后再找第一个 \(1\)(函数 builtin_ctzll(ull) 可以完成这个操作,复杂度为 \(\log\log\) 或常数)。

然后就做完了。这个写了,可以给码。

CODE of 由乃救爷爷
#include <bits/stdc++.h>
#define int unsigned int
typedef long long ll; 
typedef unsigned long long ull; 
using namespace std; 
const int N = 2e7 + 100; 

int a[N], n, m; ull s; 
int st[21], top; 

namespace GenHelper {
	unsigned z1, z2, z3, z4, b; 
	inline unsigned rand_() {
		b = ((z1 << 6) ^ z1) >> 13; 
		z1 = ((z1 & 4294967294U) << 18) ^ b; 
		b = ((z2 << 2) ^ z2) >> 27; 
		z2 = ((z2 & 4294967288U) << 2) ^ b; 
		b = ((z3 << 13) ^ z3) >> 21; 
		z3 = ((z3 & 4294967280U) << 7) ^ b; 
		b = ((z4 << 3) ^ z4) >> 12; 
		z4 = ((z4 & 4294967168U) << 13) ^ b; 
		return (z1 ^ z2 ^ z3 ^ z4); 
	}
}
inline void srand(unsigned x) {
	using namespace GenHelper; 
	z1 = x; z2 = (~ x) ^ 0x233333333U; z3 = x ^ 0x1234598766U; z4 = (~ x) + 51; 
}
inline int read() {
	using namespace GenHelper; 
	int a = rand_() & 32767; 
	int b = rand_() & 32767; 
	return a * 32768 + b; 
}

#define l(x) ((x - 1) << 6 | 1)
#define r(x) (x << 6)
#define belong(x) ((x + 63) >> 6)

int ST[__lg(N >> 6) + 1][N >> 6]; 
ull val[N]; int lg[N]; 
int Prefix[N], Suffix[N]; 

inline int MaxST(int l, int r) {
	if (l > r) return 0; 
	int k = lg[r - l + 1]; 
	return max(ST[k][l], ST[k][r - (1 << k) + 1]); 
}

inline void In() {
	int tot = belong(n), Maxer; 
	for (int i = 2; i <= n; ++ i) lg[i] = lg[i >> 1] + 1; 
	for (int i = 1; i <= tot; ++ i) {
		Maxer = 0; 
		for (int j = l(i); j <= r(i); ++ j) Maxer = max(Maxer, a[j]), Prefix[j] = Maxer; 
		Suffix[r(i)] = a[r(i)]; 
		for (int j = r(i) - 1; j >= l(i); -- j) Suffix[j] = max(Suffix[j + 1], a[j]); 
		ST[0][i] = Maxer; 
	}
	for (int j = 1; j <= __lg(belong(n)); ++ j) 
		for (int i = 1; i <= tot - (1 << j) + 1; ++ i) 
			ST[j][i] = max(ST[j - 1][i], ST[j - 1][i + (1 << (j - 1))]); 
	for (int j = 1; j <= tot; ++ j) {
		top = 0; 

		for (int i = l(j); i <= r(j); ++ i) {
			if (i > l(j)) val[i] = val[i - 1]; 
			while (top && a[st[top]] <= a[i]) {
				val[i] ^= (1ULL << (st[top] - l(j))); -- top; 
			}

			val[i] |= (1ULL << (i - l(j))); 
			st[++ top] = i; 
		}
	}
}

inline int Query(int x, int y) {
	if (belong(x) == belong(y)) return a[x + __builtin_ctzll(val[y] >> (x - l(belong(x))))]; 
	return max(max(Prefix[y], Suffix[x]), MaxST(belong(x) + 1, belong(y) - 1)); 
}

signed main() {
	cin >> n >> m >> s; 
	srand(s); int l, r; ull ans = 0; 

	for (int i = 1; i <= n; ++ i) a[i] = read(); 
	In(); 
	while (m --) {
		l = read() % n + 1, r = read() % n + 1; 
		if (l > r) swap(l, r); 
		ans += Query(l, r); 
	}

	cout << ans; 
}

p

标签:me,log,鲜花,int,11.17,huh,uh,Uh
From: https://www.cnblogs.com/hangry/p/18551112

相关文章

  • 24.11.17
    Heoi好题分享He(ngEr)oi好题分享怎么每次NT都找黑啊/jkP5362NT的关注@Nt_Yester谢谢喵欠着对于\(\textbf{T.M.}\)的序列除了题里那个鬼畜定义还有几种生成方式:初始令\(T_0=0\),然后每次将原串按位取反拼接到原串后。\(T_i=\operatorname{popcount}(i)\b......
  • 11.11~11.17
    做题P4775一道用线段树合并处理直径的题目。一个小技巧就是树上线段树先合并再插入常数会小很多。P10831最开始信息:通过Ramsey引理知6点必有询问出0或3,以这三点\(A,B,C\)为基础构造。如何求一边是否存在?预处理\(i\toA,B,C,\foralli\)的信息之后直接询问即可。考......
  • 闲话 11.17
    $settle\into\ash$好大雷EP,真的耐听。Theemberssettleintoash残火中余温成灰Refusetobend,tobreak,lookback不屈不折不曾回眸往昔It’salldecidedinthemomentwebothchoosetofightit在那决断时刻我们选择了抗争Youdon’tneedarmiestota......
  • 11.17
    把\(A,B\)写完后胡完\(C\)就跑路了,感觉很有质量。S6A.「KDOI-11」打印线段树维护区间结束时间最早的打印机,如果全局结束时间最早的打印机的结束时间小于当前文件起始时间,那么线段树二分寻找最小编号,否则直接取结束时间最早打印机即可。点击查看代码#include<bits/stdc+......
  • Atcoder 11.17
    这是11.17号的题单4.第四题是字符串的问题,只需要找到规律即可,对于每个查询k[i],首先计算a和aa:a是(k[i]-1)//ls,即k[i]-1除以字符串长度ls的商。这相当于确定k[i]在重复字符串中属于第几个完整的字符串块。aa是bin(a).count("1")%2,即a的二进制表示中"1"......
  • 小北的字节跳动青训营与从SQL到自然语言查询的数据库新范式——连接数据库:通过链和代
     前言    最近,字节跳动的青训营再次扬帆起航,作为第二次参与其中的小北,深感荣幸能借此机会为那些尚未了解青训营的友友们带来一些详细介绍。青训营不仅是一个技术学习与成长的摇篮,更是一个连接未来与梦想的桥梁~小北的青训营XMarsCode技术训练营——AI加码,字节......
  • node.js毕设鲜花商城管理系统(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容选题背景关于鲜花商城管理系统的研究,现有研究主要以传统的商城管理模式为主,专门针对鲜花这一特殊商品在商城管理系统中的个性化研究较少。在国内外的研究现状中,大部......
  • [鲜花] 20241115 My(self+life).
    它是我的生命。我透过明亮的镜子看过去,是我与我的生命的像,还有它的影子,还有那些...意料之外,情理之中。或许我早就感知到它的存在,生活中总是能感觉到它的温度:触碰到了它的体感肌肤,传递冷暖于我。我想找到它,或者说:我想找到属于我自己的东西。可在我轻微的挪动之后,它彻底不见了。从......
  • 2024.11.14 鲜花
    双调排序的正确性证明暨第八交响曲题解推歌:DoubleAgent好多题解都写的或多或少有问题(包括那篇\(30\)分钟速通),终于是整明白了。首先给出双调序列的定义:满足一下条件之一的序列\(\existsk,\foralli<k,a_i>a_{i+1}\land\foralli>k,a_i<a_{i+1}\)即是单谷。其可以通过......
  • 11.17
    [实验任务一]:双向适配器实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。实验要求:画出对应的类图;提交源代码;packageadapter;//Cat接口interfaceCat{voidcry();voidcatchMouse();}//Dog接口interfaceDog{voidwang();voida......