当前位置: 首页 > news >正文

Codeforces Round 719 (Div. 3)除F2题外补题报告

Codeforces Round 719 Div. 3 除F2题外补题报告

  • 得分情况
  • 补题情况
  • 错题分析
    • C题
      • 题目大意
      • 初次思路
      • 正解思路
      • 正解代码
      • 错误原因
    • D题
      • 题目大意
      • 初次思路
      • 正解思路
      • 正解代码
      • 错误原因
    • E题
      • 题目大意
      • 初次思路
      • 正解思路
      • 正解代码
    • F1题
      • 题目大意
      • 正解思路
      • 正解代码
    • G题
      • 题目大意
      • 正解思路
      • 正解代码

得分情况

A题AC
B题AC
C题TLE在样例2
(题简单,脑袋没转过弯来)

补题情况

全部AC

错题分析

C题

题目大意

构造一个n∗n的矩阵,使得相邻的两个格子填的数不能相邻。

初次思路

暴力枚举。

正解思路

我们可以把奇偶分开填入矩阵,可知,除了2*2无解,别的情况都行。

正解代码

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main(){int t;scanf("%d",&t);while(t--){int k=1;int n;scanf("%d",&n);if(n==1){printf("1\n");continue;}if(n==2){printf("-1\n");continue;}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){printf("%d ",k);k+=2;if(k>n*n){k=2;}}printf("\n");}}return 0;
}

错误原因

题意理解错了。

D题

题目大意

给出T组序列a,长度为N,询问有多少对 ( i , j ) (i,j) (i,j)满足 i < j i<j i<j a j − a i = j − i a_j −a_i =j−i ajai=ji

初次思路

暴力枚举。

正解思路

a j − a i = j − i a_j −a_i =j−i ajai=ji变形为 a j − j = a i − i a_j −j =a_i−i ajj=aii,然后统计值与下标的差,再用排列组合公式求出数量—— n ∗ ( n − 1 ) / 2 n*(n-1)/2 n(n1)/2,最后求和。

正解代码

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int vis[400005];
int main(){int t;scanf("%d",&t);while(t--){memset(vis,0,sizeof vis);int n;scanf("%d",&n);for(int i=1;i<=n;i++){int x;scanf("%d",&x);vis[x-i+n]++;}long long ans=0;for(int i=0;i<=2*n;i++){ans+=1ll*vis[i]*(vis[i]-1)/2;}printf("%lld\n",ans);}return 0;
}

错误原因

没有想到对原式进行变形。

E题

题目大意

一共有 t 组数据,每组数据第一行为 n ,为字符串长度,下一行为一个字符串(只有 ’ . ’ 和 ’ * '字符,每次可以向右或者向左移动 ‘ * ’ 字符,求把所有的 ’ * ’ 字符连起来的最小移动次数。

初次思路

暴力模拟。

正解思路

中间的羊是羊群的中心,因此让羊往中心靠拢最优,所以统计其它羊靠过来的距离最优。

正解代码

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int sheep[1000005];
int main(){int t;cin>>t;while(t--){long long n,cnt=0,step=0;string s;cin>>n>>s;for(int i=0;i<n;i++){if(s[i]=='*'){sheep[++cnt]=i;}}int mid=(1+cnt)/2;int len_left=1,len_right=1;for(int i=1;i<=cnt;i++){if(sheep[mid]>sheep[i]){step+=sheep[mid]-sheep[i]-len_left++;}if(sheep[mid]<sheep[i]){step+=sheep[i]-sheep[mid]-len_right++;}}cout<<step<<"\n";} return 0;
}

F1题

题目大意

交互题。给定 n,t,k(由于这里是简单版,保证 t=1,即t没啥用),有一个长度为n的标号为1⋯n 的仅含01的数组,你每次可以询问l到r的和,需要得出数组中第k个0的下标。最多询问20次。

正解思路

可以用二分枚举位置,通过询问结果来判断前面有多少个0,如果0的数量大于等于k,说明mid要变小,l=mid+1,反之,r=mid。

正解代码

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int sheep[1000005];
int main(){int m,n,t;cin>>m>>t>>n;int l=1,r=m;while(l<r){int mid=(l+r)/2;cout<<"? "<<1<<" "<<mid<<"\n";cout.flush();int x;cin>>x;if(mid-x>=n){r=mid;}else{l=mid+1;}}cout<<"! "<<l;return 0;
}

G题

题目大意

给定一个n×m的网格,每个格子(i,j)都有一个整数参数 a i j ( − 1 < = a i j < = 1 0 9 ) a_{ij}(-1<=a_{ij}<=10^9) aij(1<=aij<=109), a i j = − 1 a_{ij}=−1 aij=1表示这个格子不能通过;否则,这个格子可以通过,若 a i j > 0 a_{ij}>0 aij>0则表示这个格子内有一个传送门。现在小D想要从(1,1)移动到(n,m),它可以以如下两种方式移动:在任意两个相邻且参数均不为−1的格子间移动,花费为w,在有传送门的两个格子 (i,j)和(x,y) 间移动,花费为 a i j + a x y a_{ij}+a_{xy} aij+axy求小D所需的最小花费。

正解思路

分类思考,一是不走传送门,二是走一次传送门,进行两次bfs,求出最终结果。

正解代码

#include <bits/stdc++.h>
using namespace std;
int n,m,w;
int a[2010][2010],dis[2010][2010];
long long ans1=0x3f3f3f3f3f3f3f3f,ans2=0x3f3f3f3f3f3f3f3f,allans=0x3f3f3f3f3f3f3f3f;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
void bfs(int sx,int sy,long long &ans){memset(dis,-1,sizeof(dis));queue<pair<int,int> >que;dis[sx][sy]=0;que.push(make_pair(sx,sy));while(!que.empty()){int x=que.front().first,y=que.front().second;que.pop();for(int i=0;i<4;i++){int nx=x+dx[i],ny=y+dy[i];if(nx<1||ny<1||nx>n||ny>m||a[nx][ny]==-1||dis[nx][ny]!=-1){continue;}dis[nx][ny]=dis[x][y]+1;que.push(make_pair(nx,ny));}}if(sx==1&&dis[n][m]!=-1){allans=min(allans,(long long)dis[n][m]*w);}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(dis[i][j]!=-1&&a[i][j]>0){ans=min(ans,(long long)dis[i][j]*w+a[i][j]);}} }
}
int main(){scanf("%d%d%d",&n,&m,&w);for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){scanf("%d",&a[i][j]);}}bfs(1,1,ans1);bfs(n,m,ans2);allans=min(allans,ans1+ans2);printf("%lld",allans==0x3f3f3f3f3f3f3f3f?-1:allans);return 0;
}

