Codeforces Round 970 (Div. 3) (个人题解)(未补完)

前言:

  昨天晚上的比赛,可惜E题太笨了没想到如何解决,不过好在看到F过的多直接跳过去写F了,能过个5个也还不错了,而且一个罚时也没吃。之后的题我还是会再能补的时候补完的噢!

正文:

链接:Dashboard - Codeforces Round 970 (Div. 3) - Codeforces

题目:

A. Sakurako's Exam:

#include<bits/stdc++.h>
using namespace std;
int main(){int t;cin>>t;while(t--){int a,b;cin>>a>>b;if(b==0&&a%2==0&&a!=0){cout<<"YES"<<endl;}else if(a==0&&b%2==0){cout<<"YES"<<endl;}else if(a%2==0&&a!=0){cout<<"YES"<<endl;}else{cout<<"NO"<<endl;}}return 0;
}

简单的数字逻辑题,情况并不多,慢慢讨论就行了。

B. Square or Not:

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
string a;
int main(){int t;cin>>t;while(t--){int n,cnt=0;cin>>n;cin>>a;for(int i=0;i<n;i++){if(cnt==0&&a[i]=='0'){cnt=i+1;}}if(cnt==0)cnt=n;else cnt-=2;int cnt2=n/cnt;if(cnt2!=cnt){if((cnt==1&&n==1)||(cnt==4&&n==4)){cout<<"YES"<<endl;continue;}cout<<"NO"<<endl;continue;}if(n/cnt!=cnt&&n%cnt!=0){cout<<"NO"<<endl;continue;}//cout<<cnt<<endl;int res=0;for(int i=1;i<=n;i++){int j,k,flag=0;j=i/cnt;if(i%cnt)j++;k=i%cnt;if(k==0)k=cnt;//cout<<j<<k<<endl;if(j==1||j==cnt||k==1||k==cnt){flag=1;}if(flag==1){if(a[i-1]=='0'){res=1;break;}}else{if(a[i-1]=='1'){res=1;break;}}//cout<<res<<endl;}if(res==1){cout<<"NO"<<endl;}else{cout<<"YES"<<endl;}}return 0;
}

这题我太笨了,调了很久,并且做法也十分愚笨。题目的思路还是很好理解的,就是直接模拟一个矩阵看是否合理即可(矩阵的行列一定要相等)。

C. Longest Good Array:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[1000005];
void init(){a[1]=1;for(int i=2;i<1000000;i++){a[i]=i-1;}for(int i=1;i<1000000;i++){a[i]+=a[i-1];}
}
int main(){init();int t;cin>>t;while(t--){int l,r,res;cin>>l>>r;res=r-l;int low=1,high=1000000,mid;while(low<high){mid=low+high+1>>1;if(a[mid]-1<=res)low=mid;else high=mid-1;//cout<<low<<" "<<mid<<" "<<high<<endl;}cout<<low<<endl;}return 0;
}

贪心的令相邻数的间隔最小且递增,即 1,2,3,第 1 个数为 l,第 n+1个数为l+n*(n+1)/2,二分答案 n 即可。

D. Sakurako's Hobby:

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int a[N],ans[N];
string s;
bool book[N];
int n,cnt;
void dfs(int x){book[x]=1;if(s[x-1]=='0')cnt++;if(book[a[x]]==0){dfs(a[x]);}ans[x]=cnt;
}
void init(){memset(book,0,sizeof(book));
}
int main(){int t;cin>>t;while(t--){cin>>n;init();for(int i=1;i<=n;i++){cin>>a[i];}cin>>s;for(int i=1;i<=n;i++){cnt=0;if(book[i]==0)dfs(i);}for(int i=1;i<=n;i++){cout<<ans[i]<<" ";}cout<<endl;}return 0;
} 

这题我用的是dfs递归+数组标记,其实用并查集也行,直接将搜索到的黑块的数量存进根节点,不过这两个做法大差不差,时间复杂度应该差不多。

E. Alternating String:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
int read(){int x = 0; bool f = false; char c = getchar();while(c < '0' || c > '9') f |= (c == '-'), c = getchar();while(c >= '0' && c <= '9') x = (x << 1) + (x << 3) + (c & 15), c = getchar();return f ? -x : x;
}
const int N = 2e5 + 5;
char s[N];
int odd[N][26], even[N][26];
void solve(){int n = read();scanf("%s", s + 1);for(int i = 1; i <= n; ++i){for(int j = 0; j <= 25; ++j) odd[i][j] = even[i][j] = 0;if(i & 1) odd[i][s[i] - 'a'] = 1;else even[i][s[i] - 'a'] = 1;for(int j = 0; j <= 25; ++j) odd[i][j] += odd[i - 1][j], even[i][j] += even[i - 1][j];}int ans = 0x7fffffff;if(n & 1){for(int i = 1; i <= n; ++i){for(int j = 0; j <= 25; ++j)for(int k = 0; k <= 25; ++k){int x = odd[i - 1][j] + even[n][j] - even[i][j];int y = even[i - 1][k] + odd[n][k] - odd[i][k];ans = min(ans, n - 1 - x - y);}}printf("%d\n", ans + 1);}else{for(int i = 0; i <= 25; ++i)for(int j = 0; j <= 25; ++j)ans = min(ans, n - (odd[n][i] + even[n][j]));printf("%d\n", ans);}
}
int main(){int T = read();while(T--) solve();return 0;
}

这是我看别人的博客学来的做法,读题后我们可以很容易知道偶数情况很容易考虑,直接枚举偶数奇数位字母出现的次数即可,但奇数情况是一定要进行删除操作的,删除的话会影响后面奇数偶数位的位置,这时如果直接暴力枚举所有的点,删除后在枚举剩下的点,我们是一定会超时的,不过我们可以用前缀和的思想,记 odd[i][j] 为前  个数,奇数位字符为 j的个数,even[i][j] 为偶数位字符为 j的个数,再枚举删去哪个点,最终序列的奇数位是这个点前面的奇数位和后面的偶数位,再分别枚举奇数位和偶数位的最终字符,这样就能得到正确答案。

F. Sakurako's Box:

#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
int modInverse(int a, int m) {int res = 1, exp = m - 2;while (exp > 0) {if (exp % 2 == 1) {res = (1LL * res * a) % m;}a = (1LL * a * a) % m;exp /= 2;}return res;
}
int main(){int t;cin >> t;while (t--) {int n;cin >> n;vector<int> a(n);map<int, int> freq;long long sum = 0, sumOfSquares = 0;for (int i = 0; i < n; i++) {cin >> a[i];freq[a[i]]++;sum = (sum + a[i]) % MOD;sumOfSquares = (sumOfSquares + 1LL * a[i] * a[i]) % MOD;}long long P = (sum * sum % MOD - sumOfSquares + MOD) % MOD;P = P * modInverse(2, MOD) % MOD;long long Q = 1LL * n * (n - 1) / 2 % MOD;long long Q_inverse = modInverse(Q, MOD);long long result = P * Q_inverse % MOD;cout << result << endl;}return 0;
}

这题太直接了,答案就是\sum_{}^{}ai*aj(i<j)/C_{n}^{2},可能是在考逆元吧。

后记:

  后面两题还不会写就先不放出来了。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PLUTO: 推动基于模仿学习的自动驾驶规划的极限

PLUTO: Pushing the Limit of Imitation Learning-based Planning for Autonomous Driving PLUTO: 推动基于模仿学习的自动驾驶规划的极限 https://arxiv.org/abs/2404.14327 Abstract We present PLUTO, a powerful framework that Pushes the Limit of imitation learn…

AJAX基础与进阶

一、express基本使用 1. 在最外层启动终端&#xff0c;添加文件 2. 创建 express 框架 // 1. 引入express const express require(express);// 2. 创建应用对象 const app express();// 3. 创建路由规则 //request 是对请求报文的封装 //response 是对响应报文的封装 app.g…

Java Excel转PDF(免费)

目前市面上 Excel 转 PDF 的组件较多&#xff1a; 收费&#xff1a;aspose、GcExcel、spire开源&#xff1a;jacob、itextpdf 其中收费的组件封装得比较好&#xff0c;代码简洁&#xff0c;转换的效果也很好&#xff0c;但收费也高得离谱&#xff1a; 为了成本考虑&#xff…

1、Django Admin学习模型

此专栏应用环境和模型基于此文 开发环境 系统&#xff1a;windows11 开发工具&#xff1a;vscode 开发语言&#xff1a;python 3.8 开发框架&#xff1a;django 3.2 数据库&#xff1a;mysql8.4.1 项目目录 settings 注册两个应用 INSTALLED_APPS [django.contrib.ad…

关于STC-ISP软件选项“下次下载用户程序时擦除用户EEPROM区”的质疑

1.以前&#xff0c;在用STC-ISP软件下载代码时&#xff0c;该选项一般都默认勾选&#xff01;见图1&#xff1b;因没用到该功能无视&#xff1b; 2.近日&#xff0c;首次下载需写入一些用户核心数据&#xff0c;以后谁升级代码下载都不能查看和更改这些数据&#xff01; 3.于…

eureka一

Eureka 什么是eureka eureka服务调用流程 springcloud技术栈应用 分布式理论 CAP CAP理想运行情况 CAP不理想运行情况 CAP取舍 BASE BASE原理 搭建单机注册中心 服务提供者 服务消费者 集群服务注册中心 eureka功能详解 核心功能演示 Eureka源码解析 lifecycle的start

[极客大挑战 2020]Greatphp1

知识点: 1. PHP原生类在CTF中的利用 2. <??> <> <?php echo?> 以及 <??> <> <?php ?> 的变形 3. 正则表达式的取反绕过 进入页面又是熟悉的php的代码审计. <?php error_reporting(0); class SYCLOVER {public $syc;public $l…

基于 R 语言的深度学习——简单回归案例

近年来深度学习在人工智能领域飞速发展&#xff0c;各行业的学者、研究人员纷纷涌入研究热潮。本文将从 R 语言角度来介绍深度学习并解决以下几个问题&#xff1a; 什么是深度学习&#xff1f; 相关深度学习包有哪些&#xff1f; 如何配置工作环境&#xff1f; 如何使用神经…

微服务--认识微服务

微服务架构的演变 1. 单体架构&#xff08;Monolithic&#xff09; 阶段描述&#xff1a;在单体应用时代&#xff0c;整个应用程序被设计为一个项目&#xff0c;并在一个进程内运行。这种架构方式开发简单&#xff0c;便于集中管理&#xff0c;但随着应用的复杂化&#xff0c…

【算法 动态规划 简单多状态 dp 问题】打家劫舍题型

打家劫舍题型 按摩师 (easy)解题思路代码 打家劫舍II &#xff08;medium&#xff09;解题思路代码 删除并获得点数&#xff08;medium&#xff09;解题思路代码 按摩师 (easy) 题目链接 该题是打家劫舍的变形 解题思路 状态表示 分析: 注意题目, 对于当天的预约, 可以接受…

C语言遇见的一些小问题

问题如下&#xff1a; 1&#xff1a;为什么这样的代码为报错 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <algorithm> #include <cstdio> #include<string> #include<stdlib.h> using namespace std; int main() {int i …

mysql5.7 TIMESTAMP NOT NULL DEFAULT ‘0000-00-00 00:00:00‘ 换版8版本 引发的问题

mysql5.7 TIMESTAMP NOT NULL DEFAULT 0000-00-00 00:00:00 换版引发的问题 问题背景sql_mode上机演示5.78.4 问题背景 在项目mysql版本由5.7 换版到8.4版本后&#xff0c;我们进行回归测试时&#xff0c;却发现一个积年代码报错了&#xff0c;是数据库插入报的错 xxx can not…

华为IS-IS实验及配置

AR1配置 #进入ISIS进程 isis 1 #配置设备类型为Level-1is-level level-1 #定义区域和System-ID等信息network-entity 49.0001.0010.0000.0001.00 #ISIS邻居命名is-name AR1 #接口配置IP和启用ISIS interface GigabitEthernet0/0/0ip address 10.1.12.1 255.255.255.0 isis ena…

数仓基础(六):离线与实时数仓区别和建设思路

文章目录 离线与实时数仓区别和建设思路 一、离线数仓与实时数仓区别 二、实时数仓建设思路 离线与实时数仓区别和建设思路 ​​​​​​​一、离线数仓与实时数仓区别 离线数据与实时数仓区别如下&#xff1a; 对比方面 离线数仓 实时数仓 架构选择 传统大数据架构 …

Ribbon负载均衡底层原理

springcloude服务实例与服务实例之间发送请求&#xff0c;首先根据服务名注册到nacos&#xff0c;然后发送请求&#xff0c;nacos可以根据服务名找到对应的服务实例。 SpringCloudRibbon的底层采用了一个拦截器&#xff0c;拦截了openfeign发出的请求&#xff0c;对地址做了修…

【C++】将myString类中能够实现的操作都实现一遍

myString.h #ifndef MYSTERAM_H #define MYSTERAM_H #include <iostream> #include<cstring> using namespace std; class myString { private:char *str; //字符串int size; //字符串容量char error[20] "error"; public://无参构造myString():siz…

深入解析FPGA在SOC设计中的核心作用

在集成系统SoC设计中&#xff0c;CPU核心的嵌入至关重要&#xff0c;以实现软硬件的有效交互。此过程中涉及到功能IP&#xff08;如图像处理、无线通信等&#xff09;的验证和整合&#xff0c;利用硬件描述语言(HDL)来实现可编程逻辑(FPGA)&#xff0c;并通过验证技术提高设计效…

Django Admin对自定义的计算字段进行排序

通常&#xff0c;Django会为模型属性字段&#xff0c;自动添加排序功能。当你添加计算字段时&#xff0c;Django不知道如何执行order_by&#xff0c;因此它不会在该字段上添加排序功能。 如果要在计算字段上添加排序&#xff0c;则必须告诉Django需要排序的内容。你可以通过在…

【机器学习】神经网络、隐藏层的基本概念、如何选择隐藏层数量以及胶囊网络对神经网络的影响

引言 神经网络是机器学习的一种方法&#xff0c;它通过模拟人脑神经元的工作原理来构建算法 文章目录 引言一、神经网络1.1 定义1.2 主要组成部分1.3 工作原理1.4 应用1.5 类型1.6 优化算法1.7 总结 二、隐藏层2.1 定义2.2 隐藏层的作用2.3 隐藏层的数量和大小2.4 隐藏层的结构…

单片机-STM32 时钟(六)

1.时钟的概念 在我们单片机中&#xff0c;时钟主要是用于 提供一个工作的频率&#xff0c;时钟信号越大&#xff0c;设备执行的速度就越快。 时钟---处理器运行的频率---72MHZ Dbus--数据总线 AHB--总线桥 APB2--外设总线2&#xff08;时钟&#xff09; APB1--外设总线1&a…