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

洛谷2月普及组(月赛)

 🌼小宇(治愈版) - 刘大拿 - 单曲 - 网易云音乐 

OI赛制且难度对标蓝桥杯省赛(😥真难,第三题做了几百年,第四题只敢骗骗分)

花了10块钱🙃 买官网的思路,结果还是习惯自己硬磕,别人的思路根本不想看,还不如自己百度

切记切记,OI赛制是部分分 + 无反馈

所以骗分很重要

骗分 = 样例 + 模拟 + 暴力

养成先测试再提交的好习惯,否则,你以为你天王盖地虎,原来是个二百五 

👊总结 

总结写在前头

1,骗分 = 样例 + 模拟 + 暴力

2,不论是codeforces还是洛谷,只做对样例,不给分,盲猜改革后的蓝桥杯也没分

3,不论是codeforces还是洛谷,凡是和数字有关的,都和奇偶数规律有着千丝万缕的关系

4,第三题,AC 100%需要(邻接表 + STL的priority_queue + Dijkstra),我还有邻接表没学,先留个坑,日后有时间回来做 

目录

👊总结 

👊一,P9063 [yLOI2023] 分解只因数

🌼解法1    AC 100%

🌼解法2    AC 90%

🌼解法3    AC 60% 

👊二,P9064 [yLOI2023] 苦竹林

🌼AC 30% 

🌼AC  100% 

👊三,P9065 [yLOI2023] 云梦谣

🌼AC  5%

👊四,P9066 [yLOI2023] 腐草为萤

🌼AC  5%


👊一,P9063 [yLOI2023] 分解只因数

P9063 [yLOI2023] 分解只因数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

通过率 10% 

难度:入门 

 

首先要理解n不一定需要相乘得到的,比如 11 == 11,3 == 3,也可以是等本身,所以3和11也是只因数,一开始钻牛角尖了 

🌼解法1    AC 100%

因数中只要存在偶数,也就是不全为奇数,累乘的n就是偶数

所以,当n是偶数,说明质因数中存在偶数;当n是奇数,质因数全为奇数

所以n是奇数时输出"Yes",n是偶数时输出"No"

#include<iostream>
#include<cstdio> //scanf()
using namespace std;
typedef long long LL;
bool check(LL n)
{if(n % 2 == 1) return true;return false;
}
int main()
{int t;scanf("%d", &t);while(t) {LL n;scanf("%lld", &n);if(check(n)) cout<<"Yes"<<endl;else cout<<"No"<<endl;t--;}return 0;
}
5
2
No
3
Yes
4
No
6
No
9
Yes4
12
No
123
Yes
1234
No
12345
Yes

🌼解法2    AC 90%

常规解法,对质数,因数不熟练的新手,耗时比较久,比如我

质数:能被1和本身整除的数

1,遍历到m的平方差,即 i * i <= m

2,m % i == 0,则 m 不是质数

#include<iostream>
#include<cstdio> //scanf()
using namespace std;
typedef long long LL;
bool check(LL n)
{int flag = 1;if(n == 1 || n == 2) return false; //1不是质数, 2是偶数int m;for(m = 2; m * m <= n; ++m) {for(int i = 2; i * i <= m; ++i)if(m % i == 0) {flag = 0; //m不是质数break;}if(flag && n % m == 0) //m是质数且是n的因子if(m % 2 == 0) return false; //因子是偶数}return true;
}
int main()
{int t;scanf("%d", &t);while(t) {LL n;scanf("%lld", &n);if(check(n)) cout<<"Yes"<<endl;else cout<<"No"<<endl;t--;}return 0;
}

第10个样例,Time Limit Exceeded,TLE了

输入3,由于 m * m <= 3连 m = 2都不满足,所以没经过判断,直接return true;了

🌼解法3    AC 60% 

投机取巧,骗分的方法,关键是快!只用了5分钟,分也不少