相关文章:

Codeforces Round 719 (Div. 3)除F2题外补题报告

Codeforces Round 719 Div. 3 除F2题外补题报告 得分情况补题情况错题分析C题题目大意初次思路正解思路正解代码错误原因 D题题目大意初次思路正解思路正解代码错误原因 E题题目大意初次思路正解思路正解代码 F1题题目大意正解思路正解代码 G题题目大意正解思路正解代码 得分情…...

docker本地搭建spark yarn hive环境

docker本地搭建spark yarn hive环境 前言软件版本准备工作使用说明构建基础镜像spark on yarn模式构建on-yarn镜像启动on-yarn集群手动方式自动方式 spark on yarn with hive(derby server)模式构建on-yarn-hive镜像启动on-yarn-hive集群手动方式自动方式 常用示例spark执行sh脚…...

每日学习笔记:C++ 11的Tuple

#include <tuple> Tuple介绍(不定数的值组--可理解为pair的升级版) 定义 创建 取值 初始化 获取tuple元素个数、获取tuple某元素类型、将2个tuple类型串接为1个新tuple类型...

MongoDB聚合运算符;$dateToParts

$dateToParts聚合运算符将日期表达式拆分成多个字段放在一个文档返回&#xff0c;属性有year、month、day、hour、minute、second和millisecond。如果iso8601属性设置为true&#xff0c;返回的各部分用ISO周日期返回&#xff0c;属性分别是&#xff1a;isoWeekYear、isoWeek、i…...

Spring MVC RequestMappingHandlerAdapter原理解析

在Spring MVC框架中&#xff0c;RequestMappingHandlerAdapter是一个核心的组件&#xff0c;负责将请求映射到具体的处理器方法上&#xff0c;并调用这些方法来处理请求。其中&#xff0c;invokeHandlerMethod方法是这个适配器中的一个关键方法&#xff0c;它负责实际调用处理器…...

反射整理学习

目录 1、反射介绍 2、反射API 2.1 获取类对应的字节码的对象&#xff08;三种&#xff09; 2.2 常用方法 3、反射的应用 3.1 创建 : 测试物料类 3.2 获取类对象 3.3 获取成员变量 3.4 通过字节码对象获取类的成员方法 3.5 通过字节码对象获取类的构造方法 4、创建对象…...

JavaScript 运算规则详解

在 JavaScript 中&#xff0c;运算规则是非常重要的基础知识&#xff0c;了解这些规则可以帮助我们正确地编写代码并避免一些常见的错误。本教程将详细介绍 JavaScript 中的各种运算规则&#xff0c;包括基本运算符、类型转换、运算优先级等内容。 1. 基本运算符 JavaScript …...

C++篇 语 句

到目前为止&#xff0c;我们只见过两种语句&#xff1a; return 语句和表达式语句。根据语句对执行顺 序的影响&#xff0c;C 语言其余语句大多属于以下 3 大类。 选择语句&#xff1a; if 语句和 switch 语句。循环语句&#xff1a; while 语句&#xff0c; do...while 语句和…...

