CF1744B Even-Odd Increments
简要题意
\(T\) 组数据,每组数据给定一个长度为 \(n\) 的数列,有 \(q\) 次操作,共有两种操作:
- \(\texttt{0 x}\),给数列中所有偶数加上 \(x\);
- \(\texttt{1 x}\),给数列中所有奇数加上 \(x\);
每一次操作结束后,输出数列的和。
\(1 \leq T \leq 10^{4},1 \leq n,q \leq 10^{5}\)
思路
相当巧妙的一道思维题。
首先,如果直接暴力搞貌似不太行,线段树太难写,而且也没有区间操作。
其实这道题有一个更简单的做法,首先,如果 \(x\) 时奇数,那么在 \(0\) 操作中所有数都会变成偶数,在 \(1\) 操作中所有数都会变成奇数。(因为奇数加奇数为偶数,奇数加偶数为奇数,偶数加偶数为偶数)。再维护一个全局和,你发现就可以 \(O(1)\) 操作了。
整体时间复杂度 \(O(T(n+q))\)。
代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
int odd,even,sum,n,q,a[100005];
void solve(){
odd=0;even=0;sum=0;
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>a[i];
sum += a[i];
if(a[i]&1)odd++;
else even++;
}
while(q--){
int op,x;
cin>>op>>x;
if(op==0){
sum += even*x;
if(x&1){
odd=n;
even=0;
}
}
else{
sum += odd*x;
if(x&1){
even=n;
odd=0;
}
}
cout<<sum<<'\n';
}
}
signed main(){
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int t;cin>>t;
while(t--){
solve();
}
return 0;
}
CF1744B Even-Odd Increments的更多相关文章
- [LeetCode] Odd Even Linked List 奇偶链表
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...
- Odd Even Linked List
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...
- LeetCode 328. Odd Even Linked List
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...
- tr:even 与tr:odd
:even匹配所有索引值为偶数的元素,从 0 开始计数查找表格的1.3.5...行(即索引值0.2.4...)<table> <tr><td>Header 1< ...
- Leetcode Odd Even Linked List
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...
- CSS3伪类选择器:nth-child()(nth-child(odd)/nth-child(even))
nth-child(odd):奇数 nth-child(even):偶数 使用时,如果是精确到数字时,切记是从同一级别的元素开始计算,而不是指定某个类才开始计算. 比如: <li>< ...
- [CareerCup] 5.6 Swap Odd and Even Bits 交换奇偶位
5.6 Write a program to swap odd and even bits in an integer with as few instructions as possible (e. ...
- [Educational Codeforces Round 16]C. Magic Odd Square
[Educational Codeforces Round 16]C. Magic Odd Square 试题描述 Find an n × n matrix with different number ...
- 328. Odd Even Linked List——多利用fake_head
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...
- 越狱Season 1-Episode 12:Odd Man Out
Season 1-Episode 12:Odd Man Out -Sorry to keep you waiting. 抱歉让你等了半天 -Oh, it's, uh, not a problem. 嗯 ...
随机推荐
- 多态特征,instanceof关键字和abstract类
多态 对象有多种状态.作用:提高程序的可扩展性. 一个对象具备多种状态的能力,这个程序是可扩展的. 前提: 必须有层级关系 继承 实现 继承:子类和父类的关系,一个父类可以有多个子类,说明父类的引用有 ...
- Windows应急响应——敬请期待!
检查内容 进程.服务.用户.网络连接.漏洞补丁.木马查杀. 工具 火绒剑. 防护措施 杀毒软件
- 知识图谱-生物信息学-医学顶刊论文(Briefings in Bioinformatics-2021):生物信息学中的图表示学习:趋势、方法和应用
4.(2021.6.24)Briefings-生物信息学中的图表示学习:趋势.方法和应用 论文标题: Graph representation learning in bioinformatics: ...
- 华为开发者大会2022:HMS Core 3D建模服务再升级,万物皆可驱动
11月4日,HDC2022华为开发者大会在东莞松山湖举办.在本次大会的HMS Core创新图形能力分论坛中,HMS Core重点介绍了其在3D技术领域的创新应用方向,其中3D建模服务展示了创新的自动骨 ...
- Java学习之Filter与Listener
0x00前言 web中的Filiter:当客户端访问服务端资源的时候,过率器可以把请求拦截下来,完成一些特殊的功能 完成的操作一般都是通用的作用:列如登录验证. web中的Listener一般用于加载 ...
- Git+Github协作开发流程
采用合作开发者的方式进行协作开发,下面以zlcook和zlserver合作开发iqas-ios-record项目为例进行讲解,zlcook为项目创建者,zlserver为项目参与者.协作开发步骤如下: ...
- vmware workstation NAT模式配置
一. 配置虚拟网络编辑器 1. 打开虚拟网络编辑器 2. 点击右下角更改设置 3. 选择NAT模式 点击选中NAT模式的虚拟网络,默认为VMnet8(可调整),可设置NAT模式的子网IP和掩码 4. ...
- [排序算法] 希尔排序 (C++)
前言 本文章是建立在插入排序的基础上写的喔,如果有对插入排序还有不懂的童鞋,可以看看这里. 直接/折半插入排序 2路插入排序 希尔排序解释 希尔排序 Shell Sort 又名"缩小增量排序 ...
- Spring Security(1)
您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来- 虽然说互联网是一个非常开发.几乎没有边界的信息大海,但说起来有点奇怪的是,每个稍微有点规模的互联网应用都有自己的权限系统,而权限的本质却是是封闭 ...
- Karmada跨集群优雅故障迁移特性解析
摘要:在 Karmada 最新版本 v1.3中,跨集群故障迁移特性支持优雅故障迁移,确保迁移过程足够平滑. 本文分享自华为云社区<Karmada跨集群优雅故障迁移特性解析>,作者:Karm ...