2024-11-07 13:19:43
发布于:广东
大常数 小常数
🤔
🤓👆
#include <iostream>
#include <cstdio>
#include <cmath>
#pragma GCC optimize(3)
#pragma GCC target("avx")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")
#pragma GCC optimize(2)
using namespace std;
char *p1, *p2, buf[(1 << 25)];
#define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, (1 << 25), stdin), p1 == p2)? EOF : *p1++)
int read(){
char c = getchar();
int x = 0, f = 1;
while(!isdigit(c)){
if(c == '-') f = -f;
c = getchar();
}
while(isdigit(c)){
x = (x << 3) + (x << 1) + c - '0';
c = getchar();
}
return x * f;
}
void _write(int n){//快写
if(n == 0) return;
_write(n / 10);
putchar(n % 10 + '0');
}
void write(int n){//快写,增加了输出0和负数并附带换行
if(n < 0) putchar('-'), n = -n;
_write(n), putchar('\n');
}
int a[1000005];
int blocks[1005];
int len, tmp, l, r, idx, val;
void modify(int idx, int val){
a[idx] = val;
int iidx = idx / len;
blocks[iidx] = 0;
for(int i = idx / len * len; i < idx / len * len + len; i++){
blocks[iidx] = max(blocks[iidx], a[i]);
}
}
int query(int l, int r){
int mx = 0;
if(r - l < len){
for(int i = l; i <= r; i++){
mx = max(mx, a[i]);
}
return mx;
}
for(int i = l / len + 1; i < r / len; i++){//整块
mx = max(mx, blocks[i]);
}
for(int i = l; i < min(r + 1, (l / len + 1) * len); i++){//散块
mx = max(mx, a[i]);
}
for(int i = max(r / len * len, l + 1); i <= r; i++){
mx = max(mx, a[i]);
}
return mx;
}
int get(int l, int r, int val){
if(r - l < len){
for(int i = l; i <= r; i++){
if(a[i] >= val) return i;
}
return -1;
}
for(int i = l; i < min(r + 1, (l / len + 1) * len); i++){//散块
if(a[i] >= val) return i;
}
for(int i = l / len + 1; i < r / len; i++){//整块
if(blocks[i] >= val){
for(int j = i * len; j < i * len + len; j++){
if(a[j] >= val) return j;
}
}
}
for(int i = max(r / len * len, l + 1); i <= r; i++){
if(a[i] >= val) return i;
}
return -1;
}
signed main(){
int n = read(), m = read();
len = sqrt(n);
for(int i = 1; i <= n; i++){
a[i] = read();
blocks[i / len] = max(blocks[i / len], a[i]);
}
while(m--){
tmp = read();
if(tmp == 1){
idx = read(), val = read();
modify(idx, val);
}else if(tmp == 2){
l = read(), r = read();
swap(a[l], a[r]);
modify(l, a[l]), modify(r, a[r]);
}else if(tmp == 3){
l = read(), r = read();
write(query(l, r));
}else{
val = read(), l = read(), r = read();
int ans = get(l, r, val);
write(ans == 0x3f3f3f3f ? -1 : ans);
}
}
return 0;
}
全部评论 3
这段代码包含了大量GCC编译器的优化指令,如#pragma GCC optimize和#pragma GCC target等。这些指令表明作者对编译器优化有深入了解,并且希望代码在运行时能够达到最佳性能。这种级别的优化通常需要丰富的编程经验和对底层硬件的深刻理解,这可能是人类程序员更可能采取的做法。
代码中实现了块状数组的数据结构,用于支持高效的区间查询和修改操作。这种数据结构的设计和实现需要一定的算法基础和数据结构知识,通常是高级编程课程的内容。AI在处理这类复杂数据结构时可能会有一定的困难,因为它们涉及到复杂的逻辑和边界情况处理。
代码中包含了一些自定义的输入输出函数,如read和write。这些函数的命名和实现方式比较简洁,此外,代码中还有一些简短的注释,如//快写,这表明作者在编写时考虑到了可读性。AI生成的代码有时可能会缺乏这种注释,或者注释不够清晰。
这段代码展示了超高的编程技巧和对编译器优化的深入理解。虽然AI在某些情况下也能生成类似的代码,但这种级别的复杂性和优化通常需要人类程序员的经验和直觉。因此,我们可以推断这段代码更有可能是由人类程序员编写的。昨天 来自 湖南
0哦
昨天 来自 广东
0
此代码为AI编写的概率:0%
昨天 来自 湖南
0顶
2024-11-07 来自 广东
0
有帮助,赞一个