Codeforces Round #841 (Div. 2) and Divide by Zero 2022 A-D

news2024/11/19 2:31:49

等System test的时候顺便水一篇吧233,感觉题目挺好的,但是我C、D都快要调完了,还是难受。

应该是我参加的今年最后一场比赛了。

Codeforces Round #841 (Div. 2) and Divide by Zero 2022

A. Joey Takes Money

#include<bits/stdc++.h>
using namespace std;
int T,n;
long long ans=1;
int main()
{
	cin>>T;
	while(T--)
	{
		ans=1;
		cin>>n;
		for(int i=1;i<=n;i++)
		{
			long long x;
			scanf("%lld",&x);
			ans*=x;
		}
		ans+=(n-1);
		ans*=2022;
		cout<<ans<<endl;
	}
	return 0;
}

B. Kill Demodogs

∑ i 2 = n ( n + 1 ) ( 2 n + 1 ) / 6 ∑i^2 = n(n+1)(2n+1)/6 i2=n(n+1)(2n+1)/6

∑ i ( i − 1 ) = ∑ i 2 − ∑ i = n ( n + 1 ) ( 2 n + 1 ) / 6 − n ( n + 1 ) / 2 ∑i(i-1) = ∑i^2 -∑i = n(n+1)(2n+1)/6 -n(n+1)/2 i(i1)=i2i=n(n+1)(2n+1)/6n(n+1)/2

a n s = ∑ i 2 + ∑ i ( i − 1 ) = n ∗ ( n + 1 ) ∗ ( 2 n + 1 ) / 6 + ( n − 1 ) n ( n + 1 ) / 3 = n ∗ ( 4 n − 1 ) ∗ ( n + 1 ) / 6 ans =∑i^2+∑i(i-1) =n*(n+1)*(2n+1)/6+(n-1)n(n+1)/3=n*(4n-1)*(n+1)/6 ans=i2+i(i1)=n(n+1)(2n+1)/6+(n1)n(n+1)/3=n(4n1)(n+1)/6
注意取余。

#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
int T;
long long n,ans=337;//2022/6
int main()
{
	cin>>T;
	while(T--)
	{
		cin>>n;
		ans=337;
		ans*=n,ans%=mod;
		ans*=((4*n-1)%mod),ans%=mod;
		ans*=(n+1),ans%=mod;
		cout<<ans<<endl;
	}
	return 0;
}

C. Even Subarrays

统计(i,j)的异或和相当于求(i-1)(j)两个点的异或前缀和,暴力先行一发
在这里插入图片描述
这里最直接的思路就是枚举前面的,看哪些数对异或和是平方数

所以我们可以反过来枚举一个个平方数,看前面到目前为止有多少个数跟当前的x异或出来是平方数,注意平方数要枚举到2*n的大小,另外数组也要开大一点。

#include<bits/stdc++.h>
using namespace std;
const int N=6e5+10;
int a[N],num[N];
int T,n,cnt;
int main()
{	
	cin>>T;
	while(T--)
	{
		cin>>n;
		memset(num,0,sizeof(num));
		long long ans=0;
		for(int i=1;i<=n;i++)
		{
			scanf("%d",&a[i]);
			num[a[i-1]]++;
			a[i]^=a[i-1];//统计(i,j)的异或和相当于求(i-1)(j)两个点的异或前缀和
			for(int j=0;j*j<=2*n+2;j++)
				ans+=num[(j*j)^a[i]];
			//对于每个x,我们求0到(x-1)的异或前缀和值,看它们是不是平方数
			//反过来,我们枚举平方数
			//看看在[0,x-1]这个范围内有多少数满足跟x这个位置的数异或前缀和是平方数
		}
		cout<<1ll*n*(n+1)/2-ans<<endl;
	}
	return 0;
}

D. Valiant’s New Map

二分答案,用DP求二分到x时整个地图上满足条件的最大正方形边长,看是否超过x。

最处理不好的还是不知道N*M可以达到2e5情况的二维数组怎么开,我感觉我写的跟正解没有啥区别但是不知道为什么不过QAQ最离谱的还是样例在本地上跑(2 1 1 3,是对的)和提交上去的结果(2 1 2 4)不一样,这是为什么。。。
我的错误代码:

#include<bits/stdc++.h>
using namespace std;
int T,n,m;

int main()
{
	cin>>T;
	while(T--)
	{
		cin>>n>>m;
		int mp[n+5][m+5],dp[n+5][m+5];
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)
				scanf("%d",&mp[i][j]);
		int l=1,r=min(n,m);
		while(l<=r)
		{
			int mid=l+r>>1,maxn=0;
			for(int i=1;i<=n;i++)
			{
				for(int j=1;j<=m;j++)
				{
					if(mp[i][j]<mid) dp[i][j]=0;
					else dp[i][j]=min({dp[i-1][j],dp[i][j-1],dp[i-1][j-1]})+1;
					maxn=max(maxn,dp[i][j]);
				}
			}
			if(maxn>=mid) l=mid+1;
			else r=mid-1;
		}
	}
	return 0;
}