#include<iostream>
#include<cstdio> //scanf()
using namespace std;
typedef long long LL;
bool check(LL n)
{if(n == 2 || n == 4 || n == 6|| n == 8 || n == 10 || n == 12 || n == 14|| n == 16 || n == 18 || n == 20)return false;if(n == 3 || n == 5 || n == 9 || n == 15 || n == 21|| n == 7 || n == 11 || n == 13 || n == 17 || n == 19)return true;
}
int main()
{int t;scanf("%d", &t);while(t) {LL n;scanf("%lld", &n);if(check(n)) cout<<"Yes"<<endl;else cout<<"No"<<endl;t--;}return 0;
}

👊二,P9064 [yLOI2023] 苦竹林

P9064 [yLOI2023] 苦竹林 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

通过率 14%

难度:普及- 

 

1,先对数组a从小到大排序

2,尺取法,对连续的m个数遍历,每次更新Min

将Min与 (尺取的最后一个元素 - 尺取的第一个元素) 作比较

复杂度O(logn + n - m) ;logn表示log2n,是快排的复杂度

不会尺取法的看这里 

尺取法(图文解析、初学推荐)_小白小郑的博客-CSDN博客_尺取法

算法基础----尺取法(双指针)_jkaliang的博客-CSDN博客

1,尺取法是算法竞赛中,常用的优化技巧 

2,它比暴力枚举区间的效率高很多(特别是数据量大时,比如10^6),是一种高效枚举区间的方法,用于求取有一定限制的区间个数或最短区间 

