Codeforces Round #841 (Div. 2) (A--D)

news/2024/11/13 3:33:36/

@[TOC](Codeforces Round #841 (Div. 2)(A–D))

A、 Joey Takes Money

1、题目

在这里插入图片描述

2、思路

在这里插入图片描述

3、代码

    #include<iostream>#include<algorithm>#include<cstring>using namespace std;typedef unsigned long long ll;int main(){ll t;cin>>t;while(t--){int n;cin>>n;ll sum=1;for(int i=0;i<n;i++){ll a;cin>>a;sum*=a;}ll ans=(sum+(n-1))*2022;cout<<ans<<endl;}return 0;}

B、Kill Demodogs

1、题目

在这里插入图片描述

2、思路(数列、费马小定理、快速幂)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、代码

    #include<iostream>#include<algorithm>#include<cstring>using namespace std;const int mod=1e9+7;typedef unsigned long long ll;ll qmi(ll a,ll b,ll p){ll res=1;while(b){if(b%2)res=res*a%p;a=a*a%p;b/=2;}return res%p;}                                          int main(){int t;cin>>t;while(t--){ll n;cin>>n;ll sum=0;sum=(ll)n*(n+1)%mod*(4*n-1)%mod*qmi(6,mod-2,mod)%mod*2022%mod;cout<<sum<<endl;}return 0;}

C、Even Subarrays

1、题目

在这里插入图片描述

2、思路(前缀异或和)

首先对于异或的性质我们要有个了解。如果A异或B等于C的话,那么必定满足B^C等于A,A异或C等于B。

涉及到区间问题,我们这里使用前缀异或和

这道题中所提到的因子个数是奇数,那么必定是一个完全平方数。所以我们只需要找到异或区间内所有数字异或的结果是完全平方数的即可。然后我们利用总的数目减去不符合条件的数目。
在这里插入图片描述

现在的问题有两个,我们如何计算总的数目?我们如何排除不符合条件的情况?
我们看下面的推导:
异或区间总数目:
在这里插入图片描述
平方数记作ttt(不是题干中的t),下面推导这个平方数的所在范围。
在这里插入图片描述
知道了这个t的范围之后,我们只需要去枚举他的开方情况即可。这样可以降低时间复杂度。

那么总的思路如下图:
在这里插入图片描述枚举所有的S2,然后枚举平方数t,计算出S1,减去所有等于S1的情况。

那么总的时间复杂度就是O(nn)O(n\sqrt{n})O(nn)

3、代码

    #include<iostream>#include<cstring>#include<algorithm>using namespace std;const int N=4e6+10;typedef long long ll;int a[N],cnt[N];int t,n;int main(){cin>>t;while(t--){cin>>n;int ma=2*n;for(int i=1;i<=n;i++){scanf("%d",a+i);a[i]^=a[i-1];}ll ans=0;cnt[a[0]]++;for(int i=1;i<=n;i++){ans+=i;for(int j=0;j*j<=ma;j++){ans-=cnt[a[i]^(j*j)];}cnt[a[i]]++;}for(int i=1;i<=ma;i++)cnt[a[i]]=0;cout<<ans<<endl;        }return 0;}

D、Valiant’s New Map

1、题目

在这里插入图片描述

2、思路(二分、二维前缀和)

思路很简单,二分找答案,前缀和判断。
在这里插入图片描述

3、代码

#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
const int N=1e6+10;
int n,m;
bool check(int x,vector<vector<int>>&a,vector<vector<int>>&g)
{for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)a[i][j]=a[i-1][j]+a[i][j-1]-a[i-1][j-1]+(int)(g[i][j]>=x);for(int i=x;i<=n;i++){for(int j=x;j<=m;j++){int res=a[i][j]-a[i-x][j]-a[i][j-x]+a[i-x][j-x];if(res==x*x)return true;}}return false;
}
int main()
{int t;cin>>t;while(t--){cin>>n>>m;vector<vector<int>>a(n+1,vector<int>(m+1));vector<vector<int>>g(n+1,vector<int>(m+1));for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%d",&g[i][j]);int l=1,r=n;while(l<r){int mid=l+r+1>>1;if(check(mid,a,g))l=mid;else r=mid-1;}cout<<l<<endl;}return 0;
}

http://www.ppmy.cn/news/11341.html

相关文章

ArcGIS基础实验操作100例--实验84查找面到直线的最近点位置

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验84 查找面到直线的最近点位置 目录 一、实验背景 二、实验数据 三、实验步骤 &#…

springAOP的注解使用

注解使用导入依赖常用注解&#xff1a;注意&#xff0c;给测试类起名字的时候千万不要定义成Test&#xff0c;测试的方法不可以有参数&#xff0c;不可以有返回值在使用注解的时候&#xff0c;还需要告诉spring应该从哪个包开始扫描,一般在定义的时候都写上相同包的路径需要导入…

达摩院2023十大科技趋势发布,生成式AI将进入应用爆发期

1月11日&#xff0c;达摩院2023十大科技趋势发布&#xff0c;生成式AI、Chiplet模块化设计封装、全新云计算体系架构等技术入选。达摩院认为&#xff0c;全球科技日趋显现出交叉融合发展的新态势&#xff0c;尤其在信息与通信技术&#xff08;ICT&#xff09;领域酝酿的新裂变&…

RK3399平台开发系列讲解(内核调试篇)如何使用perf进行性能优化

🚀返回专栏总目录 文章目录 一、perf list命令二、perf record/report命令三、perf stat命令四、perf top命令五、火焰图沉淀、分享、成长,让自己和他人都能有所收获!😄 📢perf 可以在 CPU Usage 增高的节点上找到具体的引起 CPU 增高的函数,然后我们就可以有针对性地…

使用ResNet34实现CIFAR100数据集的训练

如果对你有用的话&#xff0c;希望能够点赞支持一下&#xff0c;这样我就能有更多的动力更新更多的学习笔记了。&#x1f604;&#x1f604; 使用ResNet进行CIFAR-10数据集进行测试&#xff0c;这里使用的是将CIFAR-10数据集的分辨率扩大到32X32&#xff0c;因为算力相关的…

JAVA实现代码热更新

JAVA实现代码热更新引言类加载器实现热更新思路多种多样的加载来源SPI服务发现机制完整代码类加载器共享空间机制Tomcat如何实现JSP的热更新Spring反向访问用户程序类问题引言 本文将带领大家利用Java的类加载器加SPI服务发现机制实现一个简易的代码热更新工具。 类加载相关知…

C语言常用内存函数的深度解析

文章目录前言memcpymemcpy函数的使用memcpy函数的自我实现memmovememmove函数的使用memmove函数的自我实现memcmpmemcmp函数的使用memcmp函数的自我实现memsetmemset函数的使用memset函数的自我实现写在最后前言 内存函数的使用广泛度大于常用字符串函数的使用广泛度&#xff0…

前端基础(十一)_函数声明及调用、函数的形参与实参、arguments参数、函数的参数类型、函数中的问题

函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。在使用函数时需要经过两个步骤&#xff0c;先声明函数后调用函数。 一、函数声明及调用 函数用于存储一段代码块&#xff0c;在需要的时候被调用&#xff0c;因此函数的使用需要经过两个步骤&#xff0c;先存储…