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. 嗯 ...
随机推荐
- 刷完一千道java笔试题的常见题目分析
java基础刷题遇到的最常见问题 可以先看一下这位博主整理的java面试题(很详细,我看了好几遍了):https://blog.csdn.net/ThinkWon/article/details/10 ...
- AI人脸识别+换脸
视频换脸可参考 https://github.com/iperov/DeepFaceLab import dlib.dlib as dlib import numpy import sys impor ...
- C#-多线程的使用Tread
首先是概念,什么是线程? 线程是操作系统分配CPU时间的基本单元,在一个进程中可以有多个线程同时执行代码. 谈一谈什么是进程? 简单的说,一个正在运行的应用程序可以视为一个进程,进程间相互独立,资源不 ...
- 17_Vue列表过滤_js模糊查询
列表过滤 需求分析 这里呢有张列表,假设这个列表有一百多条数据 当我在这个 搜索框当中 搜索 单个关键字的时候 (冬,周,伦),它能把带了这几个关键字的信息都给我罗列出来 === 跟数据库的 模糊查询 ...
- 基于 Sealos 的镜像构建能力,快速部署自定义 k8s 集群
Sealos 是一个快速构建高可用 k8s 集群的命令行工具,该工具部署时会在第一个 k8s master 节点部署 registry 服务(sealos.hub),该域名通过 hosts 解析到第一 ...
- python3获取列表逆序的五种方式
前言 我们将这几种方式分为两类,一种是对列表本身进行操作,改变对应内存中的值,另一种是带有返回值的,相当于拷贝了一份 对列表内存中进行操作 sort() 函数 a = [1,2,3,4] a.sort ...
- 防御式编程之断言assert的使用
防御式编程的重点就是需要防御一些程序未曾预料的错误,这是一种提高软件质量的辅助性方法,断言assert就用于防御式编程,编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设.使用断言是 ...
- JavaEE Day03 MySQL约束
MySQL约束--今日内容 1. SQL-(DDL,DML,DQL),讲完DQL查询语句的使用 排序查询 聚合函数 分组查询 分页查询 2. 约束 3. 多表之间的关系 4. 范式(用于更好地设计表, ...
- 2A锂电池充电管理IC,具有恒压/恒流充电模式
PW4052 是一颗适用于单节锂电池的.具有恒压/恒流充电模式的充电管理 IC.该芯片采用开关型的工作模 式, 能够为单节锂电池提供快速. 高效且简单的充电管理解决方案. PW4052 采用三段式充电 ...
- 简单的Dos命令学习
Dos命令学习 打开CMD的方式 从菜单栏打开,windows系统里 win+R 输入cmd 在任意文件夹下,按住shift+右键,点击打开PowerShell 在资源管理器的地址栏前面加上cmd+空 ...