洛谷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月普及组(月赛)
🌼小宇(治愈版) - 刘大拿 - 单曲 - 网易云音乐 OI赛制且难度对标蓝桥杯省赛(😥真难,第三题做了几百年,第四题只敢骗骗分) 花了10块钱🙃 买官网的思路,结果…...
【博学谷学习记录】超强总结,用心分享 | 架构师 Spring源码学习总结
文章目录Spring的循环依赖1.循环依赖的定义&&原因2.循环依赖的场景1.构造器注入引起循环依赖2.Field属性setter注入的循环依赖3.循环依赖解决思路4.三级缓存5.面试题[三级缓存]AOP源码深度剖析概述Spring AOP的前世今生实现机制**JDK 动态代理****CGLIB 代理**流程总结…...
Linux C/C++ timeout命令实现(运行具有时间限制)
Linux附带了大量命令,每个命令都是唯一的,并在特定情况下使用。Linux timeout命令的一个属性是时间限制。可以为任何命令设置时间限制。如果时间到期,命令将停止执行。 如何使用timeout命令 我们将解释如何使用Linux timeout命令 timeout […...
西湖论剑初赛web wp
Node Magical Login 简单的js代码审计。 Flag分成了两部分。 第一部分: 这里就简单的判断了一下user是否等于admin,直接绕过。 第二部分: checkcode ! “aGr5AtSp55dRacer”,让其为真,利用数组绕过。 Flag为&#x…...
【YOLOv8/YOLOv7/YOLOv5系列算法改进NO.55】融入美团最新QARepVGG
文章目录 前言一、解决问题二、基本原理三、添加方法四、总结前言 作为当前先进的深度学习目标检测算法YOLOv8,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法。此后的系列文章,将重点对YOLOv8的如何改进进行详细…...
Flutter Windows端打包并生成可安装文件流程
Windows打包 1.首先安装visual Studio 下载地址:https://visualstudio.microsoft.com/zh-hans/ 下载成功后按照下图勾选桌面应用和移动应用下的使用C的桌面开发,勾选右侧安装详细信息中的windows 11/10 sdk 中的任意一个完成安装即可 2.打包Windows …...
凸优化学习:PART3凸优化问题(持续更新)
凸优化问题 凸优化问题的广义定义: 目标函数为凸函数约束集合为凸集 一、优化问题 基本用语 一般优化问题的描述: minimizef0(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中制作了一个美术材质之后,引擎本身会为我们做很多事情,它会把结点翻译为hlsl,生成多个shader变体,并在多个mesh pass中去选择性的调用所需的shader,其中一个重要的过程就是获取shader绑定的数据。 本文将主…...
Rust语言之迭代器
文章目录Rust迭代器Rust迭代器的实现Iterator特型IntoIterator特型for循环与迭代器迭代器类型再看for循环实现自定义迭代器方式一方式二相关参考Rust迭代器 Rust语言内置了迭代器模式,用于实现对一个项的序列进行特定的处理,通常配合for循环使用。当我们…...
TreeSet 与 TreeMap And HashSet 与 HashMap
目录 Map TreeMap put()方法 : get()方法 : Set> entrySet() (重) : foreach遍历 : Set 哈希表 哈希冲突 : 冲突避免 : 冲突解决 ---- > 比散列(开放地址法) : 开散列 (链地址法 . 开链法) 简介 : 在Java中 , TreeSet 与 TreeMap 利用搜索树实现 Ma…...
Java围棋游戏的设计与实现
技术:Java等摘要:围棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java开发五子棋游戏。主要完成了人机对战和玩家之间联网对战2个功能。网络连接部分为S…...
第七十三章 使用 irisstat 实用程序监控 IRIS - 使用选项运行 irisstat
文章目录第七十三章 使用 irisstat 实用程序监控 IRIS - 使用选项运行 irisstat使用选项运行 irisstatirisstat Options第七十三章 使用 irisstat 实用程序监控 IRIS - 使用选项运行 irisstat 使用选项运行 irisstat 不带选项运行 irisstat 会生成基本报告。通常,…...
【博客619】PromQL如何实现Left joins以及不同metrics之间的复杂联合查询
PromQL如何实现Left joins以及不同metrics之间的复杂联合查询 1、场景 我们需要在PromQL中实现类似SQL中的连接查询: SELECT a.value*b.value, * FROM a, b2、不同metrics之间的复杂联合查询 瞬时向量与瞬时向量之间进行数学运算: 例如:根…...
Win11自定义电脑右下角时间显示格式
Win11自定义电脑右下角时间显示格式 一、进入附加设置菜单 1、进入控制面板,选择日期和时间 2、选择修改日期和时间 3、选择修改日历设置 4、选择附加设置 二、自定义时间显示出秒 1、在选项卡中,选时间选项卡 2、在Short time的输入框中输入H:m…...
TrueNas篇-trueNas Scale安装
安装TrueNAS Scale 在尝试trueNas core时发下可以成功安装,但是一直无法成功启动,而且国内对我遇见的错误几乎没有案例,所以舍弃掉了,而且trueNas core是基于Linux的,对Linux的生态好了很多,还可以可以在t…...
element表单搜索框与表格高度自适应
一般在后台管理系统中,表单搜索框和表格的搭配是非常常见的,如下所示: 在该图中,搜索框有五个,分为了两行排列。但根据大多数的UI标准,搜索框默认只显示一行,多余的需要进行隐藏。此时的页面被…...
MySQL使用技巧整理
title: MySQL使用技巧整理 date: 2021-04-11 00:00:00 tags: MySQL categories:数据库 重建索引 索引可能因为删除,或者页分裂等原因,导致数据页有空洞,重建索引的过程会创建一个新的索引,把数据按顺序插入,这样页面…...
七大设计原则之里氏替换原则应用
目录1 里氏替换原则2 里氏替换原则应用1 里氏替换原则 里氏替换原则(Liskov Substitution Principle,LSP)是指如果对每一个类型为 T1 的对象 o1,都有类型为 T2 的对象 o2,使得以 T1 定义的所有程序 P 在所有的对象 o1 都替换成 o2 时,程序 P…...
1行Python代码去除图片水印,网友:一干二净
大家好,这里是程序员晚枫。 最近小明在开淘宝店(店名:爱吃火锅的少女),需要给自己的原创图片加水印,于是我上次给她开发了增加水印的功能:图片加水印,保护原创图片,一行…...
Connext DDS属性配置参考大全(2)
DDSSecure安全com.rti.servcom.rti.serv.load_plugin...
一起Talk Android吧(第四百九十二回:精简版动画)
文章目录概念介绍使用方法示例代码经验总结各位看官们大家好,上一回中咱们说的例子是"动画集合:AnimatorSetBuilder",这一回中咱们说的例子是" 精简版动画"。闲话休提,言归正转,让我们一起Talk Android吧&…...
seata源码-全局事务回滚服务端源码
这篇博客来记录在发起全局事务回滚时,服务端接收到netty请求是如何处理的 1. 发起全局事务回滚请求 在前面的博客中,有说到过,事务发起者在发现分支事务执行异常之后,会提交全局事务回滚的请求到netty服务端,这里是发…...
【Vue3源码】第一章 effect和reactive
文章目录【Vue3源码】第一章 effect和reactive前言1、实现effect函数2、封装track函数(依赖收集)3、封装reactive函数4、封装trigger函数(依赖触发)5、单元测试【Vue3源码】第一章 effect和reactive 前言 今天就正式开始Vue3源码…...
C函数指针
函数指针是指向函数的指针变量。通常我们说的指针变量是指向一个整型、数组或字符型等变量,而函数指针是指向函数。函数指针可以像一般函数一样,用于调用函数、传递参数。函数指针变量的声明:typedef int (*fun_ptr)(int,int); // 声明一个指…...
2023同等学力申请硕士计算机综合国考
同等学力国考报名要开始了 2023年2月15日,中国教育考试网和“全国同等学力人员申请硕士学位管理工作信息平台”(https://tdxl.chsi.com.cn,联系服务电话:010-67410388)公布报名工作通知。考生须按照通知要求进行注册或…...
英语基础-并列句概述
什么是并列句?并列句就是用连词把独立的句子连接起来,使得句子之间产生并列的逻辑。 1. 并列句中的逻辑 1. 小明步行上学,小红骑自行车上班。 Ming goes to school on foot,and Hong goes to work by bike. 平行逻辑 2. 小红经常玩手机…...
大数据框架之Hadoop:HDFS(一)HDFS概述
1.1HDFS产出背景及定义 HDFS 产生背景 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件…...
20230210组会论文总结
目录 【Ultra-High-Definition Low-Light Image Enhancement: A Benchmark and Transformer-Based Method】 【ShuffleMixer: An Efficient ConvNet for Image Super-Resolution】 【A Close Look at Spatial Modeling: From Attention to Convolution 】 【DEA-Net: Single i…...
Python - 数据容器dict(字典)
目录 字典的定义 字典数据的获取 字典的嵌套 字典的各种操作 新增与更新元素 [Key] Value 删除元素 pop和del 清空字典 clear 获取全部的键 keys 遍历字典 容器通用功能总览 字典的定义 使用{},不过存储的元素是一个个的:键值对&#…...
傻白探索Chiplet,文献阅读笔记汇总(十二)
Summary(方便分类管理) Article(文献出处) 方便再次搜索 Data(文献数据) 总结归纳,方便理解 Comments(对文献的想法)/Why(为什么看这篇文献)强…...
营销型网站建设 课程/市场推广方式有哪几种
By Pnig0s1992 Mysql的编码问题很恶心 如果拿站的时候遇到Root权限还好说 遵守三编码一致原则就可以:连接编码数据库编码表编码 再详细点儿还可以字段编码 而大部分情况我们得到的帐号都是非Root 没有更改编码的权限 这时候如果目标的库和表的编码统一还好 直接更改…...
网站建设的硬件支持/北京seo收费
[飞鸟各投林] 为官的家业雕零,富贵的金银散尽。有恩的死里逃生,无情的分明报应。欠命的命已还,欠泪的泪已尽:冤冤相报自非轻,分离聚合皆前定。欲知命短问前生,老来富贵也真侥幸,看破的遁入空门…...
公司网站制作流程/提高百度搜索排名工具
修饰器:修饰器是一种特殊类型的声明,它只能够被附加到类的声明、方法、属性或参数上,可以修改类的行为。而不能用于函数(因为存在函数提升) 常见的修饰器有:类修饰器、属性修饰器、方法修饰器、参数修饰器 …...
做一个信息发布网站要多少钱/今日新闻头条内容
为什么80%的码农都做不了架构师?>>> 解决办法:在IntelliJ的偏好,plugins里搜到IntelliJ Vim并取消勾选,保存后重启即可 转载于:https://my.oschina.net/dccjll/blog/1543612...
我想花钱做网站/企业网站开发费用
巧妙转换Excel文件(转)广大中小学教师已经习惯了利用Excel来进行数据的输入和处理,但是我们经常碰到这种情况,上级主管部门为了进行统考,往往会用VF编写一套软件,要求下属学校统一上报成绩的格式,上报的文件需是DBF格式…...
wordpress 留言 插件/广州推广工具
1 题外话:缘起 2 开工ing 2.1Silverlight中的视频 2.2伪视频录像 3 展示 4 题外话二 我拍基地 我拍桌面:死循环。。。 题外话:缘起 前几天看到几个外国年轻人,搞了个利用kinect做的PC版本上的自然用户界面。。。很cool,当时没看明白&#x…...