Codeforces Round 907 (Div. 2) (C 贪心 D套路? F dfs序+差分树状数组)

A:

这种操作题,每次先想这个操作有什么性质

对于2^0来说可以操作 第1位

 对于2^1来说可以操作 第1-2位

对于2^2来说可以操作 第1-4位 (第3位无法单独修改)

对于2^3来说可以操作 第1-8位(第5 6 7位无法单独修改)

可以观察到我们要求无法修改的数要按顺序才能满足

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10,mod= 998244353;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
const long long inf=1e17;
int n,m,k;
vector<int> g[N];
int a[N];
void solve()
{cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=2;i<=5;i++){bool ok=true;// cout<<pow(2,i-1)<<" "<<pow(2,i)<<"\n";for(int j=pow(2,i-1)+1;j<pow(2,i);j++){if(j+1>n||j>n) break;if(a[j]<=a[j+1]) continue;ok=false;}    if(!ok){cout<<"NO\n";return ;}}cout<<"YES\n";
}signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;cin>>t;while(t--) solve();
}

B:

操作题,还是想操作当前数x对每个数组a的每个数有啥影响

如果当前数a[i]可以整除2^x,然后加上2^(x-1),那么下次这个数就不能整除2^x

那么他就会变成2^(x-1)的倍数了,他的因子不包含2^x,所以不会再操作

然后x最多30个数,去重后操作即可

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10,mod=1e9+7;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
const long long inf=1e17;
int n,m,k;
vector<int> g[N];
int a[N];class BitTree {public:vector<int> tree;int n;BitTree(int _n) : n(_n) {tree.resize(n+1);fill(tree.begin(),tree.end(),0);}inline int lowbit(int x) { return x&-x; }inline void Modify(int x,int v) {for(;x<=n;x+=lowbit(x)) tree[x]+=v;}inline int q(int x) {int ret=0;if(x<=0) return 0;for(;x;x-=lowbit(x)) ret+=tree[x];return ret;}inline int Query(int l,int r) {return q(r)-q(l-1);}
};
int l[N],r[N];
void solve()
{vector<int> b;map<int,int> mp;cin>>n>>m;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=m;i++){int x;cin>>x;if(mp.count(x)) continue;mp[x]++;b.push_back(x);}for(int i=1;i<=n;i++){int x=a[i];for(auto y:b){if(x%(1<<y)==0){x+=(1<<y-1);}}cout<<x<<" \n"[i==n];}}signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;cin>>t;while(t--) solve();
}

C:贪心,肯定是积个大的秒后面数量多的,然后当操作最后一个数的时候,尽量别浪费当前计数器的数,要分奇偶性和1,比如8,前面已经有2了,那么再操作2次,计数器变成4,操作个计数器秒掉,如果当前是8,前面计数器是3,为了不浪费计数器,最后一次肯定是直接消灭而不是使用计数器,所以先-1变成偶数(如果不这样做,最后计数器会多1,次数可能会增加),再换成偶数操作即可,特判1

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10,mod= 998244353;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
const long long inf=1e17;
int n,m,k;
vector<int> g[N];
int a[N];
void solve()
{cin>>n;for(int i=1;i<=n;i++) cin>>a[i];sort(a+1,a+1+n);int res=0;int l=1,r=n;int sum=0;while(l<=r){if(a[l]==0){l++;continue;}if(l==r){if(a[l]==1){res++;break;}if((a[l]-sum)%2==1){res+=(a[l]-sum)/2+1;res++;}else{res+=(a[l]-sum)/2+1;}cout<<res<<"\n";return ;}if(a[r]<=sum+a[l]){int x=a[r]-sum;res+=x+1;a[l]-=x;r--;sum=0;}    else{sum+=a[l];res+=a[l];l++;    }}cout<<res<<"\n";
}signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;cin>>t;while(t--) solve();
}

D:套路题,求两个区间差即可

然后我画图你应该能看懂

g的函数的值最多有两个不同,因为3 4 5...的增长比2增长快,所以最多两个

可以观察到g的值怎么求

比如8 到 15

用3的倍数求

16到31用 4倍数求他们的g的值,然后乘上求区间个数即可

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10,mod=1e9+7;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
const long long inf=1e17;
int n,m,k;
vector<int> g[N];
int a[N];
void solve()
{auto get=[&](int x){int res=0;int c=2;for(int i=4;i<=x;i*=2){int cnt=0;int r=min(x,i*2-1);__int128 now=1;while(now<=i) cnt++,now*=c;c++;if(now>r){res+=(r-i+1)%mod*(cnt-1)%mod;}else{int t=r-now+1;t%=mod;res+=t*cnt%mod+(now-i)%mod*(cnt-1);}}return res%mod;};int l,r;cin>>l>>r;cout<<((get(r)-get(l-1))%mod+mod)%mod<<"\n";
}signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;cin>>t;while(t--) solve();
}

