/*******************************************************************************
去年上海赛区网络赛线段树水题,首先虽然数据比较吓人,是64位int,但是开方不了几次,所以只要记录
那段区间的数时候都小于等于1就行了,0和1都不能再往下开方了,所以更新到底了~注意有x>y的情况。。。
*******************************************************************************/
#include <iostream>
#include <functional>
#include <algorithm>
#include <complex>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <iomanip>
#include <sstream>
#include <utility>
#include <bitset>
#include <cctype>
#include <cstdio>
#include <limits>
#include <memory>
#include <string>
#include <vector>
#include <cmath>
#include <ctime>
#include <queue>
#include <stack>
#include <list>
#include <map>
#include <set>
using namespace std;
#define LOWBIT(x) ( (x) & ( (x) ^ ( (x) - 1 ) ) )
#define CLR(x, k) memset((x), (k), sizeof(x))
#define CPY(t, s) memcpy((t), (s), sizeof(s))
#define SC(t, s) static_cast<t>(s)
#define LEN(s) static_cast<int>( strlen((s)) )
#define SZ(s) static_cast<int>( (s).size() )
typedef double LF;
typedef __int64 LL; //VC
typedef unsigned __int64 ULL;
typedef pair<int, int> PII;
typedef pair<LL, LL> PLL;
typedef pair<double, double> PDD;
typedef vector<int> VI;
typedef vector<char> VC;
typedef vector<double> VF;
typedef vector<string> VS;
template <typename T>
T sqa(const T & x)
{
return x * x;
}
template <typename T>
T gcd(T a, T b)
{
if (!a || !b)
{
return max(a, b);
}
T t;
while (t = a % b)
{
a = b;
b = t;
}
return b;
};
const int INF_INT = 0x3f3f3f3f;
const LL INF_LL = 0x7fffffffffffffffLL; //15f
const double oo = 10e9;
const double eps = 10e-7;
const double PI = acos(-1.0);
#define ONLINE_JUDGE
const int MAXN = 100004;
int n, m;
LL arr[MAXN];
struct Node
{
int left, right;
LL sum;
bool cover;
int mid()
{
return (left + right) >> 1;
}
int len()
{
return right - left + 1;
}
}st[MAXN << 2];
int inline ll(const int & x)
{
return x << 1;
}
int inline rr(const int & x)
{
return x << 1 | 1;
}
void updateST(int t)
{
if (st[ ll(t) ].cover && st[ rr(t) ].cover)
{
st[t].cover = true;
st[t].sum = st[ ll(t) ].sum + st[ rr(t) ].sum;
}
if (st[t].sum <= st[t].len())
{
st[t].cover = true;
}
return ;
}
void buildST(int l, int r, int t)
{
st[t].left = l;
st[t].right = r;
st[t].cover = false;
if (l == r)
{
st[t].sum = arr[l];
st[t].cover = true;
return ;
}
buildST(l, st[t].mid(), ll(t));
buildST(st[t].mid() + 1, r, rr(t));
updateST(t);
return ;
}
void modifyST(int l, int r, int t)
{
if (st[t].left == st[t].right)
{
st[t].sum = SC(int, floor(sqrt(st[t].sum + 0.0)));
return ;
}
if (l <= st[t].left && st[t].right <= r)
{
if (st[t].sum <= st[t].len())
{
st[t].cover = true;
return ;
}
}
int mid = st[t].mid();
if (r <= mid)
{
modifyST(l, r, ll(t));
}
else if (l > mid)
{
modifyST(l, r, rr(t));
}
else
{
modifyST(l, mid, ll(t));
modifyST(mid + 1, r, rr(t));
}
updateST(t);
return ;
}
LL queryST(int l, int r, int t)
{
if (l <= st[t].left && st[t].right <= r)
{
if (st[t].cover)
{
return st[t].sum;
}
}
int mid = st[t].mid();
if (r <= mid)
{
return queryST(l, r, ll(t));
}
else if (l > mid)
{
return queryST(l, r, rr(t));
}
return queryST(l, mid, ll(t)) + queryST(mid + 1, r, rr(t));
}
void ace()
{
int cas = 1;
int op, low, high;
while (scanf("%d", &n) != EOF)
{
for (int i = 1; i <= n; ++i)
{
scanf("%I64d", arr + i);
}
scanf("%d", &m);
buildST(1, n, 1);
printf("Case #%d:\n", cas++);
while (m--)
{
scanf("%d %d %d", &op, &low, &high);
if (low > high)
{
swap(low, high);
}
if (0 == op)
{
modifyST(low, high, 1);
}
else
{
printf("%I64d\n", queryST(low, high, 1));
}
}
puts("");
}
return ;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
#endif
ace();
return 0;
}
/*******************************************************************************
Test Data...
10
1 2 3 4 5 6 7 8 9 10
5
0 1 10
1 1 10
1 1 5
0 5 8
1 4 8
*******************************************************************************/
相关推荐
从寄存器到驱动:深入解读RFSoC RF-ADC阈值与校准API的底层逻辑
本文深入解析Xilinx RFSoC中RF-ADC的阈值检测与校准API的底层逻辑,涵盖寄存器映射、驱动实现及Gen3增强功能。通过详细代码示例和寄存器操作流程,揭示如何精准控制信号阈值检测与校准时序,提升系统稳定性与性能。特别探讨RF数据转换器在无线通信和雷达信号处理中的关键应用。
hdu4027题解——线段树
hdu4027题解——线段树 题意: n个数,m次询问: 0 l r :将[l, r]内的数取根号并向下取整。 1 l r :输出[l, r]区间和。 思路:线段树,维护区间和。 坑点:l 可能会大于 r,需要剪枝,否则直接TLE,当值为1时不需要再取根号了,剪枝后500ms左右。 #include <bits/stdc++.h> using namespace std; ty...
MacOS下微信小程序源码提取与逆向实战:从找到.wxapkg到完整还原
本文详细介绍了在MacOS系统下进行微信小程序源码提取与逆向分析的完整实战流程。从定位沙盒机制中的.wxapkg缓存文件,到搭建Node.js环境与配置wxappUnpacker工具链,再到执行核心反编译命令并处理分包等复杂情况,提供了清晰的操作步骤。文章还汇总了Node版本、依赖缺失、文件乱码等常见问题的解决方案,旨在帮助开发者、安全研究人员高效完成小程序安全审计与学习。
HDU-4027 线段树
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4027 题目大意: 给你一个初始序列a[i],然后有两个操作,一个是询问区间的和,一个是将区间里的每一个数变为原来的平方根,向下取整。操作数<=100000 思路 给定的数初始最大为\(2^{63}\),那么我们最多取6次平方根就可以将其变为1,变成1之后不管怎么取都是1,所以考虑使用线段树维护一...
IEC61850 通信协议测试验证实战指南:从理论到实践
本文提供了一份全面的IEC61850通信协议测试验证实战指南,强调测试必须从理论走向工程实践。文章详细讲解了如何搭建测试环境,并深入剖析了MMS、GOOSE、SV三大核心协议的实战测试方法,旨在帮助工程师通过系统化的测试验证,确保电力自动化设备的互操作性与通信可靠性。
利用PV操作控制进程的并发进行---经典题解
前趋图 先理清楚前趋图中的逻辑关系:P1没有前驱,P2的前驱是P1,P3的前驱是P1、P2,P4的前驱是P2,P5的前驱是P3、P4。 前驱就是指只有在前驱进程完成后,该进程才能开始执行。由图可知,这里进程之间有6条有向弧,分别表示为P1→P2,P1→P3,P2→P3,P2→P4,P3→P5,P4→P5, 各个进程间的逻辑关系,那么我们需要设定6个信号量(S1、S2、S3、S4、S5、S6),利用PV操作来控制这些过程。 对于第一个空,P1执行完成之后,需要通知P2、P3可以开始,此处需要V(S
HDU-4027(线段树)
HDU - 4027 The 36th ACM/ICPC Asia Regional Shanghai Site 题目描述思路代码 题目链接:hdu-4027. 题目描述 一个长度为 nnn 的整数序列 a1,a2,...ana_{1},a_{2},...a_{n}a1,a2,...an. 有mmm个操作,每个操作为 si,li,ris_{i}, l_{i},r_{i}si,li,ri...
具身智能中的运动控制如何入门?
本文提出计算机视觉(CV)与强化学习(RL)结合的机器人运动控制学习路径。强调工程实践导向,建议采用"算法-机器人-工程"三阶段学习法:基础阶段掌握RL核心算法(PPO/SAC)和机器人动力学;进阶阶段聚焦Sim2Real技术(域随机化、模仿学习)和仿真环境搭建;深耕阶段结合CV优势开发视觉闭环控制等创新方向。特别指出应避免纯理论学习,提倡"最小知识原则"的实践模式,通过具体项目(如四足机器人控制)串联知识体系。推荐以《现代机器人学》等工具书为参考,配合开源框架(Pi
HDU-4027-Can you answer these queries?(暴力线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4027 题目大意:n个数,两种操作,0.将[l,r]内的所有数开平方(四舍五入取ll),1.求[l,r]内的sum 思路:线段树板子,首先需要更新到最下面,1开平方还是1,所以一个数最多更新64次,然后记录一下是否需要开平发即可。 ACCode: #include<stdlib.h>...
有限元之有限元空间的构造
主要介绍有限元的空间构造方法。
电脑技巧:Hyper-V安装UOS操作系统图文教程
今天给大家分享微软官方Hyper-v虚拟机管理软件安装UOS操作系统图文教程,感兴趣的朋友也可以下载试一试,当然有啥问题也可以互相沟通交流!
Can you answer these queries? HDU 4027 线段树
Can you answer these queries? HDU 4027 线段树 题意 是说有从1到编号的船,每个船都有自己战斗值,然后我方有一个秘密武器,可以使得从一段编号内的船的战斗值变为原来值开根号下的值。有两种操作,第一种就是上面描述的那种,第二种就是询问某个区间内的船的战斗值的总和。 解题思路 使用线段树就不用多说了,关键是如果不优化的话会超时,因为每次修改都是需要递归...
YOLOv11改进缝合FasterBlock | 一种新型轻量化卷积结构C3k2的设计与实证:兼顾精度与速度的改进方法(附代码)
YOLO系列一直是目标检测领域的明星算法,凭借其实时性和准确性在众多应用中占据一席之地。随着YOLO版本的不断迭代,网络架构逐渐变得更为复杂,尤其是在卷积模块的设计上。本文将介绍如何利用FasterNet的FasterBlock创新,并通过二次创新C3k2提出一种全新的卷积结构。该结构旨在提高YOLOv11的计算效率和准确性,特别是在视觉任务中的表现。我们的创新在保证高精度的前提下,有效降低了计算量和内存需求,特别适合在资源受限的设备上运行。
Can you answer these queries?( HDU - 4027,线段树 + 细节)
一.题目链接: HDU-4027 二.题目大意: n 个数. 有两种操作. 0 X Y:将区间 [X, Y] 的数开方(向下取整) 1 X Y:查询区间 [X, Y] 的和. 三.分析: 直接线段树单点更新会 TLE,由于根号 7 次后向下取整为 1. 所以只需要记录每段区间被更新过的次数. 注意:所给的 X,Y 大小关系不确定因为这里 WA 了三天啊啊啊啊啊啊 555....
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
ssm框架搭建
这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载
hdu 4027(线段树区间开方求和)
本来很早就做了这道题的,但是今天突然发现了. 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4027 解法:首先这道题的数据就告诉我们只能用线段树,但区间操作似乎很蛋疼,我当时想的是用lazy标记记录这段区间要开方几次,等query时在统一进行单点更新,然后…….我就T了,如果update一次query一次,我的lazy标记便并卵了,所以我们需要想更
大中型超市收银系统(可直接运行)
光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开
HDU - 4027 Can you answer these queries? (线段树)
题目传送门:HDU - 4027 Can you answer these queries? 题目大意: 存在n艘敌军战舰,每艘战舰都有能量值,我军存在一种秘密武器,每次能够将在该区间内的所 有战舰的能量值开方,现在指挥官想要知道武器的效果,需要你告诉他该区间内敌军战舰的能 量值之和 分析: 该题对区间进行操作,显然是用线段树。两个操作分别是对区间进行开方和区间求和,对区间中战舰的能...
蓝牙模块HM-10手册
蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。
hdu 4027 Can you answer these queries?(线段树)
题目大意:hdu 4027 Can you answer these queries? 题目大意:给定一个长度为N的序列,Q次操作,0 l r:将区间l r之间的数开根;1 l r:查询l r之间数的和。 解题思路:这题看上去是一道线段树,其实它就是一道线段树,只不过不用想的太复杂,因为开根的趋近1的速度非常快,所以每个节点只要标记区间内元素是否相同即可。复杂度妥妥的。 #inclu
HDU 4027(线段树)
HDU4027 题意:操作指令为0时,对区间[x,y]之间的数字进行开平方;指令为1的时候,对区间[x,y]之间的数字求和并输出; 思路:线段树处理就OK了,但是64位内的数最多开8次平方就为1了(开始不信,试了试之后orz.......),所以在开平方的时候加一下限制条件使开平方操作提前结束没必要的操作就可以了,不然会超时。 代码中的这句:en - st + 1 == evil[rt]表示...
hdu-4027线段树练习
title: hdu-4027线段树练习 date: 2018-10-10 18:07:11 tags: acm 算法 刷题 categories: ACM-线段树 # 概述 这道线段树的题可以说是我这一段时间复习线段树后第一次认认真真的做的第一道线段树的题了吧,,,, 然后,,,看似很简单的题翻车了,,,,QAQ # 题意和分析 题意大概就是给你一些数,,然后对[l , r]这个区间里的...
HDU4027 Can you answer these queries?【线段树】
Can you answer these queries? Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others) Total Submission(s): 23332 Accepted Submission(s): 5550 Problem Description A ...
HDU4027线段树
此题有坑
【线段树】HDU - 4027 Can you answer these queries?
【题目】http://acm.hdu.edu.cn/showproblem.php?pid=4027 【题意】 【思路】 【代码】 #include<bits/stdc++.h> using namespace std; long long n; long long arr[100005]; long long Tree[800005]; void create(long...
HDU - 4027 Can you answer these queries? (线段树 区间更新 区间查询)
HDU - 4027 http://acm.hdu.edu.cn/showproblem.php?pid=4027 题意:更新的时候把要求区间内的值都更新为自己开根号,查询时查询区间和。 思路: 感觉自己有个不好的习惯,有题目没思路时老是容易去看题解或是discuss,这个习惯真的要改一下。 这个题由于是根号,所以必须得更新到点,然后会发现,每次开根号一个数会很快变成1,这时再对这段区间
[HDU 4027] Can you answer these queries? (线段树+区间开方)
HDU - 4027 给定一个长度为 N 的数列,有M个操作,操作分两种 一是让指定区间每个数都开方,二是询问区间的和 由于每个数都在LL范围内,所以实际上每个数开方的次数不会很多 用线段树维护区间和,开方就暴力到根,然后逐个开方 当发现区间全部都是 1的时候就直接return坑点: 所有数都大于 0 可能出现 l>r的情况,这时候要 swap(l,r) 每个case最后还要加一个换行
hdu4027 Can you answer these queries?(线段树)
hdu4027#include <bits/stdc++.h> using namespace std; typedef long long llt; struct Tree { int l,r; llt sum; }b[100000*4+1024]; void build(int l,int r,int i) { b[i].l=l; b[i].r=r; if(l==r){...
hdu 4027 Can you answer these queries? 线段树
hdu 4027 Can you answer these queries?A lot of battleships of evil are arranged in a line before the battle. Our commander decides to use our secret weapon to eliminate the battleships. Each of the b...
687



被折叠的 条评论
为什么被折叠?