3,本题中通过左边界右移,右边界右移的方法,找到满足区间,并用Min保留相减最小值(也就是题目中的ε

注意!!!OI赛制没有反馈,所以首先要自己想多点全面,偏门的案例

来验证代码,不然很可能就是信心满满 = AC 30%

先别急着提交,下面我展示5组测试样例 

10 6
1 8 26 33 41 17 102 27 11 5
226 2
1 4 9 12 13 15
15 3
1 2 3 4 5
26 4
1 7 8 3 4 6
410 4
120 240 550 1101 1199 2012 3312 5520 5523 5524
959

然后,,,第一次30%

🌼AC 30% 

#include<iostream>
#include<cstdio> //scanf()
#include<algorithm> //sort()
using namespace std;
int a[100010];
int main()
{int n, m;scanf("%d%d", &n, &m);for(int i = 0; i < n; ++i)scanf("%d", &a[i]); //读入数据sort(a, a + n);int Min = 1e8; //大坑for(int i = m - 1; i < n; ++i) {int j = i - (m - 1); //此时[j, i]刚好m个数if(a[i] - a[j] < Min)Min = a[i] - a[j];}cout<<Min;return 0;
}

思路很清晰啊,怎么会错呢?原来是第13行,初始最小值设置成1e8了

而题目原文却是:

所以,设置最小值,直接将题目中的范围粘贴过来好了。。

最大值一般设为负数

毕竟70%的样例都是大于1e8的

🌼AC  100% 

#include<iostream>
#include<cstdio> //scanf()
#include<algorithm> //sort()
using namespace std;
int a[100010];
int main()
{int n, m;scanf("%d%d", &n, &m);for(int i = 0; i < n; ++i)scanf("%d", &a[i]); //读入数据sort(a, a + n);int Min = 1e9; //大坑for(int i = m - 1; i < n; ++i) {int j = i - (m - 1); //此时[j, i]刚好m个数if(a[i] - a[j] < Min)Min = a[i] - a[j];}cout<<Min;return 0;
}

复杂度O(n * logn),也就是快排的复杂度,后面的O(n - m)相比O(nlogn)可忽略

👊三,P9065 [yLOI2023] 云梦谣

P9065 [yLOI2023] 云梦谣 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目有点长😅,通过率 6%

难度:普及+/提高

 

 

 

 

1,读入数据较多,我们用scanf不用cin 

2,点与点之间路径一样,都为1,我觉得用dfs比Dijkstra好做

所以就是纯dfs(后面证明dfs❌)

然鹅。。第一次就AC 5% ,而且我四个测试样例都对了,,,,

🌼AC  5%

#include<iostream>
#include<cstdio> //scanf()
using namespace std;
int a[3010][3010], book[3010][3010], b[3010][3010];
int fly[3010][3010], ans = 3000;
int n, m, k;void dfs(int x, int y, int step)
{int next[4][2] = { //方向数组, 循环得到下一步坐标{-1, 0}, //上{1, 0}, //下{0, -1}, //左{0, 1}}; //右//dfs第一步: 遍历int tx, ty; //临时变量for(int i = 0; i < 4; ++i) {tx = x + next[i][0]; //0表示每行第1个元素ty = y + next[i][1]; //1表示每行第2个元素//越界if(tx < 1 || ty < 1 || tx > n || ty > m)continue; //跳出本次循环//非障碍物且未走过if(a[tx][ty] != 0 && book[tx][ty] != 1) {book[tx][ty] = 1; //标记dfs(tx, ty, step + 1); //递归book[tx][ty] = 0; //取消标记}}//找到目标if(x == n && y == m) {ans = min(ans, step); //更新return; //返回上一步}
}int main()
{scanf("%d%d%d", &n, &m, &k);for(int i = 1; i <= n; ++i)for(int j = 1; j <= m; ++j)scanf("%d", &a[i][j]); //读入数据int r, t;for(int i = 0; i < k; ++i) {scanf("%d%d", &r, &t);fly[r][t] = 1; //可飞行}book[1][1] = 1; //初始已走过//得到全程走的最小值dfs(1, 1, 0);//得到飞的最小值for(int i = 1; i <= n; ++i)for(int j = 1; j <= m; ++j)if(fly[i][j] == 1) { //可飞if(a[i][j] != a[1][1]) //高度不同dfs(i, j, 2);else //高度一样dfs(i, j, 1);}cout<<ans;return 0;
}

 做了2小时才AC  5%,,,666

问题在哪呢?

1,dfs就不适合最短路(指数级复杂度),一般用Dijksta堆优化求单源最短路

2,漏了,如果到达不了,要输出"-1"的情况(补上这个就AC  10%)

3,代码里默认(1, 1)能飞,这是错误的

因为只是样例中的(1, 1)能飞,存在(1, 1)不能飞,走几步才能飞的情况

最后的

cout<<ans;

改成

if(ans == 3000) cout<<-1;
else cout<<ans;

就AC  10% 

好的,下一步考虑用stl的优先队列priority_queue优化Dijkstra 

这已经是最简单的做法了,如果能成,估计只需要60行

不行了,堆优化的Dijkstra虽然可以用stl的最大最小值优先队列(大小根堆),但是还得学习什么“链式前向星”(也就是静态的邻接表),《啊哈算法》里有讲邻接表,但是我想先放放,先把简单的,更易拿分的掌握了,两个月以内再回来克服它

2023/02/12     👆👆👆

10:27留坑 

👊四,P9066 [yLOI2023] 腐草为萤

P9066 [yLOI2023] 腐草为萤 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

难度:提高+/省选- 

题目就不放了,感兴趣的,自己去模拟 + 样例骗分吧

🌼AC  5%

#include <iostream>
using namespace std;
int a[110], b[110];
int main()
{int n;cin>>n;for(int i = 0; i < n; ++i)cin>>a[i]; //初始位置for(int i = 0; i < n; ++i)cin>>b[i]; //亮度for(int i = 1; i < n; ++i) {if(b[i] > b[i - 1])cout<<a[i]<<" "<<0;else if(b[i] == b[i - 1])cout<<0<<" "<<0;elsecout<<0<<" "<<a[i - 1];}return 0;
}

相关文章:

洛谷2月普及组(月赛)

&#x1f33c;小宇&#xff08;治愈版&#xff09; - 刘大拿 - 单曲 - 网易云音乐 OI赛制且难度对标蓝桥杯省赛&#xff08;&#x1f625;真难&#xff0c;第三题做了几百年&#xff0c;第四题只敢骗骗分&#xff09; 花了10块钱&#x1f643; 买官网的思路&#xff0c;结果…...

【博学谷学习记录】超强总结,用心分享 | 架构师 Spring源码学习总结

文章目录Spring的循环依赖1.循环依赖的定义&&原因2.循环依赖的场景1.构造器注入引起循环依赖2.Field属性setter注入的循环依赖3.循环依赖解决思路4.三级缓存5.面试题[三级缓存]AOP源码深度剖析概述Spring AOP的前世今生实现机制**JDK 动态代理****CGLIB 代理**流程总结…...

Linux C/C++ timeout命令实现(运行具有时间限制)

Linux附带了大量命令&#xff0c;每个命令都是唯一的&#xff0c;并在特定情况下使用。Linux timeout命令的一个属性是时间限制。可以为任何命令设置时间限制。如果时间到期&#xff0c;命令将停止执行。 如何使用timeout命令 我们将解释如何使用Linux timeout命令 timeout […...

西湖论剑初赛web wp

Node Magical Login 简单的js代码审计。 Flag分成了两部分。 第一部分&#xff1a; 这里就简单的判断了一下user是否等于admin&#xff0c;直接绕过。 第二部分&#xff1a; checkcode ! “aGr5AtSp55dRacer”&#xff0c;让其为真&#xff0c;利用数组绕过。 Flag为&#x…...

【YOLOv8/YOLOv7/YOLOv5系列算法改进NO.55】融入美团最新QARepVGG

文章目录 前言一、解决问题二、基本原理三、​添加方法四、总结前言 作为当前先进的深度学习目标检测算法YOLOv8,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法。此后的系列文章,将重点对YOLOv8的如何改进进行详细…...

Flutter Windows端打包并生成可安装文件流程

Windows打包 1.首先安装visual Studio 下载地址&#xff1a;https://visualstudio.microsoft.com/zh-hans/ 下载成功后按照下图勾选桌面应用和移动应用下的使用C的桌面开发&#xff0c;勾选右侧安装详细信息中的windows 11/10 sdk 中的任意一个完成安装即可 2.打包Windows …...

凸优化学习:PART3凸优化问题(持续更新)

凸优化问题 凸优化问题的广义定义&#xff1a; 目标函数为凸函数约束集合为凸集 一、优化问题 基本用语 一般优化问题的描述&#xff1a; minimize⁡f0(x)subject to fi(x)⩽0,i1,⋯,mhi(x)0,i1,⋯,p(1)\begin{array}{ll} \operatorname{minimize} & f_0(x) \\ \text { s…...

[ue4] 着色器绑定(Shader Binding)

当我们在ue4中制作了一个美术材质之后&#xff0c;引擎本身会为我们做很多事情&#xff0c;它会把结点翻译为hlsl&#xff0c;生成多个shader变体&#xff0c;并在多个mesh pass中去选择性的调用所需的shader&#xff0c;其中一个重要的过程就是获取shader绑定的数据。 本文将主…...

Rust语言之迭代器

文章目录Rust迭代器Rust迭代器的实现Iterator特型IntoIterator特型for循环与迭代器迭代器类型再看for循环实现自定义迭代器方式一方式二相关参考Rust迭代器 Rust语言内置了迭代器模式&#xff0c;用于实现对一个项的序列进行特定的处理&#xff0c;通常配合for循环使用。当我们…...

TreeSet 与 TreeMap And HashSet 与 HashMap

目录 Map TreeMap put()方法 : get()方法 : Set> entrySet() (重) : foreach遍历 : Set 哈希表 哈希冲突 : 冲突避免 : 冲突解决 ---- > 比散列(开放地址法) : 开散列 (链地址法 . 开链法) 简介 : 在Java中 , TreeSet 与 TreeMap 利用搜索树实现 Ma…...

Java围棋游戏的设计与实现

技术&#xff1a;Java等摘要&#xff1a;围棋作为一个棋类竞技运动&#xff0c;在民间十分流行&#xff0c;为了熟悉五子棋规则及技巧&#xff0c;以及研究简单的人工智能&#xff0c;决定用Java开发五子棋游戏。主要完成了人机对战和玩家之间联网对战2个功能。网络连接部分为S…...

第七十三章 使用 irisstat 实用程序监控 IRIS - 使用选项运行 irisstat

文章目录第七十三章 使用 irisstat 实用程序监控 IRIS - 使用选项运行 irisstat使用选项运行 irisstatirisstat Options第七十三章 使用 irisstat 实用程序监控 IRIS - 使用选项运行 irisstat 使用选项运行 irisstat 不带选项运行 irisstat 会生成基本报告。通常&#xff0c;…...

【博客619】PromQL如何实现Left joins以及不同metrics之间的复杂联合查询

PromQL如何实现Left joins以及不同metrics之间的复杂联合查询 1、场景 我们需要在PromQL中实现类似SQL中的连接查询&#xff1a; SELECT a.value*b.value, * FROM a, b2、不同metrics之间的复杂联合查询 瞬时向量与瞬时向量之间进行数学运算&#xff1a; 例如&#xff1a;根…...

Win11自定义电脑右下角时间显示格式

Win11自定义电脑右下角时间显示格式 一、进入附加设置菜单 1、进入控制面板&#xff0c;选择日期和时间 2、选择修改日期和时间 3、选择修改日历设置 4、选择附加设置 二、自定义时间显示出秒 1、在选项卡中&#xff0c;选时间选项卡 2、在Short time的输入框中输入H:m…...

TrueNas篇-trueNas Scale安装

安装TrueNAS Scale 在尝试trueNas core时发下可以成功安装&#xff0c;但是一直无法成功启动&#xff0c;而且国内对我遇见的错误几乎没有案例&#xff0c;所以舍弃掉了&#xff0c;而且trueNas core是基于Linux的&#xff0c;对Linux的生态好了很多&#xff0c;还可以可以在t…...

element表单搜索框与表格高度自适应

一般在后台管理系统中&#xff0c;表单搜索框和表格的搭配是非常常见的&#xff0c;如下所示&#xff1a; 在该图中&#xff0c;搜索框有五个&#xff0c;分为了两行排列。但根据大多数的UI标准&#xff0c;搜索框默认只显示一行&#xff0c;多余的需要进行隐藏。此时的页面被…...

MySQL使用技巧整理

title: MySQL使用技巧整理 date: 2021-04-11 00:00:00 tags: MySQL categories:数据库 重建索引 索引可能因为删除&#xff0c;或者页分裂等原因&#xff0c;导致数据页有空洞&#xff0c;重建索引的过程会创建一个新的索引&#xff0c;把数据按顺序插入&#xff0c;这样页面…...

七大设计原则之里氏替换原则应用

目录1 里氏替换原则2 里氏替换原则应用1 里氏替换原则 里氏替换原则&#xff08;Liskov Substitution Principle,LSP&#xff09;是指如果对每一个类型为 T1 的对象 o1,都有类型为 T2 的对象 o2,使得以 T1 定义的所有程序 P 在所有的对象 o1 都替换成 o2 时&#xff0c;程序 P…...

1行Python代码去除图片水印,网友:一干二净

大家好&#xff0c;这里是程序员晚枫。 最近小明在开淘宝店&#xff08;店名&#xff1a;爱吃火锅的少女&#xff09;&#xff0c;需要给自己的原创图片加水印&#xff0c;于是我上次给她开发了增加水印的功能&#xff1a;图片加水印&#xff0c;保护原创图片&#xff0c;一行…...

Connext DDS属性配置参考大全(2)

DDSSecure安全com.rti.servcom.rti.serv.load_plugin...

Sticky:重新定义Linux桌面数字便利贴的智能助手

Sticky&#xff1a;重新定义Linux桌面数字便利贴的智能助手 【免费下载链接】sticky A sticky notes app for the linux desktop 项目地址: https://gitcode.com/gh_mirrors/stic/sticky 你是否曾在紧张的编程调试中&#xff0c;突然想到一个关键算法优化方案&#xff0…...

FPGA调试实录:我的SPI Master模块为什么读不到数据?常见问题排查指南

FPGA调试实录&#xff1a;SPI Master模块数据读取失败的深度排查指南 当你的SPI Master模块在调试过程中突然"罢工"&#xff0c;示波器上的波形看似正常却始终无法读取数据时&#xff0c;那种挫败感每个硬件工程师都深有体会。本文将从实战角度出发&#xff0c;分享一…...

保姆级教程:用EEGLAB搞定脑电数据预处理,从导入到ICA去伪迹全流程避坑

零基础EEGLAB脑电预处理全流程&#xff1a;从数据导入到ICA去伪迹实战指南 当你第一次打开EEGLAB界面&#xff0c;面对密密麻麻的菜单选项和看似复杂的参数设置&#xff0c;是否感到无从下手&#xff1f;作为脑电研究的第一步&#xff0c;数据预处理的质量直接决定后续分析的可…...

如何3步解决网页数学公式复制到Word的世纪难题?

如何3步解决网页数学公式复制到Word的世纪难题&#xff1f; 【免费下载链接】LaTeX2Word-Equation Copy LaTeX Equations as Word Equations, a Chrome Extension 项目地址: https://gitcode.com/gh_mirrors/la/LaTeX2Word-Equation 你是否曾为了将维基百科、学术论文或…...

终极视频字幕提取指南:如何用本地OCR工具高效提取87种语言硬字幕

终极视频字幕提取指南&#xff1a;如何用本地OCR工具高效提取87种语言硬字幕 【免费下载链接】video-subtitle-extractor 视频硬字幕提取&#xff0c;生成srt文件。无需申请第三方API&#xff0c;本地实现文本识别。基于深度学习的视频字幕提取框架&#xff0c;包含字幕区域检测…...

C++ 算法实战:从鸡兔同笼到多元方程求解的编程思维演进

1. 从鸡兔同笼开始理解算法思维 记得第一次接触鸡兔同笼问题时&#xff0c;我正啃着铅笔头对着数学作业发愁。题目说笼子里有35个头和94只脚&#xff0c;问鸡和兔各有多少只。这个看似简单的应用题&#xff0c;后来竟成了我算法思维的启蒙老师。 用C解决这个问题时&#xff0c;…...

嵌入式系统功耗测量实战:从基础原理到精准优化

1. 功耗测量&#xff1a;从概念到实践的核心挑战 在电子设计领域&#xff0c;无论你面对的是指尖大小的可穿戴设备&#xff0c;还是驱动工厂产线的重型电机&#xff0c;功耗都是一个绕不开的核心议题。我们常说的“功耗”&#xff0c;本质上是一个系统在单位时间内消耗的能量。…...

告别语法冲突!用SLR分析法搞定编译原理中的移进/归约难题(附FOLLOW集实战)

告别语法冲突&#xff01;用SLR分析法搞定编译原理中的移进/归约难题&#xff08;附FOLLOW集实战&#xff09; 当你第一次尝试构建LR(0)分析表时&#xff0c;是否遇到过这样的报错&#xff1a;"状态I2存在移进/归约冲突"&#xff1f;这种既想移进又想归约的矛盾&…...

本地化部署AI做表格工具评测:数以轻舟Agent技术架构与落地实践

一、产品定位与核心架构数以轻舟Agent是一款面向Excel数据处理场景的垂直型AI智能体&#xff0c;由北京乾策数智科技有限公司开发&#xff0c;2025年12月推出首款产品&#xff0c;2026年5月正式上线本地化部署版本。产品核心定位并非通用AI助手&#xff0c;而是聚焦"AI做表…...

STM32CubeMX 实战指南:LL库外部中断配置与按键响应优化

1. STM32CubeMX与LL库外部中断入门 第一次接触STM32外部中断时&#xff0c;我被它的响应速度惊艳到了。相比轮询方式&#xff0c;中断能让CPU在按键按下瞬间立即响应&#xff0c;就像有个24小时待命的管家。STM32CubeMX这个图形化配置工具&#xff0c;把原本需要手动编写的底层…...