Educational Codeforces Round 5

文章目录

    • A. Comparing Two Long Integers
    • B. Dinner with Emma
    • C. The Labyrinth
    • D. Longest k-Good Segment
    • E. Sum of Remainders

A. Comparing Two Long Integers

模拟,签到。

#include <bits/stdc++.h>using namespace std;
const int N = 1e6 + 5;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef array<ll, 3> p3;
int mod = 998244353;
const int maxv = 4e6 + 5;void solve()
{string a,b;cin>>a>>b;int i1=0,i2=0;while(a[i1]=='0') i1++;while(b[i2]=='0') i2++;int s1=a.size()-i1;int s2=b.size()-i2;if(s1!=s2){if(s1>s2) cout<<">"<<endl;else cout<<"<"<<endl;}else{for(int i=i1,j=i2;i<a.size();i++){if(a[i]>b[j]){cout<<">"<<endl;return ;}else if(a[i]<b[j]){cout<<"<"<<endl;return ;}j++;}cout<<"="<<endl;}
}int main()
{ios::sync_with_stdio(0);cin.tie(0);int t = 1;//  cin >> t;while (t--){solve();}system("pause");return 0;
}

B. Dinner with Emma

签到。

#include <bits/stdc++.h>using namespace std;
const int N = 1e6 + 5;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef array<ll, 3> p3;
int mod = 998244353;
const int maxv = 4e6 + 5;int a[205][205];void solve()
{int n,m;cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];}}int ans=0;for(int i=1;i<=n;i++){int res=2e9;for(int j=1;j<=m;j++) res=min(res,a[i][j]);ans=max(ans,res);}cout<<ans<<endl;
}int main()
{ios::sync_with_stdio(0);cin.tie(0);int t = 1;//  cin >> t;while (t--){solve();}system("pause");return 0;
}

C. The Labyrinth

BFS,和edu第一场的D题感觉有异曲同工之妙,这题初看以为是对障碍物进行bfs,实则是对点进行bfs。

#include <bits/stdc++.h>using namespace std;
const int N = 1e6 + 5;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef array<ll, 3> p3;
int mod = 998244353;
const int maxv = 4e6 + 5;char a[2005][2005];
int d[2005][2005];
int st[2005][2005];
int dx[]={-1,1,0,0};
int dy[]={0,0,-1,1};
int n,m;
void bfs(int x,int y)
{queue<pll >q;st[x][y]=1;set<pll> v;q.push({x,y});int cnt=1;while(!q.empty()){auto [nx,ny]=q.front();q.pop();for(int i=0;i<4;i++){int zx=nx+dx[i],zy=ny+dy[i];if(st[zx][zy]) continue;if(a[zx][zy]=='*'){v.insert({zx,zy});continue;}if(zx<1||zx>n||zy<1||zy>m) continue;cnt++;st[zx][zy]=1;q.push({zx,zy});}}for(auto [x,y]: v) d[x][y]+=cnt;
}void solve()
{cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++) cin>>a[i][j];}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(a[i][j]=='.'&&!st[i][j]){bfs(i,j);}}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(a[i][j]=='*'){cout<<(d[i][j]+1)%10;}else cout<<".";}cout<<endl;}
}int main()
{ios::sync_with_stdio(0);cin.tie(0);int t = 1;while (t--){solve();}system("pause");return 0;
}

D. Longest k-Good Segment

双指针

#include <bits/stdc++.h>using namespace std;
const int N = 1e6 + 5;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef array<ll, 3> p3;
int mod = 998244353;
const int maxv = 4e6 + 5;void solve()
{int n,k;cin>>n>>k;vector<int> a(n+5);for(int i=1;i<=n;i++) cin>>a[i];map<int,int> mp;int ans=0;int l=0,r=0;for(int i=1,j=1;i<=n;i++){mp[a[i]]++;while(mp.size()>k&&j<=n) {mp[a[j]]--;if(mp[a[j]]==0) mp.erase(a[j]);j++;}if(ans<i-j+1){l=j,r=i;ans=i-j+1;}}cout<<l<<" "<<r<<endl;
}int main()
{ios::sync_with_stdio(0);cin.tie(0);int t = 1;//  cin >> t;while (t--){solve();}system("pause");return 0;
}

