首页 > 其他分享 >模拟赛c题补题

模拟赛c题补题

时间:2024-03-08 16:15:25浏览次数:36  
标签:qq cnt int s2 s1 sum2 补题 模拟

暴力的写法
会导致题目超时所以采用前缀和但是前缀和如果只靠一个数组表示会很绕
https://vjudge.net/contest/614523#problem/C
暴力代码(过不了)

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int p =2e5+10;
int s1[p],s2[p], qq[p]; 
int main(){
	int n, m,sum1, sum2, maths=0;
	cin >> n;
	for(int i = 1; i <= n; i++)
	{
		cin >> qq[i];
	}
	for(int i = 1; i <= n; i++)
	{
		sum1 = 0;
		sum2 = 0;
		for(int j = 1; j <= n; j++)
		{
			if(i == j)continue;
			else if(j > i && j % 2 == 0)
			{
				sum1 += qq[j];
			}
			else if(j > i  && j % 2 == 1)
			{
				sum2+= qq[j];
			}
			else if(j < i && j % 2 == 1)
			{
				sum1 += qq[j];
			}
				else if(j < i && j % 2 == 0)
			{
				sum2 += qq[j];
			}
		}
		if(sum1 == sum2)maths++;
	}
	cout << maths <<"\n";
	return 0;
}
AC代码
点击查看代码
#include <bits/stdc++.h>
using namespace std;
//*cin >> s1[1];
	//for(int i = 2; i <= a; i++)
	//{
		//cin >> cnt[i];
		//if(i % 2 == 1)
		//{
			//s1[i] += s1[i - 2] + cnt[i]; 
	//	}
		//else s2[i] += s2[i - 2] + cnt[i];
		//这种输入方法会很绕得后面脑子转过来不然就是错的 
const int p = 2e5+10;//题目为2E5所以开一个范围为2E5的数组,开小了会被pass,交之前经历过了 
int cnt[p], s1[p]={0}, s2[p]={0};//s1 存奇数  s2存偶数 
int main()
{
	int a, sum1 ,sum2, n = 1, m = 1, x , result = 0;// m 用来记录所有奇数位的数字之和 
	cin >> a;//n用来记录所有偶数位的数字之和 
	for(int i = 1; i <= a ; i++)
	{
		std::cin >> cnt[i];
		if(i % 2 ==1)
		{
			s1[i] = s1[i - 2] + cnt[i];//运用前缀和的思想来算出拿走对应的数所对应的奇数和  
			m+=cnt[i];//m是所以奇数的和 
		}
		else{
			s2[i] = s2[i - 2] + cnt[i];//运用前缀和的思想来算出拿走对应的数所对应的偶数和  
			n+=cnt[i];//n是所以偶数的和 
		}
	}
	for(int i = 1; i <= a; i++)
	{
		sum1 = 0, sum2 = 0;//sum1 用来记录变换后的奇数和 sum2 用来记录变换后的偶数和 
		if(i % 2 == 0 )
		{
			sum1 = n + s1[i - 1] - s2[i];//变换后的奇数和 等于  偶数和减去变换前的偶数和加上变化后的奇数和  
			sum2 = m + s2[i - 2] - s1[i - 1]; //变换后的奇数和 等于  奇数和减去变换前的奇数和加上变化后的偶数和 
		}//为什么这样子呢因为中间抽走一个数后对于抽走前的数没有影响 但是对抽走后的数会 导致 奇数位变成偶数位 偶数位变成奇数位 
		if(i % 2 == 1)//例如  1 2 3 4 5 6 我们把 3 抽走以后 就变成了1 2 4 5 6 || 4 对应的变成了 3 号位 就是奇数位 5 对应变成了 4 号位 就是偶数位 
		{
			sum1 = n + s1[i - 2] - s2[i - 1];//为什么sum1 s1[i - 2] 就是我对应变换前的奇数和 s2[i - 1]是我对应偶数位变换前的数字 s1 代替了 s2  的位置 
			sum2 = m + s2[i - 1] - s1[i];
		}
		if(sum1 == sum2)result++;
	}
	
	std::cout << result <<"\n";
	return 0;
}

