Even-Odd Increments

Even-Odd Increments

题目传送门

题目大意:给定一个长度为 nn 的数列,有 qq 次操作,每次对数列中的奇偶数进行操作,问每次执行完操作后数列的总和。

如果一一遍历去修改的话,时间是 O(nq)O(nq) 会超时。

但是,他只对数列中的奇数或偶数进行加和,我们只要统计出奇数和偶数的个数,加和就是他们的个数乘上这个加上的数就是现阶段的贡献。

但是,把一个数加上某个数,这个数的奇偶性就会发生变化。

如果当前的数是偶数,加上的数是奇数的话,这个数就变成奇数,那么所有的偶数变成奇数,奇数的个数就是 nn,偶数就是 00

奇数的如上所示,是一样的。

最后记得要统计初始的贡献。

#include<bits/stdc++.h>
using namespace std;
const int N =1e6+10;
#define int long long
signed main()
{
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	int t;
	cin>>t;
	while(t--)
	{
		int n,q,sum=0,ans=0,ans1=0;
		cin>>n>>q;
		for(int i=1,x;i<=n;i++)
		{
			cin>>x,sum+=x;
			if(x%2==0)
				ans++;
			else
				ans1++;
		}
		while(q--)
		{
			int opt,s;
			cin>>opt>>s;
			if(opt==0)
			{
				sum+=ans*s,cout<<sum<<endl;
				if(s%2!=0)
					ans1=n,ans=0;
			}
			else
			{
				sum+=ans1*s,cout<<sum<<endl;
				if(s%2!=0)
					ans1=0,ans=n;
			}
		 } 
	}
	return 0;
}
posted @   June_Failure  阅读(4)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示