[COCI 2025/2026 #2] Natjecanje 题解
Natjecanje
题解:随机化爬山“骗分”实战
前言
本题是 COCI 2025/2026 #2
的一道题目,考察了在网格图上的路径规划与匹配问题。虽然正解涉及复杂的带花树算法,但在特定数据范围内,随机化算法往往能取得意想不到的效果。
1. 题目简述
在一个 \(N \times M\)
的网格图中,有一个中转站 \(S\) 和 \(K\) 个包裹 \(X\)。 每次最多携带两个包裹,从 \(S\) 出发,将所有包裹送到指定位置并返回
\(S\)。 求最短的总时间。
数据范围:\(N, M \le
500\),\(K \le 67\)。
2. 思路分析
2.1 预处理距离
首先,这是一个网格图上的最短路问题。由于边权都是 1,我们可以使用 BFS
求出任意两点之间的最短距离。 我们需要求出:
\(S\) 到任意包裹 \(X_i\) 的距离,记为 \(dist(S, X_i)\)。
任意两个包裹 \(X_i, X_j\)
之间的距离,记为 \(dist(X_i,
X_j)\)。
这一步的时间复杂度是 \(O(K \cdot N \c...
一种高性能的正方形识别系统
一种高性能的正方形识别系统
前言
最近完成了一个计算机视觉算法,算是一个基于角点检测的正方形识别系统。这个算法从最初的想法到最终的实现,经历了很多有趣的技术挑战和优化过程。
首先简要概述一下问题,一个白色背景上有若干黑色大小不一,角度不同且可能重叠的正方形,保证每个正方形有两个可见的角,需要识别出所有的正方形。下面是一个例子:
1. 算法设计
1.1 图像预处理
首先,我们需要将输入图像转换成算法易于处理的格式。这里我用了OTSU二值化处理:
1234567891011121314151617181920def load_image_from_file(self, image_path: str, binarize: bool = True, threshold: int = 127): """ 为什么要二值化? 1. 简化计算:只需要区分黑白两种状态 2. 减少噪声:去除灰度变化带来的干扰 3. 提高速度:布尔运算比数值计算更快 """ loaded_imag...
如何在安卓新版Photo Picker中限定复数个MIMEtype
关于安卓的新Photo Picker
从 Android 13 开始,Android
系统内置了一个功能更为强大的图片选择器,可以让应用更加灵活地访问设备中的媒体资源,且无需拥有查看设备上所有媒体文件的权限。此外,虽然官方将其命名为图片选择器,但实际上也支持选择设备中的视频文件。
引用 Google 官方的描述:
照片选择器提供了一个可浏览、可搜索的界面,其中按日期从最近到最早的顺序向用户呈现其媒体库中的文件。此工具为用户提供了一种安全的内置图片和视频选择方式,让其无需向应用授予对整个媒体库的访问权限。
如果您允许系统配置照片选择器,则该工具适用于满足以下条件的设备(Android
Go 设备除外):
搭载 Android 11(API 级别 30)或更高版本
通过 Google 系统更新接收对模块化系统组件的更改
此外,如果您允许系统配置照片选择器,该工具会自动更新,并随着时间推移为应用的用户提供扩展的功能,而无需对代码进行任何更改。
如果你想了解更多,可以参考下面谷歌的官方文档,这里就不多做解释了。
照片选择器
| Android ...
Nginx如何配置子域名来指向服务端口
前言 为什么要做子域名配置
假设一个服务器上在不同端口各存在一个网络服务。例如:域名为
example.com,服务器上 localhost:2236
提供博客服务,localhost:2237提供其它的服务,等等。相较于输入不同的端口,我们可能更倾向于输入子域名来达到访问不同服务的目的。例如
blog.example.com 指向 localhost:2236; other.example.com 指向
localhost:2237。但域名的解析服务不支持直接对端口的解析。
一般来说,实际不同的网络服务会拆分到不同的服务器上,但是由于穷,我也只能用着腾讯云一年108块的廉价服务器搭自己的服务端,那么要怎么把不同的端口配置到我们解析的子域名上呢,了解到Nginx有proxy_pass的功能之后,可以用Nginx来解决这个问题。
配置步骤
1 添加子域名的解析服务
首先要在你的域名解析记录上添加子域名的解析,全部指向你的目标服务器,这里我用的是腾讯云的域名,解析记录设置参考如下图,其中记录值全部填写相同的服务器公网IP地址。
2 配置Nginx
这里我...
NJIT2022校程序竞赛题解
第一题
计算自然数 \(n\) 至自然数 \(m\) 之间(含 \(n\)、\(m\))所有整数中的各位数字是奇数的和。如输入
\(n\) 是 \(110\),\(m\) 是 \(118\),则结果为 \(1+1+1+1+1+1+1+1+1+3+1+1+1+1+5+1+1+1+1+7+1+1=34\)。
签到题,循环模拟即可。
12345678910111213141516171819202122232425262728293031public class p1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n, m; int ans = 0; n = sc.nextInt(); m = sc.nextInt(); sc.close(); p1 p = new p1(); for (int i = n; i ...
一种解决MIUI无法全局DAC的方案(需Root)
写在前面
这个方案需要Root权限,同时可能造成较大的安全性问题(后面会提到),如果对声音质量不是那么敏感或是担心会出现安全性问题的人,则不建议使用该方案。
方案
方案来自XDA开发者论坛:传送门
我在帖子里面看到了某些楼层提供了不错的解决方案,尝试后发现可行。
众所周知,MIUI没有原生安卓全局DAC的功能,对于某些内置DAC不太行的千元机(例如我的K30
5G),则会出现较为明显的音质失真和推力不足的情况。前段时间和同学讨论的时候都是用第三方带USB独占的播放器来解决的,如海贝,ViperHiFi等,弊端则非常明显,使用USB独占时其他软件无法通过USB声卡输出声音,导致其他软件包括系统应用无声或只能通过扬声器输出。
经过多方查询摸索,最终发现可能是SELinux安全模块导致了问题的发生,MIUI对系统做出的某些更改可能导致了全局DAC的相关功能违反了SELinux的安全策略,从而对操作进行了拦截。关于SELinux这里提供百度百科链接,可自行去了解:传送门
那么可能性的问题在这里,解决方案就比较容易去寻找了,按百度百科的说法:
SELINU...
初次见面
可能是我第一次写这么一个博客。
博客空空,Github也空空。
为什么想到要开一个博客呢,很怪……大概是看到别人都有一个博客,就感觉自己也得有一个。应该也有一种记录的感觉在里面吧,总感觉QQ空间是个过于随便的地方,啥都可以放进去,博客则是一个更像自己房间的地方,自然会重视一点观感性的东西。
有人跟我说,在知乎,b站写文章也很自由(虽然我觉得也不是那么自由啦),曝光率也高,你这搞个博客真的有人看吗?我觉得见仁见智吧,落得清静也好,毕竟我大多数时间都是一个自嗨的人。
以后会放点东西进来的……不过你们从我Github也能看出来,这大概率就是嘴上说说。
博客还没有建设完成,这段时间也挺忙的,慢慢来吧……
大概就这样。
如果你有幸看到这里的话,这就是结尾了。

![[COCI 2025/2026 #2] Natjecanje 题解](/img/natjecanje/header.jpg)