E. Sum of Remainders

整数分块。
对于 n m o d m n\mod m nmodm的形式,我们相求求余数,那么可以把式子转化为 n − ⌊ n m ⌋ × m n-\lfloor {n \over m} \rfloor \times m nmn×m的形式,那么此题就转化为了 ∑ i = 1 m n − ⌊ n i ⌋ × i \sum_{i=1}^m{n-\lfloor {n \over i} \rfloor \times i} i=1mnin×i
对于公式的前半部分,我们可以直接求出,答案为 n × m n\times m n×m,对于公式后半部分,我们可以运用整数分块的相关知识。
整数分块
用于快速计算 ∑ i = s t e d ⌊ n i ⌋ \sum_{i=st}^{ed} {\lfloor {n \over i} \rfloor } i=stedin的方法我们称为整数分块,因为计算机是进行向下取整的,所以在一段区间里面我们就会得到一些相同的值,所以对于这些区间里面的点,我们没有必要进行重复计算。只需要计算一遍即可。
显然,存在一个 k k k,使得 ⌊ n k ⌋ = l \lfloor {n \over k} \rfloor=l kn=l
r = ⌊ n k ⌋ r=\lfloor {n \over k} \rfloor r=kn
显然对于 ⌊ n i ⌋ = ⌊ n j ⌋ ( l ≤ i ≤ r ) \lfloor {n \over i} \rfloor=\lfloor {n \over j} \rfloor(l\leq i \leq r) in=jn(lir)
那么我们对于给定的区间,枚举每个 l l l即可。

