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

学校周赛(2)

A.Minimize!

题目

在这里插入图片描述

思路

本题只需要遍历c的取值,实时更新答案即可

代码
#include<iostream>
#include<algorithm>
using namespace std;void todo(){int a,b;cin>>a>>b;int ans=INT_MAX;for(int c=a;c<=b;c++){ans=min(ans,(c-a)+(b-c));}cout<<ans<<endl;
}int main(){int t;cin>>t;while(t--){todo();}return 0;
}

B.osu!mania

题目

在这里插入图片描述

思路

本题只需要将图从下到上进行遍历并记录#的位置即可

代码
#include<iostream>
#include<vector>
using namespace std;void todo() {vector<int> ans;int n; cin >> n;int num;vector<string> cnt(n);for (int i = 0; i < n; i++) {cin >> cnt[i];}num = cnt[0].size();for (int i = n-1; i >=0; i--) {for (int j = 0; j < num; j++) {if (cnt[i][j] == '#') {ans.push_back(j+1);}}}for (int x : ans) {cout<<x<<" ";}cout << endl;
}int main() {int t; cin >> t;while (t--) {todo();}return 0;
}

C.The Legend of Freya the Frog

题目

在这里插入图片描述

思路

首先我们将路分为沿x沿y方向进行考虑,分别计算两者至少需要几步,由于每次都是先向x轴方向前进,所以如果是x大的话则yx要少走一步,如果y大或者y==x时,说明yx走了相同的步数。

代码
#include<iostream>
#include<vector>
using namespace std;void todo() {int ans = 0;int x, y, k;cin >> x >> y >> k;//至少走几步x = ((x % k) ? 1 : 0)+ x / k;y = ((y % k) ? 1 : 0)+y / k;//cout << x << " " << y<<endl;ans = (x > y) ? (x*2-1):(y*2) ;cout << ans << endl;
}int main() {int t; cin >> t;while (t--) {todo();}return 0;
}

D.Satyam and Counting

题目

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

思路

本题我采用的方法时哈希+维护的方式,首先记录y=0y=1,以及每一个x位置的点数,我们进行一个枚举和判断,我们枚举与y轴平行的高进行分析。
第一次枚举:当高为直角边(此处对应x为两个点)时,是一个组合,取y=1的作为另一个直角边,可以组成y[1]-1个三角形,同理y=0时,对应的时y[0]-1,总和起来时y[0]+y[1]-2
第二次枚举:当高不为直角边时(设顶点为(x,y)),查看与其y不相同的线上是否存在两个点组成直角三角形,由于本题的特殊性高一定为1,所以想要续成直角边,对应其余两点的x坐标一定是x-1,y-1

代码
#include<iostream>
#include<vector>
using namespace std;void todo() {long long ans = 0;int n; cin >> n;vector<vector<int>> cnt(n + 1, vector<int>(2));vector<int> cnt_x(n + 1);vector<int> cnt_y(n + 1);for (int i = 0; i < n; i++) {int x, y;cin >> x >> y;cnt[x][y]++;cnt_x[x]++;cnt_y[y]++;}//维护一个直角边,平行于y轴的边for (int i = 0; i < n + 1; i++) {if (cnt_x[i] == 2) ans += cnt_y[0] + cnt_y[1] - 2;}for (int i = 1; i < n; i++) {if (cnt[i][0] && cnt[i - 1][1] && cnt[i + 1][1]) ans++;if (cnt[i][1] && cnt[i - 1][0] && cnt[i + 1][0]) ans++;}cout << ans << endl;
}int main() {int t; cin >> t;while (t--) {todo();}return 0;
}

E.Klee’s SUPER DUPER LARGE Array!!!

题目

在这里插入图片描述

思路