正解:

#include <bits/stdc++.h>
using namespace std;
 
int N, M;
vector<int> A[1010101];
vector<int> D[1010101];
 
int main() 
{
	int tc; scanf("%d", &tc);
	while (tc--) 
	{
		scanf("%d%d", &N, &M);
		for (int i = 0; i <= N; i++) 
		{
			A[i].resize(M + 1);
			D[i].resize(M + 1);
		}
		for (int i = 1; i <= N; i++) 
			for (int j = 1; j <= M; j++) 
				scanf("%d", &A[i][j]);
		int l = 1, r = min(N, M);
		while (l <= r) 
		{
			int m = l + r >> 1;
			int mx = 0;
			for (int i = 1; i <= N; i++) 
			{
				for (int j = 1; j <= M; j++) 
				{
					if (A[i][j] < m) D[i][j] = 0;
					else D[i][j] = min({D[i - 1][j], D[i][j - 1], D[i - 1][j - 1]}) + 1;
					mx = max(mx, D[i][j]);
				}
			}
			if (mx >= m) l = m + 1;
			else r = m - 1;
		}
		printf("%d\n", r);
	}
	return 0;
}

更好理解的是这样用二维前缀和写的,先跑一遍全图标记。

bool check(int mid, VV a)
{
    VV pre(n + 1, V(m + 1));
    rep(i, 0, n)
    {
        rep(j, 0, m)
        {
            if (a[i][j] >= mid) a[i][j] = 1;
            else a[i][j] = 0;
            pre[i + 1][j + 1] = pre[i][j + 1] + pre[i + 1][j] - pre[i][j] + a[i][j];
        }
    }
    rep(i, mid, n + 1)
    {
        rep(j, mid, m + 1)
        {
            int sum = pre[i][j] - pre[i][j - mid] - pre[i - mid][j] + pre[i - mid][j - mid];
            if (sum == mid * mid) return true;
        }
    }
    return false;
}

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

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

相关文章

数字射线检测图像质量

对比度 物体对比度 ΔI/I−μΔT/(1n)\Delta I/I -\mu \Delta T /(1n)ΔI/I−μΔT/(1n) 屏幕亮度 LkILkILkI 人眼感觉到的亮度 BKlnLBKln LBKlnL 人眼感觉到的亮度对比度 ΔBKln((LΔL)/L)\Delta B K ln((L\Delta L)/L)ΔBKln((LΔL)/L) 其中&#xff0c;III为射线强度 ΔB…

杭州市 智慧城市物联网支撑平台 功能规范 附下载地址

智慧城市物联网介绍 智慧城市是一个有机结合的大系统&#xff0c;涵盖了更透切的感知、更全面的互连&#xff0c;更深入的智能。物联网是智慧城市中非常重要的元素&#xff0c;它侧重于底层感知信息的采集与传输&#xff0c;城市范围内泛在网方面的建设。 通过智慧城市物联网支…

curl升级到7.87(centos7和TencentOS2.4 tk)

centos7升级curl到7.8.7,按照之前写过的一篇文章,大致按描述操作即可。只不过需要做一点点修正... CentOS 7升级curl_乐大师的博客-CSDN博客_centos7 curl升级 更新操作中会报错安装失败,提示如下: 针对这个问题只需要增加一个参数即可解决。 yum -y update curl --ena…

Linux系统安装Redis(实现远程登录)

目录 &#xff08;一&#xff09;下载和安装 &#xff08;二&#xff09;配置redis.con配置文件 1&#xff0c;开启远程连接有以下三步&#xff1a; 2&#xff0c;配置登录密码 ​&#xff08;三&#xff09;开放端口 1&#xff0c;开放Linux系统上的3306端口 2&#xff0…

记录一次Tomcat靶机渗透

Apache Tomcat&#xff0c;是世界上最广泛使用的Java Web服务器之一。带有默认配置的Tomcat服务器非常容易发现。发现暴露Web应用管理器的服务器也非常容易&#xff0c;它是一个应用&#xff0c;允许管理员启动、停止、添加和删除服务器中的应用。 信息搜集 第一步&#xff1a…

频谱分析误差主要表现在三个方面

频谱分析仪是研究电信号频谱结构的仪器&#xff0c;用于信号失真度、调制度、谱纯度、频率稳定度和交调失真等信号参数的测量&#xff0c;可用以测量放大器和滤波器等电路系统的某些参数&#xff0c;是一种多用途的电子测量仪器。它又可称为频域示波器、跟踪示波器、分析示波器…

基于python多光谱遥感数据处理、图像分类、定量评估及机器学习方法

普通数码相机记录了红、绿、蓝三种波长的光&#xff0c;多光谱成像技术除了记录这三种波长光之外&#xff0c;还可以记录其他波长&#xff08;例如&#xff1a;近红外、热红外等&#xff09;光的信息。与昂贵、不易获取的高光谱、高空间分辨率卫星数据相比&#xff0c;中等分辨…