简洁的在线观影开源项目

公众号&#xff1a;【可乐前端】&#xff0c;每天3分钟学习一个优秀的开源项目&#xff0c;分享web面试与实战知识。 每天3分钟开源 hi&#xff0c;这里是每天3分钟开源&#xff0c;很高兴又跟大家见面了&#xff0c;今天介绍的开源项目简介如下&#xff1a; 仓库名&#xff1…...

VB超级模块函数VB读写记事本-防止乱码支持UTF-8和GB2312编码

Private Sub Command1_Click() Writein “C:\Users\Administrator\Desktop\1.txt”, “文本文内容” End Sub Private Sub Form_Load() Text1 ReadANSI(“C:\Users\Administrator\Desktop\1.txt”) Text2 ReadUTF8(“C:\Users\Administrator\Desktop\1.txt”) End Sub 写入…...

XSS靶场-DOM型初级关卡

一、环境 XSS靶场 二、闯关 1、第一关 先看源码 使用DOM型&#xff0c;获取h2标签&#xff0c;使用innerHTML将内容插入到h2中 我们直接插入<script>标签试一下 明显插入到h2标签中了&#xff0c;为什么不显示呢&#xff1f;看一下官方文档 尽管插入进去了&#xff0…...

【嵌入式高级C语言】10:C语言文件

文章目录 1 文件的概述1.1 文件分类&#xff08;存储介质&#xff09;1.2 磁盘文件分类&#xff08;存储方式&#xff09;1.3 二进制文件和文本文件的区别 2 文件缓冲区3 文件指针4 文件的API4.1 打开文件4.2 关闭文件4.3 重新定位流4.3.1 fseek4.3.2 ftell4.3.3 rewind 4.4 字…...

创建数据表

Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 如果要进行数据表的创建 create table 表名称 (列名称 类型 [DEFAULT 默认值 ] ,列名称 类型 [DEFAULT 默认值 ] ,列名称 类型 [DEFAULT 默认值 ] ,...列名称 类型 [DEFAULT 默认值 ] )…...

C语言字符串型常量

在C语言中&#xff0c;字符串型常量是由一系列字符组成的常量。字符串常量在C中以双引号&#xff08;"&#xff09;括起来&#xff0c;例如&#xff1a;“Hello, World!”。字符串常量在C中是不可变的&#xff0c;也就是说&#xff0c;一旦定义&#xff0c;就不能修改其内…...

计算机网络 八股

计算机网络体系结构 OSI&#xff1a;物理层、数据链路层、网络层、运输层、会话层、表示层、应用层...

深入了解 Jetpack Compose 中的 Modifier

Jetpack Compose 是 Android 中用于构建用户界面的现代化工具包。其中&#xff0c;Modifier 是一个非常重要的概念&#xff0c;它允许我们对 UI 组件进行各种样式和布局的调整。在本篇博客中&#xff0c;我们将深入了解 Modifier&#xff0c;以及如何在 Compose 中使用它。 什…...

【数据库】聚合函数|group by分组|having|where|排序|函数 关键字的使用

目录 一、聚合函数 1、max() 2、min() 3、avg() 4、sum() 5、count() 二、group by 分组汇总 一般聚合函数配合着group by(分组)语句进行使用 把一组的数据放到一起&#xff0c;再配合聚合函数进行使用 三、having having语句 做筛选的 四、where和having的作用以及区…...

docker安装mongoDB及使用

一.mongodb是什么&#xff1f; MongoDB是一个NoSQL的非关系型数据库 &#xff0c;支持海量数据存储&#xff0c;高性能的读写 1.mongo的体系结构 SQL术语/概念MongoDB术语/概念解释/说明databasedatabase数据库tablecollection数据库表/集合rowdocument数据记录行/文档colum…...

Linux 之五:权限管理(文件权限和用户管理)

1. 文件权限 在Linux系统中&#xff0c;文件权限是一个非常基础且重要的安全机制。它决定了用户和用户组对文件或目录的访问控制级别。 每个文件或目录都有一个包含9个字符的权限模式&#xff0c;这些字符分为三组&#xff0c;每组三个字符&#xff0c;分别对应文件所有者的权限…...

基于YOLOv8深度学习的葡萄病害智能诊断与防治系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...

在树莓派上添加音频输入设备的几种方法

在树莓派上添加音频输入设备可以通过以下步骤完成&#xff0c;具体方法取决于设备类型&#xff08;如USB麦克风、3.5mm接口麦克风或HDMI音频输入&#xff09;。以下是详细指南&#xff1a; 1. 连接音频输入设备 USB麦克风/声卡&#xff1a;直接插入树莓派的USB接口。3.5mm麦克…...