2024年云南大学迎新杯程序设计大赛の题解
前言
本场比赛出题周期里,由于在备赛冲击奖牌,就把这场第二届迎新杯的出题工作基本全交给校队未来的栋梁们了。整个出题过程中,几位学弟们认真负责的态度让我非常放心,事实证明也确实带来了一套不错的题👍从去年叱咤赛场的选手身份转变为尽职尽责的出题人,他们做得很棒!
这场出题人比去年还是很善良的(),赛前不断地在降难度。(而且原本Lihg给的两个疑似蓝题+紫题都被ban了
最难的应该算是天际线那道题,思维上有一定的门槛,但也不难想。我勉强算出了这一道题,目的就是想给赛有余力oier们强调一下STL的重要性。
应该说,善良的出题人这回是没有防AK的,其实都是可做题。
非要细分的话,我赛前预估大概4 3 2的梯度(4签到+3简单+2中等,octal的个人看法)
题号
预估难度
知识点
FirstBlood
A
1 ★
简单数学、容斥原理
ェメ
B
2 ★
二分、数学
clhdlg
C
2 ★
DP动态规划
Ovine
D
3 ★
贪心、优先队列
/
E
2 ★
贪心
ェメ
F
1 ★
思维题
翊,
G
1 ★
贪心、简单模拟
翊,
H
1 ★(签到题)
...
《数据库设计与开发》阅读笔记
$chp1 数据库在电子商务中的角色
本书的组织
第2章到第5章讨论数据库设计。
但是,在深入数据库设计之前,有必要了解数据库的开发环境和关系数据库设计的一些理论知识。
第2章介绍数据库环境,定义了一些重要的术语并概括论述了关系数据库理论。
我们可将数据库设计分为两大类,概念设计和逻辑设计。当进行概念设计时,您不必考虑前面提到的关系数据库的规则。
概念设计的实现是自由的,这意味着实现的精确意义是无关紧要的。
在概念设计期间您所要考虑的仅仅是数据库必须存储数据的实体,必须存储什么数据,以及实体之间是如何相互关联的。
第3章和第5章介绍的是概念设计。
第4章讨论的重要主题是规范化,它是用来确保数据库的设计符合关系规则。违背这些规则会导致数据的不一致。
介绍数据库实现和使用的章节是成对出现的,这是根据实现数据库设计所使用的数据库管理系统组织的。
第6章讨论如何用 Oracle创建数据库表。第6章还包括对 Oracle 表中数据的插入、删除和更新。
第7章描述如何用 Oracle版本的结构查询语言(structured querylanguage,SQL)从数据库中检索数 ...
数据库设计——系统边界图
系统边界的定义
系统边界,即系统包含的功能与系统不包含的功能之间的界限。一般在系统分析阶段定义,只有明确了系统边界,才能继续进行下面的分析、设计等工作。
不论这个系统是产品还是项目。所谓边界,也就是将这个系统看成一个黑盒子,和外界的交互。
“这,是一个黑色的立方体,长45厘米,宽23厘米,高3厘米,盒子的每个角都不尖锐,上方平坦,并有柔软质感;下方在四角之处都有凹进去的螺丝口,可以接杆子,以作凳子用。”
不清楚系统边界的后果:一是没有内外的概念,不知道需求描述的是什么;二是知道内外,然而对于边界的定义,没有足够的词语描述清楚,只能用对系统内部设计来代替。
系统边界的确定
先说说系统边界的确定。这是在工程开发中紧接着需求分析的第二步。
顾名思意,这个过程就是要确定我们要开发的系统和外部环境之间的界限,也就是要区分系统本身和它的外部环境。其中的外部环境可能包括用户,其它系统,软硬件条件等。
举个例子,一个银行系统,它的系统边界如何确定呢?
首先,银行系统的外部活动者有储户,前台出纳员,银行管理员,这些都不属于银行系统本身,他们是此系统的外部环境;
其次,银行系统是运行在操作系统上 ...
Git提交规范
commit message = subject + : + 空格 + message主体
常见的subject种类 如下:
feat:新功能(feature)
用于提交新功能
例如:feat: 增加用户管理模块
fix:修复bug
用于提交bug修复
例如:fix: 修复刷新出现空白页面问题
docs:文档变更
用于提交仅文档相关的修改
例如:docs: 更新README文件
style:代码风格变动(不影响代码逻辑)
用于提交仅格式化、标点符号、空白等不影响代码运行的变更
例如:style: 删除多余空行和console打印
refactor:代码重构(既不是新增功能也不是修复bug的代码更改)
用于提交代码重构
例如:refactor: 重构用户管理模块
perf:性能优化
用于提交提升性能的代码修改
例如:perf: 优化图片加载速度
test:添加或者修改测试
用于提交测试相关的内容
例如:test: 增加用户模块的测试单元
chore:杂项(构建过程或辅助工具的变动)
用于提交构建过程、辅助工具等 ...
解决:安装了VMware Tools,但无法实现文件的拖拽和复制粘贴
本文为新站建成后从旧博客搬运,原文地址:https://www.cnblogs.com/zhouzhihao/p/16486787.html
原文发表于2022-07-17 14:09
请注意时效性
环境:Windows11,VMware16Pro,Ubuntu20.04
我给虚拟机装好Ubuntu系统后,它默认是安装好vmtools的。
而且这些选项默认是勾选的,但是我无法实现宿主机和虚拟机之间文件的拖拽和复制粘贴。
如果你遇到了和我一样的问题,且网上很多博文提供的解决方案都无法解决你的问题,那么请往下看
我试了各路大神的解决方案,基本都行不通。
只有一篇标题和这个问题相关度不高的文章,提到了一种重装VMware tools的方法,我试了一下终于解决了问题。
这里要说一下,网上的很多文章用cd里带的VMware tools压缩包来重新安装(还要手动输yes的那个方法),我试了,根本没有用。
毕竟初始安装的就是那个版本,再重新安装一下并没有意义。
真正的解决方案其实很方便:
打开终端
1.卸载VMware Tools
1sudo apt-get autoremove open-v ...
使用lambda表达式实现sort的自定义排序
前言
首先大致讲一下什么是lambda表达式:
你也可以将它就当做是匿名函数,lambda表达式其实就是匿名函数演化出的一种语法系统。
举个栗子:
普通函数
12int function(int x, int y); //声明(定义)function(1, 2); //调用
匿名函数(lambda表达式)
12[](int x, int y){函数主体}; //声明(定义)[](int x, int y){函数主体}(1, 2); //调用
一个很明显的区别就是使用lambda表达式就省去了给函数命名的工作
而且对于一些简短的函数,直接用lambda表达式声明+调用能提高一点编码效率
就比如说,常用的自定义sort的比较函数。
关于lambda表达式如果想进一步了解:
使用Java的同学可以再读读廖老师这篇教程 -> 传送门
使用C++的同学可以读读这篇博客 -> 传送门
如果我们用普通函数的写法来重载运算符
那么是这样写
(想了解更多,可以读读我的这篇文章 -> 传送 ...
一些提升Linux终端舒适度的配置
本文为新站建成后从旧博客搬运,原文地址:https://www.cnblogs.com/zhouzhihao/p/17093067.html
原文发表于2023-02-07 15:49
请注意时效性
前言
虽然现在许多IDE和文本编辑器都已支持了远程连接服务器的功能
但不得不说,在一个bash小黑框里用vim+tmux写代码也是一个很有逼格的事情
但说实话,默认配置下的vim还是很伤眼睛的🙃
于是我就花了些时间对三大配置文件进行了改造
今天把它们分享出来(也防止我以后换服务器的过程中弄丢😅
(收集自互联网,部分配置借鉴了其他博主)
大家也可以根据注释自行修改
PS
为图个方便,tmux的所有Ctrl+B都换成了Ctrl+A;tmux启用了鼠标
为图个页面简洁,我把当前路径前的@主机名部分去掉了
vim行高亮的背景色换成了黑色,但可以根据行号处的高亮来确定当前所处行
vim开启了()/{}/[]/‘’/“”/``的补全
.vimrc
123456789101112131415161718192021222324252627282930313233343536373839 ...
解决:powershell无法使用ssh-copy-id命令
本文为新站建成后从旧博客搬运,原文地址:https://www.cnblogs.com/zhouzhihao/p/17087666.html
原文发表于2023-02-02 22:46
请注意时效性
如果你在配置服务器的免密登陆时出现了如下的error,那这篇文章一定会对你有帮助
(zzh是我配置的别名,如果没有配置过,后面跟的参数应该是用户名@ip地址的格式)
报错的原因呢,其实是Windows终端和Linux终端不同,没有内置ssh-copy-id命令
本文提供三种解决方案
正常情况下,用第一种就可以解决了,而且第一种方案也最方便
方案一 复制下面这段脚本,粘贴到Windows终端,按回车运行即可
123456789function ssh-copy-id([string]$userAtMachine, $args){ $publicKey = "$ENV:USERPROFILE" + "/.ssh/id_rsa.pub" if (!(Test-Path "$publicKey")) ...
mysql学习笔记
本篇摘录自黑马程序员的B站教学视频。
本笔记只记录到进阶篇(大部分),剩下的进阶篇以及运维篇由于本人职业生涯没有用武之地,所以没有进行学习。
黑马程序员黑马程序员 MySQL数据库入门到精通,从mysql安装到mysql高级、mysql优化全囊括
基础篇
通用语法及分类
DDL: 数据定义语言,用来定义数据库对象(数据库、表、字段)
DML: 数据操作语言,用来对数据库表中的数据进行增删改
DQL: 数据查询语言,用来查询数据库中表的记录
DCL: 数据控制语言,用来创建数据库用户、控制数据库的控制权限
DDL(数据定义语言)
数据定义语言
数据库操作
查询所有数据库:
SHOW DATABASES;
查询当前数据库:
SELECT DATABASE();
创建数据库:
CREATE DATABASE [ IF NOT EXISTS ] 数据库名 [ DEFAULT CHARSET 字符集] [COLLATE 排序规则 ];
删除数据库:
DROP DATABASE [ IF EXISTS ] 数据库名;
使用数据库:
USE 数据库名;
注意事项
UTF8字符集长度 ...
2023YNU迎新杯程序设计大赛の题解
A:Welcome to Yunnan!
【知识点】 数学、思维题
【idea】
假如 nnn 是 kkk 的倍数,直接每个碟子放1个即可;
否则,由于每个碟子至少放一个,我们先在每个碟子内放一个
然后找到比n大的第一个k的倍数,把相差的这么多个均分到 nnn 个碟子
1234567891011121314151617#include<bits/stdc++.h>using namespace std;typedef long long ll;int main(){ ll n, k; cin >> n >> k; if(n % k == 0) { cout << 1 << endl; } else { ll sum = (n + k - 1) / k * k; //找到比n大的第一个k的倍数 ll r = sum - n; cout << (r+n-1)/n + 1 << endl; ...