【蚂蚁】Alluxio在蚂蚁集团大规模训练中的应用

本期内容我们邀请到了来自蚂蚁集团的开发工程师陈传迎老师&#xff0c;给大家分享Alluxio在蚂蚁集团是如何支持大规模模型训练的。 首先是关于引入Alluxio的背景&#xff1a; 为什么要引入Alluxio&#xff1f;Alluxio到底解决了什么问题&#xff1f; 带着这些问题&#xff0…

USDP使用笔记(八)Flink配置及简单测试

Flink配置Flink配置及简单测试 上一篇&#xff1a;https://lizhiyong.blog.csdn.net/article/details/123560865 将USDP2.0自带的Flink更换为Flink1.14后&#xff0c;还没有来得及改配置。不改配置用起来是有问题的&#xff0c;所以。。。本文主要就是改配置及简单测试效果。 …

基于ssm框架实现的Java web在线考试系统

一、项目简介 本项目是一套基于ssm框架实现的Java web在线考试系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&…

HITCON2022--ctf驱动逆向题

作者&#xff1a;selph HITCON CTF 2022 Writeup-checker 挺有意思的一道题&#xff0c;这里的关键函数是使用的动态生成执行操作&#xff0c;按照特定参数序列进行解密才能正常执行&#xff0c;否则一定会报错异常 checker 一共给了两个文件&#xff1a;checker.exe和chec…

VR数字政务:多功能一体化,政务服务更便民

越来越多的政务单位都是通过网络等线上信息化渠道&#xff0c;进行政务的推进以及落实、查询等功能的实施&#xff0c;在实际的政务应用中&#xff0c;VR技术可以打造集实景导航、窗口查询、在线申报等多功能为一体&#xff0c;实现数据多跑腿、群众少跑腿&#xff0c;有效提高…

Nginx 01篇——Nginx详细安装步骤以及Nginx各种启动方式

Nginx 01篇——Nginx详细安装步骤以及Nginx各种启动方式1. 前言2. 下载安装2.1 下载安装包2.2 安装2.2.1 离线安装2.2.1.1 安装步骤2.2.1.2 安装问题2.2.2 先安装所需依赖2.2.3 直接 yum 安装2.2.4 指定安装目录安装3. nginx 启动4. 启动后访问5. Nginx 启动等简单命令5.1 启动…

SVN,Git与Helix Core,谁的数据管理基础设施更安全?

2022年2月底&#xff0c;全球知名的半导体芯片公司英伟达被爆遭到勒索软件攻击&#xff0c;不久后&#xff0c;英伟达公司官方证实遭到入侵&#xff0c;攻击者已开始在线泄露员工凭据和私密信息。勒索软件组织表示&#xff0c;如果英伟达拒绝支付高达100万美元的赎金&#xff0…

写在2022年的末尾

今年是我人生的第24个年头。 最近了解稚晖君&#xff0c;xinglu师兄&#xff0c;以及很多优秀的同辈人的事迹之后&#xff0c;感觉到自己还差了很远。 读研已经过半&#xff0c;研二已经到了第二个学期&#xff0c;而自己还什么成果都没有。甚至开题的事情到现在都还没有头绪。…

C++简介

C是一种计算机高级程序设计语言&#xff0c;由C语言扩展升级而产生 &#xff0c;最早于1979年由本贾尼斯特劳斯特卢普在AT&T贝尔工作室研发。 C既可以进行C语言的过程化程序设计&#xff0c;又可以进行以抽象数据类型为特点的基于对象的程序设计&#xff0c;还可以进行以…

计算机英文论文怎么做降重? - 易智编译EaseEditing

人工降重一定要找靠谱的机构做。 降重是很耗费精力和时间的学术服务。 而那些没有口碑且不专业的商家&#xff0c;真的会花费那么多心思来仔细琢磨你的论文吗&#xff1f; 那些没有声誉的非专业商家给论文降重会产生很多弊端&#xff1a; &#xff08;1&#xff09;他们为了…

内网穿透你真的了解吗?

前言 内网穿透作为程序员常用的调试手段之一&#xff0c;我们可以通过在个人电脑上运行花生壳或者 frp 等方式&#xff0c;让他人访问我们本地启动的服务&#xff0c;而且这种访问可以不受局域网的限制&#xff0c;当我们使用ngrok,frp等开源框架时&#xff0c;你是否有好奇过…

力扣sql入门篇(一)

力扣sql入门篇(一) 1 大的国家 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 SELECT name,population,area FROM World WHERE area>3000000 OR population>250000001.3 运行截图 2 可回收且低碳的产品 2.1 题目内容 2.1.1 基本题目信息 2.…

c++使用icu国际化(i18n)

icu International Components for Unicode&#xff0c;https://github.com/unicode-org/icu.git https://icu.unicode.org/ 帮助文档&#xff1a; https://unicode-org.github.io/icu/userguide/icu/howtouseicu.html i18n&#xff0c;Internationalization (in/i18n) libra…