// for(int i = st;i<=ed;i++)ans+=num/i
int block(int st, int ed, int num) {int L = 0;int _ans = 0;ed = min(ed, num);for (int i = st; i <= ed; i = L + 1) {L = min(ed,num / (num / i));  //该区间的最后一个数_ans += (L - i + 1)*(num / i);//区间[i,L]的num/i 都是一个值}return _ans;
} 

对于此题,我们对整数分块的板子进行修改一下即可。

#include <bits/stdc++.h>using namespace std;
const int N = 1e6 + 5;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef array<ll, 3> p3;
int mod = 1e9+7;
const int maxv = 4e6 + 5;ll inv2;ll qmi(ll a,ll b,ll c)
{ll res=1;while(b){if(b%2){res=res*a%c;}b>>=1;a=a*a%c;}return res;
}ll cal(ll l,ll r)
{ll res=((((l+r)%mod)*((r-l+1)%mod))%mod*inv2)%mod;return res;
}ll block(ll st,ll ed,ll n)
{ll res=0;ll l=0;ed=min(ed,n);for(ll i=st;i<=ed;i=l+1){l=min(ed,n/(n/i));res=(res+cal(i,l)*(n/i))%mod;}return res;
}void solve()
{inv2=qmi(2,mod-2,mod);//cout<<inv2<<endl;ll n,m;cin>>n>>m;ll ans=(n%mod)*(m%mod)%mod;//cout<<block(1,m,n)<<endl;ans=(ans-block(1,m,n)%mod+mod)%mod;cout<<ans<<endl;
}int main()
{ios::sync_with_stdio(0);cin.tie(0);int t = 1;// cin >> t;while (t--){solve();}system("pause");return 0;
}

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

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

相关文章

与社交媒体结合:视频直播美颜sdk在社交平台上的应用

为了让直播内容更吸引人&#xff0c;视频直播美颜sdk&#xff08;Software Development Kit&#xff09;正逐渐崭露头角&#xff0c;为社交媒体用户提供了卓越的美颜效果和互动体验。 一、什么是视频直播美颜sdk&#xff1f; 在深入讨论如何将视频直播美颜sdk整合到社交媒体平…

CSS元素浮动

概述 浮动简介 在最初&#xff0c;浮动是用来实现文字环绕图片效果的&#xff0c;现在浮动是主流的页面布局方式之一。 元素浮动后的特点 脱离文档流。不管浮动前是什么元素&#xff0c;浮动后&#xff0c;默认宽与高都是被内容撑开的&#xff08;尽可能小&#xff09;&am…

时序分解 | MATLAB实现基于小波分解信号分解分量可视化

时序分解 | MATLAB实现基于小波分解信号分解分量可视化 目录 时序分解 | MATLAB实现基于小波分解信号分解分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于小波分解的分量可视化&#xff0c;MATLAB编程程序&#xff0c;用于将信号分解成不同尺度和频率的子信…

Qt-背景图片

在Qt中&#xff0c;使用QWidget或其子类&#xff08;如QFrame、QPushButton等&#xff09;的样式表&#xff08;StyleSheet&#xff09;来设置背景图片&#xff0c;并指定其位置。样式表允许以一种类似于CSS的方式来定义控件的外观和样式。 以下是在Qt中设置控件的背景图片并指…

OpenText Exceed TurboX 通过安全远程访问高性能图形化应用程序和桌面保证业务连续性

OpenText Exceed TurboX 通过安全远程访问高性能图形化应用程序和桌面保证业务连续性 OpenText™ Exceed TurboX™ 是一种安全的虚拟桌面解决方案&#xff0c;可实现现代混合工作。利用 Exceed TurboX 混合云虚拟桌面基础架构 &#xff08;VDI&#xff09;&#xff0c;组织可以…

实用技巧:Linux上实现OpenGauss数据库远程连接,方便的跨网络数据操作

文章目录 前言1. Linux 安装 openGauss2. Linux 安装cpolar3. 创建openGauss主节点端口号公网地址4. 远程连接openGauss5. 固定连接TCP公网地址6. 固定地址连接测试 &#x1f341; 小结 &#x1f341; 前言 openGauss是一款开源关系型数据库管理系统&#xff0c;采用木兰宽松许…

grafana 监控无图解决

环境 k8s 1.26.0 helm 部署的prometheus charts为 prometheus-community/kube-prometheus-stack 问题 部署上之后,发现grafana很多dashboard无图。 处理过程 进grafana dashboards 任意选取一张有问题的图,查看查询语句,如下 sum(container_memory_rss{job="kube…

Spring-MVC使用JSR303及拦截器,增强网络隐私安全

目录 一、JSR303 ( 1 ) 是什么 ( 2 ) 作用 ( 3 ) 常用注解 ( 4 ) 入门使用 二、拦截器 2.1 是什么 2.2 拦截器与过滤器的区别 2.3 应用场景 2.4 基础使用 2.5 用户登录权限控制 给我们带来的收获 一、JSR303 ( 1 ) 是什么 JSR 303是Java规范请求&#xff…

Sql语句大全--更新

今天抽空整理下项目中的Sql语句 项目中用到的Sql语句大全 Update 语句 Update 语句 Update语句update OLASF1.LLB set CBBTHCC 52 WHERE CBPOLNUMC201728534update OLASF1.LLB set CBBTHCC 01 WHERE CBPOLNUMC201728534update OLASF1.LB set CBBTHCC 01 WHERE CBPOLNUMC…

进程间通信——共享内存

目录 共享内存的原理 共享内存通信的实现步骤 通信实例 共享内存的原理 原理&#xff1a;可以说&#xff0c;共享内存是一种最为高效的进程间通信方式。因为进程可以直接读写内存&#xff0c;不需要任何数据的复制。为了在多个进程间交换信息&#xff0c;内核专门留出一块内…

C语言 —— 初步入门知识(第一个C语言程序、数据类型、变量常量、字符与注释)

本篇文章介绍C语言的基础知识&#xff0c;使读者对C语言能够有一个大概的认识. 不会细写每一个知识点, 但是能够入门C语言, 进行初步的C语言代码阅读. 首先, 什么是语言? 对于人和人之间进行交流的语言, 我们知道, 可以通过汉语, 英语, 日语等语言进行交流. 那么对于人和计算…

python LeetCode 刷题记录 66

题目 给定一个由 整数 组成的 非空 数组所表示的非负整数&#xff0c;在该数的基础上加一。 最高位数字存放在数组的首位&#xff0c; 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外&#xff0c;这个整数不会以零开头。 示例 输入&#xff1a;digits [4,3,2,…

计算机网络:三次握手与四次挥手

摘取作者&#xff1a;拓跋阿秀 三次握手 三次握手&#xff08;Three-way Handshake&#xff09;其实就是指建立一个TCP连接时&#xff0c;需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后…

SpringMVC系列(四)之SpringMVC实现文件上传和下载

目录 前言 一. SpringMVC文件上传 1. 配置多功能视图解析器 2. 前端代码中&#xff0c;将表单标记为多功能表单 3. 后端利用MultipartFile 接口&#xff0c;接收前端传递到后台的文件 4. 文件上传示例 1. 相关依赖&#xff1a; 2. 逆向生成对应的类 3. 后端代码&#xf…

(10)(10.9) 术语表(一)

文章目录 前言 1 2.4Ghz 2 AGL 3 AHRS 4 APM 5 AMA 6 Arduino 7 APM (AutoPilot Mega) 8 ATC 9 Copter 10 Plane 11 Rover 12 BEC 13 Bootloader 14 COA 15 DCM 16 Eagle file 17 ESC 18 Firmware 19 FPV 20 FTDI 前言 &#xff01;Note 术语表未编入索…

微信小程序学习笔记1.0

第1章 微信小程序基础 1.1 微信小程序介绍 1.1.1 什么是微信小程序 微信小程序的特点&#xff1a; ① 微信小程序是不需要下载和安装的&#xff1b; ② 它可以完成App应用软件的交互功能&#xff1b; ③ 用户扫一扫或者搜一下就可以使用小程序&#xff1b; ④ 微信小程序…

正则表达式提取返回报文data里面的\“id\“:312254,的值

要使用正则表达式提取返回报文 data 字段里的 "id":312254 的值&#xff0c;您可以编写一个合适的正则表达式&#xff0c;并使用 Java 中的正则表达式匹配和提取功能。 假设 data 是一个包含 JSON 字符串的字段&#xff0c;类似于以下格式&#xff1a; { "…

【Python】IP地址解析并生成

IP地址解析并生成 #!python3 # codingutf-8 import logging import ipaddresslogging.basicConfig(levellogging.INFO,format%(asctime)s [%(filename)s:%(lineno)d] %(levelname)s # %(message)s,datefmt%Y-%m-%d %M:%S)def parse_ipaddress_user(addrs, flag):addr_fields s…

DRF02-请求响应与路由

文章目录 1. http请求响应1.1. 请求与响应1.1.1 Request1.1.1.1 常用属性1).data2).query_params3)request._request基本使用1.1.2 Response1.1.2.1 构造方式1.1.2.2 response对象的属性1).data2).status_code3).content1.1.2.3 状态码1)信息告知 - 1xx2)成功 - 2xx3)…

Python模板注入(SSTI)

概念 发生在使用模板引擎解析用户提供的输入时。模板注入漏洞可能导致攻击者能够执行恶意代码或访问未授权的数据。 模板引擎可以让&#xff08;网站&#xff09;程序实现界面与数据分离&#xff0c;业务代码与逻辑代码分离。即也拓宽了攻击面&#xff0c;注入到模板中的代码可…