Codeforces Global Round 27 D.Yet Another Real Number Problem

news2024/11/23 15:46:19

题目

题解:

#include <bits/stdc++.h>
using namespace std;
// #define int long long
#define pb push_back
#define fi first
#define se second
#define lson p << 1
#define rson p << 1 | 1
#define ll long long
#define pii pair<int, int>
#define ld long double
const int maxn = 1e6 + 5, inf = 1e9, maxm = 4e4 + 5, base = 337;
const int N = 1e6;
const int mod = 1e9 + 7;
// const int mod = 998244353;
// const __int128 mod = 212370440130137957LL;
int n, m;
int a[maxn], b[maxn];
pii t[maxn << 2];
void push_up(int p){
    t[p] = max(t[lson], t[rson]);
}
void build(int p, int l, int r){
    if(l == r){
        t[p] = {a[l], l};
        return;
    }
    int mid = (l + r) >> 1;
    build(lson, l, mid);
    build(rson, mid + 1, r);
    push_up(p);
}
void update(int p, int l, int r, int pos, int val){
    if(l == r){
        t[p] = {val, l};
        return;
    }
    int mid = (l + r) >> 1;
    if(pos <= mid) update(lson, l, mid, pos, val);
    else update(rson, mid + 1, r, pos, val);
    push_up(p);
}
pii query(int p, int l, int r, int L, int R){
    if(L <= l && R >= r){
        return t[p];
    }
    int mid = (l + r) >> 1;
    pii res;
    if(L <= mid) res = max(res, query(lson, l, mid, L, R));
    if(R >= mid + 1) res = max(res, query(rson, mid + 1, r, L, R));
    return res;
}
int qpow(int a, int b){
    int res = 1;
    while(b){
        if(b & 1) res = 1LL * res * a % mod;
        a = 1LL * a * a % mod;
        b >>= 1;
    }
    return res;
}
void solve(){
    ll res = 0;
    // int k, q, w, d, p;
    cin >> n;
    // vector<int> a(n + 1), b(n + 1);
    vector<ll> prea(n + 1), ids, preb(n + 1);
    for(int i = 1; i <= n; i++){
        cin >> a[i];
        int x = a[i];
        b[i] = 0;
        while(x % 2 == 0){
            x /= 2;
            b[i]++;
        }
        a[i] = x;
        prea[i] = prea[i - 1] + a[i];
        preb[i] = preb[i - 1] + b[i];
    }
    build(1, 1, n);
    for(int i = 1; i <= n; i++){
        if(b[i]){
            ids.pb(i);
        }
        map<int, int> mp;
        int p1 = 0, p2 = 0;
        // cout << i << '\n';
        for(int j = (int)ids.size() - 1; j >= 0; j--){
            int id = ids[j];
            auto [mx, pos] = query(1, 1, n, id, i);
            // cout << "id = " << id << ' ' << "mx = " << mx << ' ' << "pos = " << pos << '\n';
            mp[pos] += b[id];
            int p = mp[pos];
            if(((__int128)a[pos] << p) > inf){
                p1 = id - 1;
                p2 = pos;
                break;
            }
            update(1, 1, n, pos, a[pos] << p);
        }
        if(p2){
            mp[p2] += preb[p1];
        }
        ll sum = prea[i] % mod;
        for(auto [x, y] : mp){
            sum = (sum + 1LL * (qpow(2, y) - 1 + mod) % mod * a[x] % mod) % mod;
            update(1, 1, n, x, a[x]);
        }
        cout << sum << " \n"[i == n];
    }
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout << fixed << setprecision(9);

    int T = 1;
    cin >> T;
    while (T--){
        solve();
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2229274.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Boot中解决BeanDefinitionStoreException问题的实战分享

目录 前言1. 问题背景2. 问题分析2.1 异常分析2.2 常见的错误原因2.3 排查过程 3. 解决方案3.1 清理缓存和重建项目3.1.1 清理IDEA缓存3.1.2 使用Maven清理并重建项目 3.2 升级Maven版本3.2.1 下载最新Maven版本3.2.2 IDEA配置新的Maven版本3.2.3 清理缓存并重新构建 3.3 验证问…

新160个crackme - 088-[KFC]fish‘s CrackMe

运行分析 需破解用户名和RegKey PE分析 C程序&#xff0c;32位&#xff0c;无壳 静态分析&动态调试 ida函数窗口逐个查看&#xff0c;找到关键函数sub_401440 ida无法动调&#xff0c;需使用OD&#xff0c;启用StrongOD插件才可以动调ida静态分析&#xff0c;逻辑如下&…

淘宝/天猫获得淘宝商品评论 API 返回值说明

淘宝/天猫获得淘宝商品评论 API 返回值说明 item_review-获得淘宝商品评论API注册测试 taobao.item_review 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包…

Rust精简核心笔记:第三波,基础语法完结篇

今天是Rust精简核心笔记第三波&#xff0c;也是完结篇。之前已经介绍了二波&#xff0c;Rust精简核心笔记&#xff1a;第一波&#xff0c;深入浅出语法精华-CSDN博客&#xff0c;Rust精简核心笔记&#xff1a;第二波&#xff0c;语法精髓部分解锁-CSDN博客&#xff0c;通过三波…

如何找到车在路上行驶的视频素材

作为一名热爱拍摄视频的大学生&#xff0c;找到合适的车在路上行驶的视频素材是非常重要的。不论你是制作城市宣传片、汽车广告&#xff0c;还是交通相关的教学视频&#xff0c;高质量的视频素材都能显著提升作品的专业性。今天&#xff0c;我为大家推荐几个优秀的网站&#xf…

unity中预制体的移动-旋转-放缩

unity中预制体的移动-旋转-放缩 左上侧竖栏图标介绍Tools(手形工具)Move Tool(移动工具&#xff0c;单位米)Rotate Tool(旋转工具&#xff0c;单位角度)Scale Tool(缩放工具&#xff0c;单位倍数)Rect Tool(矩形工具)Transform Tool(变换工具)图标快捷键对照表工具使用的小技巧…

用Pyhon写一款简单的益智类小游戏——2048

文字版——代码及讲解 代码—— import random# 初始化游戏棋盘 def init_board():return [[0] * 4 for _ in range(4)]# 在棋盘上随机生成一个2或4 def add_new_tile(board):empty_cells [(i, j) for i in range(4) for j in range(4) if board[i][j] 0]if empty_cells:i,…

【UBuntu20 配置usb网卡】 记录Ubuntu20配置usb网卡(特别是建立热点)

【UBuntu20 配置usb网卡】 Ubuntu20配置usb网卡&#xff08;特别是建立热点&#xff09; 一、 闲言碎语的前言 usb的外置网卡&#xff0c;相比Windows即插即用&#xff0c;Linux买回来一顿折腾&#xff0c;准备把过程梳理一下记录起来。 网卡的方案其实就那几家&#xff0c;…

Training-free layout control with cross-attention guidance

https://zhuanlan.zhihu.com/p/666445024https://zhuanlan.zhihu.com/p/666445024 支持两种模式,1.sd文生图;2.绑定了dreambooth和text inversion的图像编辑。 # ------------------ example input ------------------examples &

微信网页授权回调地址放多个参数的方法

https://open.weixin.qq.com/connect/oauth2/authorize?appidAPPID&redirect_uriREDIRECT_URI&response_typecode&scopeSCOPE&stateSTATE#wechat_redirect 跳转后地址 redirect_uri/?codeCODE&stateSTATE。 redirect_uri如果不进行urlencode编码, 跳转后…

Virtuoso使用layout绘制版图、使用Calibre验证DRC和LVS

1 绘制版图 1.1 进入Layout XL 绘制好Schmatic后&#xff0c;在原理图界面点击Launch&#xff0c;点击Layout XL进入版图绘制界面。 1.2 导入元件 1、在Layout XL界面左下角找到Generate All from Source。 2、在Generate Layout界面&#xff0c;选中“Instance”&#…

「Mac畅玩鸿蒙与硬件13」鸿蒙UI组件篇3 - TextInput 组件获取用户输入

在鸿蒙应用开发中,TextInput 组件用于接收用户输入,适用于文本、密码等多种输入类型。本文详细介绍鸿蒙 TextInput 组件的使用方法,包括输入限制、样式设置、事件监听及搜索框应用,帮助你灵活处理鸿蒙应用中的用户输入。 关键词 TextInput 组件用户输入输入限制事件监听搜索…

偷懒总结篇|贪心算法|动态规划|单调栈|图论

由于这周来不及了&#xff0c;先过一遍后面的思路&#xff0c;具体实现等下周再开始详细写。 贪心算法 这个图非常好 122.买卖股票的最佳时机 II(妙&#xff0c;拆分利润) 把利润分解为每天为单位的维度&#xff0c;需要收集每天的正利润就可以&#xff0c;收集正利润的区间…

时序数据分析:时序分割

目录 0 工况的定义 1 Changepoint 2 TreeSplit 3 Autoplait 4 应用示例 5.分析结论 0 工况的定义 工业设备系统在不同的外部条件&#xff08;即工况&#xff09;下&#xff0c;往往有多种运行模式&#xff0c;工业生产也往往会分阶段进行&#xff0c;在不同工况下&…

阿里云开源 AI 应用开发框架:Spring AI Alibaba

作者&#xff1a;刘军&#xff0c;Spring AI Alibaba 发起人&#xff0c;Apache Member 编者按&#xff1a; 6 年前&#xff0c;2018 年 10 月&#xff0c;阿里巴巴开源 Spring Cloud Alibaba&#xff0c;旨在帮助 Java 开发者通过 Spring Cloud 编程模型轻松开发微服务应用。…

一年期免费HTTPS证书:网络安全新选择

HTTPS证书的重要性 HTTPS证书&#xff0c;全称为安全套接字层/传输层安全协议证书&#xff0c;是一种在互联网上建立安全连接的数字证书。它通过公钥加密技术&#xff0c;对网站和用户之间的数据传输进行加密&#xff0c;有效防止数据被窃取或篡改&#xff0c;保障用户信息的安…

网络搜索引擎Shodan(7)完结

声明&#xff1a;学习视频来自b站up主 泷羽sec&#xff0c;如涉及侵权马上删除文章 声明&#xff1a;本文主要用作技术分享&#xff0c;所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险&#xff0c;并遵循相关法律法规。 感谢泷…

Web-高校教务考试管理系统

目录 一、前言 1.1 实践目的和要求 1.2 实践项目背景及意义 二、实践内容 2.1 实践过程 2.2 实践内容 2.2.1 项目介绍 2.2.2项目开发环境 2.2.3系统组成与功能 2.2.4 开发工作 2.3 主要成果 三、总结 3.1 个人心得 3.2 其它意见 一、前言 1.1 实践目的和…

顺序表排序相关算法题|负数移到正数前面|奇数移到偶数前面|小于x的数移到大于x的数前面|快排思想(C)

负数移到正数前面 已知顺序表 ( a 1 , … , a n ) (a_{1},\dots,a_{n}) (a1​,…,an​)&#xff0c;每个元素都是整数&#xff0c;把所有值为负数的元素移到全部正数值元素前边 算法思想 快排的前后指针版本 排序|冒泡排序|快速排序|霍尔版本|挖坑版本|前后指针版本|非递归版…

预览 PDF 文档

引言 在现代Web应用中&#xff0c;文件预览功能是非常常见的需求之一。特别是在企业级应用中&#xff0c;用户经常需要查看各种类型的文件&#xff0c;如 PDF、Word、Excel 等。本文将详细介绍如何在Vue项目中实现 PDF 文档的预览功能。 实现原理 后端API 后端需要提供一个…