F:首先肯定要把数dfs一遍弄出来把,不然鬼知道子树有哪些

然后我们把树画出来

假设 5是新增的节点,我们怎么操作,

直接把前面5节点的数全部减成0即可

然后就是差分咯,因为子树增加是增加整个区间的

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10,mod=1e9+7;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
const long long inf=1e17;
int n,m,k;
vector<int> g[N];
int a[N];class BitTree {public:vector<int> tree;int n;BitTree(int _n) : n(_n) {tree.resize(n+1);fill(tree.begin(),tree.end(),0);}inline int lowbit(int x) { return x&-x; }inline void Modify(int x,int v) {for(;x<=n;x+=lowbit(x)) tree[x]+=v;}inline int q(int x) {int ret=0;if(x<=0) return 0;for(;x;x-=lowbit(x)) ret+=tree[x];return ret;}inline int Query(int l,int r) {return q(r)-q(l-1);}
};
int l[N],r[N];
void solve()
{cin>>n;for(int i=1;i<=n*2+10;i++)g[i].clear();vector<array<int,3>>query;int now=1;for(int i=0;i<n;i++){int op;cin>>op;if(op==1){now++;int v;cin>>v;query.push_back({op,v,0});g[v].push_back(now);}else{int v,x;cin>>v>>x;query.push_back({op,v,x});}}int dfn=0;function<void(int)> dfs=[&](int u){l[u]=++dfn;for(auto v:g[u]){dfs(v);}r[u]=++dfn;};dfs(1);BitTree tr(n*2+10);now=1;for(auto [op,v,x]:query){if(op==1){//v增加一个子节点now++;int t=tr.q(l[now]);tr.Modify(l[now],-t);tr.Modify(r[now],t);}else{tr.Modify(l[v],x);tr.Modify(r[v],-x);}}for(int i=1;i<=now;i++){cout<<tr.q(l[i])<<" \n"[i==now];}
}signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;cin>>t;while(t--) solve();
}

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

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

相关文章

Java中的i++是原子操作吗?

我们都知道i分为三步进行&#xff0c;分别是1:取到当前i的值&#xff0c;2&#xff1a;&#xff0c;3&#xff1a;将最终结果赋值 因此我们可通过创建两个线程&#xff0c;对同一个变量count,一个线程对count进行递增操作&#xff0c;另一个线程对count进行递减操作。每个线程…

Redis的高可用模式

1. 什么是高可用&#xff1f; 高可用&#xff08;High Availability, HA&#xff09;是指在信息技术中确保系统、服务或应用程序在绝大多数时间内都是可操作和可访问的能力。这通常涉及以下几个关键方面&#xff1a; 最小化停机时间: 高可用系统的目标是减少因硬件故障、系统升…

英语二笔记

完型填空 20题/0.5分 总分10, 至少拿8分 阅读理解A 20题/2分 总分40 至少拿24分 阅读理解B 5题/2分 总分10 至少拿6分 短文翻译 1题/15分 总分15分 至少拿9分 小作文 1题/10分 总分10分 至少拿6分 大作文 …

Talk | UCSB博士生许闻达:细粒度可解释评估初探

本期为TechBeat人工智能社区第551期线上Talk。 北京时间11月29日(周三)20:00&#xff0c;UC Santa Barbara博士生—许闻达的Talk将准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “细粒度可解释评估初探”&#xff0c;分享了他们团队在具备解释性的细粒度…

流程不会搭建?集简云上线AI智能创建流程功能,辅助您更简单地创建自动化流程

用户在使用集简云创建流程时&#xff0c;经常会遇到的两个问题&#xff1a; 1. 不知道要如何选择应用动作&#xff0c;和动作的执行顺序&#xff1b; 2. 应用动作设置中的字段匹配&#xff0c;不知道要如何选择对应的字段&#xff1b; 集简云基于大量历史数据积累与自训练AI模…

BatchOutput PDF for Mac(PDF 批量处理软件)

BatchOutput PDF是一款适用于 Mac 的 PDF 批量处理软件。它可以帮助用户将多个 PDF 文件进行异步处理&#xff0c;提高工作效率。 BatchOutput PDF 可以自动化执行许多任务&#xff0c;包括 PDF 文件的打印、转换、分割、压缩、加密、重命名等&#xff0c;而且它还可以将自定义…

php许愿墙代码包括前端和后端部分

以下是一个简单的PHP许愿墙代码示例&#xff0c;包括前端和后端部分&#xff1a; 前端HTML代码&#xff08;index.html&#xff09;&#xff1a; <!DOCTYPE html> <html> <head><title>许愿墙</title> </head> <body><h1>许…

通过流量监控分析某个部门或客户端网络性能

在当今数字化时代&#xff0c;网络已经成为组织和企业不可或缺的基础设施之一。作为信息传输和数据交互的关键载体&#xff0c;网络的性能对于保障业务的稳定运行和提升工作效率至关重要。因此&#xff0c;对某个部门或客户端网络的性能进行分析和评估&#xff0c;有助于了解当…

MGF4964BL-01 低噪声 InGaAs HEMT(高电子迁移率晶体管) K波段放大器 微X型塑料封装

MGF4964BL-01超低噪声 InGaAs HEMT(高电子迁移率晶体管)设计用于K波段放大器。MGF4964BL-01是符合 RoHS 标准的产品&#xff0c;通过无铅认证。 MGF4964BL-01特征&#xff1a; f20GHz NFmin 时的低噪声系数。0.65 分贝(典型值) f20GHz 时的高相关增益 Gs 13.5dB(典型值。) MG…

spring cloud Eureka注册中心和Nacos注册中心

文章目录 Eureka注册中心.Eureka的结构和作用搭建eureka-server创建 服务引入eureka依赖编写启动类编写配置文件启动服务 服务注册1&#xff09;引入依赖2&#xff09;配置文件3&#xff09;启动多个user-service实例 服务发现1&#xff09;引入依赖2&#xff09;配置文件3&…

Stability AI 新发布SDXL Turbo:一款实时文本到图像生成模型

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

接入SCDN可以对网站进行防护,解决攻击问题吗?

最近遇到很多用户都在跟德迅云反馈自己网站遇到攻击问题&#xff0c;有的是反馈自己的网站用户反应打开网站很卡甚至打不开&#xff0c;有的用户自己的网站服务器都无法连接上了。通过德迅云安全对用户反馈的问题进行详细查看分析后&#xff0c;给用户提供了安全SCDN方案&#…

Ubuntu 安装Verilator——翻译自官网

… 威尔逊-斯奈德版权所有 2003-2023。 … SPDX 许可证标识符&#xff1a; 仅限 LGPL-3.0 或 Artistic-2.0 … _安装&#xff1a; 安装 本节讨论如何安装 Verilator。 软件包管理器快速安装 使用发行版的软件包管理器是最简单的入门方法。入门的最简单方法。(请注意&#xf…

PHP开源问答网站平台源码系统 源码全部开源可二次开发 附带完整的搭建教程

目前&#xff0c;问答网站已经成为人们获取知识、交流思想的重要平台。然而&#xff0c;对于许多开发者来说&#xff0c;从头开始构建一个问答网站可能会面临各种挑战。今天&#xff0c;小编给大家介绍一款基于PHP的开源问答网站平台源码系统&#xff0c;它不仅源码全部开源&am…

IDEA-快捷键大全

快捷键大全 1 alt r 执行run 2 alt / 提示补全 3 ctrl / 单行注释 4 ctrl shift / 多行注释 5 ctrl alt down 向下复制一行 6 ctrl d 删除一行或者选中行 7 alt down 向下移动行 8 alt up 向上移动行 9 ctrl shift enter 向上开…

AI搜索相关性在网站和APP上的应用

设定场景&#xff1a;您在寻找一件新衣服&#xff0c;所以在浏览最喜欢的网店。您跳到搜索栏上&#xff0c;输入您要找的东西。您期待出现什么结果&#xff1f; 高度准确、相关和即时的结果。 无论在什么网站上搜索&#xff0c;寻找什么&#xff0c;甚至在打错字或使用了错误的…

八个优秀开源内网穿透工具

内网穿透&#xff08;NAT穿透&#xff09;是一种将本地网络服务暴露给互联网的一种技术。这种技术可以很好地解决许多局域网内的资源共享。采用路由的方式将一台计算机变成一个“路由器”&#xff0c;将公共的网络地址转为内部网络地址&#xff0c;从而实现通过英特网可以访问局…

COMP2400Relational Databases

COMP2400Relational Databases WeChat&#xff1a;yj4399_ Sina Visitor System

HarmonyOS应用开发者高级认证--96分

哈哈哈&#xff0c;喜欢分享的我又来了&#xff0c;这不最近在考HarmonyOS应用开发高级认证&#xff0c;给大家做了一期汇总进行学习交流&#xff0c;在这里给大家教一个小技巧&#xff0c;复制粘贴&#xff0c;word搜索&#xff0c;我啥也不知道&#xff0c;我只是说有一个小技…

四位的车号刚好是一个整数的平方。

题目&#xff1a; 一辆卡车违反交通规则&#xff0c;撞人后逃跑.现场有三个人目击事件, 但都没有记住车牌号.只记下车号的一些特征. 甲说&#xff1a;牌照的前两个数字相同&#xff1b; 乙说&#xff1a;牌照的后两个数字相同&#xff0c; 但与前两个不同&#xff0c;丙是位数…