当前位置: 首页 > wzjs >正文

php制作网站seo快速排名服务

php制作网站,seo快速排名服务,中国企业信息网查询系统官网,开发一个网页系统需要多少钱题目背景 XLk 觉得《上帝造题的七分钟》不太过瘾,于是有了第二部。 题目描述 "第一分钟,X 说,要有数列,于是便给定了一个正整数数列。 第二分钟,L 说,要能修改,于是便有了对一段数中每…

题目背景

XLk 觉得《上帝造题的七分钟》不太过瘾,于是有了第二部。

题目描述

"第一分钟,X 说,要有数列,于是便给定了一个正整数数列。

第二分钟,L 说,要能修改,于是便有了对一段数中每个数都开平方(下取整)的操作。

第三分钟,k 说,要能查询,于是便有了求一段数的和的操作。

第四分钟,彩虹喵说,要是 noip 难度,于是便有了数据范围。

第五分钟,诗人说,要有韵律,于是便有了时间限制和内存限制。

第六分钟,和雪说,要省点事,于是便有了保证运算过程中及最终结果均不超过 64 位有符号整数类型的表示范围的限制。

第七分钟,这道题终于造完了,然而,造题的神牛们再也不想写这道题的程序了。"

——《上帝造题的七分钟·第二部》

所以这个神圣的任务就交给你了。

输入格式

第一行一个整数 n,代表数列中数的个数。

第二行 n 个正整数,表示初始状态下数列中的数。

第三行一个整数 m,表示有 m 次操作。

接下来 m 行每行三个整数 k l r

  • k=0 表示给 [l,r] 中的每个数开平方(下取整)。

  • k=1 表示询问 [l,r] 中各个数的和。

数据中有可能 l>r,所以遇到这种情况请交换 l 和 r。

输出格式

对于询问操作,每行输出一个回答。

输入输出样例

输入 #1复制

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

输出 #1复制

19
7
6

说明/提示

对于 30% 的数据,1≤n,m≤103,数列中的数不超过 32767。

对于 100% 的数据,1≤n,m≤105,1≤l,r≤n,数列中的数大于 0,且不超过 1012。

代码实现:

#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;

typedef long long ll;
const int MAXN = 1e5 + 10;

// 线段树节点结构
struct Node {
    int l, r;
    ll sum;
    ll max_val; // 区间内最大值,用于判断是否需要继续开平方
} tree[MAXN << 2];

ll arr[MAXN]; // 原始数组

// 构建线段树
void build(int node, int l, int r) {
    tree[node].l = l;
    tree[node].r = r;
    if (l == r) {
        tree[node].sum = arr[l];
        tree[node].max_val = arr[l];
        return;
    }
    int mid = (l + r) >> 1;
    build(node << 1, l, mid);
    build(node << 1 | 1, mid + 1, r);
    tree[node].sum = tree[node << 1].sum + tree[node << 1 | 1].sum;
    tree[node].max_val = max(tree[node << 1].max_val, tree[node << 1 | 1].max_val);
}

// 区间开平方操作
void update(int node, int l, int r) {
    // 如果当前区间与目标区间无交集或区间最大值为1(无需再开平方),直接返回
    if (tree[node].r < l || tree[node].l > r || tree[node].max_val == 1) {
        return;
    }
    // 如果当前区间完全包含在目标区间内且是叶子节点
    if (tree[node].l == tree[node].r) {
        tree[node].sum = (ll)sqrt(tree[node].sum);
        tree[node].max_val = tree[node].sum;
        return;
    }
    // 递归更新左右子树
    update(node << 1, l, r);
    update(node << 1 | 1, l, r);
    // 更新当前节点的和与最大值
    tree[node].sum = tree[node << 1].sum + tree[node << 1 | 1].sum;
    tree[node].max_val = max(tree[node << 1].max_val, tree[node << 1 | 1].max_val);
}

// 区间求和查询
ll query(int node, int l, int r) {
    // 如果当前区间与目标区间无交集,返回0
    if (tree[node].r < l || tree[node].l > r) {
        return 0;
    }
    // 如果当前区间完全包含在目标区间内,返回当前区间和
    if (l <= tree[node].l && tree[node].r <= r) {
        return tree[node].sum;
    }
    // 递归查询左右子树并求和
    return query(node << 1, l, r) + query(node << 1 | 1, l, r);
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> arr[i];
    }
    
    // 构建线段树
    build(1, 1, n);
    
    int m;
    cin >> m;
    while (m--) {
        int k, l, r;
        cin >> k >> l >> r;
        if (l > r) swap(l, r); // 处理l>r的情况
        
        if (k == 0) {
            // 开平方操作
            update(1, l, r);
        } else {
            // 求和查询
            cout << query(1, l, r) << endl;
        }
    }
    
    return 0;
}

http://www.dtcms.com/wzjs/589365.html

相关文章:

  • 网站设计的能力要求安福县住房和城乡建设局网站
  • 我买了一个备案网站 可是公司注销了搜索引擎营销方案例子
  • 客户网站加一个功能 应该怎么做女性广告
  • 合肥建设集团招聘信息网站深圳高端包装盒设计
  • 高端定制网站设计公司o2o网站建设效果
  • 垂直网站做益智类问答商城系统网站模板
  • 制作网站时搜索图标如何做南山制作网站
  • 运城 网站 建设 招聘电子商城网站开发公司
  • 腾冲市住房和城乡建设局网站网易企业邮箱是什么
  • 网站开发客户个人网站页面
  • 鞍山网站wordpress print_r
  • 建行网站首页登录网上银行单页面网站有哪些内容
  • 网站设计制造wordpress设置新窗口打开链接
  • 网站建站网站制作公司国内ui做的好的网站有哪些
  • 乐清高端网站建设seo工作内容和薪资
  • 网站建设是什么语言小制作小发明手工图片
  • 东莞市外贸网站建设平台专业做pc+手机网站
  • 苍南县规划建设局网站广告设计app免费
  • 在线直播网站开发实战项目科技公司网页图片
  • 河北省建设机械会网站网络营销企业有哪些公司
  • 无锡找做网站公司网站经营性备案难不难
  • 教程网网站源码php福州住房建设厅网站
  • 海南响应式网站建设哪里好杭州两网建设
  • 网站建设中html下载重庆网站建设价格费用
  • 举报网站怎么做网站是做后台好还是做前台好
  • 高端的网站开发专业互联网软件开发
  • 网站后台不能审核删除做的比较唯美的网站有哪些
  • 合肥seo整站优化网站网站开发的职业规划
  • 建设网站的主要功能有哪些怎么样制作个网站
  • 网站在线备案wordpress固定连接nginx