标签:qq,cnt,int,s2,s1,sum2,补题,模拟
From: https://www.cnblogs.com/gqc4722/p/18061192

相关文章

  • Vjudge模拟小组
    A-FlagofBerland思路:Code:#include<bits/stdc++.h>usingnamespacestd;constintN=105;intn,m;vector<string>s(N),ss(N);boolcheck(intn,intm){if(n%3)returnfalse;intdivide=n/3;if(s[divide]==s......
  • 初三奥赛模拟测试1--T1回文
    初三奥赛模拟测试1--\(T1\)回文HZOI题意给定一个\(n\timesm\)的,由字符组成的矩阵\(A\),问你由\((1,1)\)开始,点\((i,j)\)只可以往\((i+1,j)\)和\((i,j+1)\)走,走到\((n,m)\)停。记录路径,问由路径上的字符构成的字符串能是回文串......
  • SSK:超级键盘模拟器,调用底层,可模拟所有按键
    SSK-吵架键盘模拟器SuperSimulatorofKeyboard调用系统底层,能够模拟所有键盘操作!本程序结合快Key(QuicKeys智能登录助手)一起使用,能够创造更多奇迹!【下载】点击下载 SSK:超级键盘模拟器:https://files.cnblogs.com/files/BigSystemsView/SSK-%E8%B6%85%E7%BA%A7%E9%94%A......
  • 前端页面使用js模拟ping命令
    letuserIpAddress='';//创建XMLHttpRequest对象varxhr=newXMLHttpRequest();xhr.open('GET','https://api.ipify.org/?format=json');//调用第三方API获取IP地址xhr.onload=function(){if(xhr.status===......
  • 模拟退火学习笔记
    模拟退火,优雅的暴力我认为有必要摘抄一下提单上的简介ZX写的前言:本片适用于模拟退火入门-进阶模拟退火(SA)是一种随机化算法。当一个问题的方案数量极大(甚至是无穷的)而且不是一个单峰函数时,我们常使用模拟退火求解。一般的,很多题都可以用模拟退火水过,在OI界称之[优雅的暴......
  • Codeforces Round 931div2补题
    B.YetAnotherCoinProblem真[https://www.bilibili.com/video/BV1o2421M7pV/]不同硬币之间有倍数关系,使得一定数量后的小硬币可以被大硬币替代达到最优方案,而每个小硬币在最优下有可能的数量如下,进行枚举后找到最优方案。1:不多于2个(3个1会被3替代)3:不多于一个(2个3......
  • sql 模拟转账
    CREATEDATABASE`shop`CHARACTERSETutf8COLLATEutf8_general_ciCREATETABLE`account`( `id`INT(3)NOTNULLAUTO_INCREMENT, `name`VARCHAR(10)NOTNULL, `money`DECIMAL(9,2)NOTNULL, PRIMARYKEY(id))ENGINE=INNODBDEFAULTCHARSET=utf8​INSERTIN......
  • LY1154 [ 20230320 CQYC省选模拟赛 T1 ] 选拔士兵
    题意P和T各有\(n\)个课程。P的课程类型由\(a_i\)表示,价值为\(x_i\)。T的课程类型由\(b_i\)表示,价值为\(y_i\)。同样的课程不能上两遍。需要满足P和T的课程各在同一区间内。不选输出\([0,0]\),问使得价值最大的方案。Sol非常好数据结构题,使我的大脑旋转......
  • ADB模拟手机操作
    参考:Android模拟点击的四种方式https://blog.csdn.net/eclipsexys/article/details/38661237ADB控制模拟操作ADB中通过input来实现,用于输入 touch,key等事件:Thesourcesare:trackballjoysticktouchnavigationmousekeyboardga......
  • LY1162 [ 20230323 CQYC省选模拟赛 T3 ] 跳!跳!跳!
    题意给定\(n\)个长度为\(m\)的字符串,进行若干操作,求每个字符串\(S_a\)到\(S_b\)的方案数。另外,你还有一个模式串\(T\),由\({1,...,n}\)与\(0\)(通配符)组成。从\(S_x\)右边的串开始,不断向右移动,直到\(S_y\)与\(T\)匹配。从\(S_x\)左边的串开始,不断向左......