本题考查的是数学+二分,在数学方面考察了一个等差数列求和,一个二次函数最值问题。
我们通过二分去寻找我们对应的i,我们按照题目意思将其分为左右两侧分别求和sum1 sum2,我们对应的答案则为|sum1-sum2|,通过化简得到[(2k+i)(i+1)-(n-i-1)(2k+n+i)]/2,不难看出这是一个二次函数,我们取绝对值之后,最小的结果对应着与0最接近的点,我们统计大于0当中最近的点,和小于0中最接近的点,最后返回其中对应的最小答案

代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;//等差数列
long long sum(long long a, long long b) {return ((b - a + 1) * (a + b)) >> 1;
}void todo() {int n, k; cin >> n >> k;int l = 0, r = n-1 ; while (l+1 < r) {int i = (l + r) / 2;long long sum1 = sum(k,k+i);long long sum2 = sum(k+i+1,k+n-1);//ans=abs(sum1-sum2)=| [(2k+i)(i+1)-(n-i-1)(2k+n+i)]/2 | ==>  二次函数//要绝对值最小则就是使答案向0逼近//找到左右侧距离0最近的两个点if (sum2-sum1>0) {l = i;  }else { r = i;  }}//返回两点之间的最小值cout << min(abs(sum(k, k + l) - sum(k + l + 1, k + n - 1)), abs(sum(k, k + r) - sum(k + r + 1, k + n - 1))) << endl;
}int main() {int t; cin >> t;while (t--) {todo();}return 0;
}

F. Firefly’s Queries (补题中)

题目

在这里插入图片描述

思路
代码

相关文章:

  • 如何在银河麒麟操作系统中查看内存页大小
  • 大数据Hologres(一):Hologres 简单介绍
  • 【数据结构初阶】排序算法(中)快速排序专题
  • 人工智能实战用折线图解读产业GDP发展态势
  • 【自用】jlu 数据库 第一章 Introduction
  • 大模型分布式训练并行技术(九)-总结
  • kubernetes配置资源管理
  • Python 从入门到实战31(数据库编程接口)
  • 【个人笔记】数据一致性的解决方案
  • MySQL-数据库约束
  • 翻译:Recent Event Camera Innovations: A Survey
  • Anki 学习日记 - 卡片模版 - 单选ABCD(纯操作)
  • 《Linux运维总结:使用 MongoDB工具备份和恢复mongodb 7.0.14分片集群(方案一)》
  • yolov8环境安装
  • GPT+AI技术实战:构建多端智能虚拟数字人的创新与突破
  • DataBase in Android
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • JDK9: 集成 Jshell 和 Maven 项目.
  • Netty 4.1 源代码学习:线程模型
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Python十分钟制作属于你自己的个性logo
  • 阿里云购买磁盘后挂载
  • 基于Android乐音识别(2)
  • 巧用 TypeScript (一)
  • 使用 Docker 部署 Spring Boot项目
  • 使用agvtool更改app version/build
  • 世界上最简单的无等待算法(getAndIncrement)
  • k8s使用glusterfs实现动态持久化存储
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • # wps必须要登录激活才能使用吗?
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #### golang中【堆】的使用及底层 ####
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • (Java入门)学生管理系统
  • (阿里云万网)-域名注册购买实名流程
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .describe() python_Python-Win32com-Excel
  • .Net Core缓存组件(MemoryCache)源码解析
  • .Net 基于IIS部署blazor webassembly或WebApi
  • .net 提取注释生成API文档 帮助文档
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .net6 当连接用户的shell断掉后,dotnet会自动关闭,达不到长期运行的效果。.NET 进程守护
  • /bin/bash^M: bad interpreter: No such file or directory
  • @Transactional 竟也能解决分布式事务?
  • [ NOI 2001 ] 食物链
  • [ 物联网 ]拟合模型解决传感器数据获取中数据与实际值的误差的补偿方法
  • [202209]mysql8.0 双主集群搭建 亲测可用
  • [C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计
  • [C#]winform部署yolov5-onnx模型
  • [C#]winform部署yolov9的onnx模型