文章目录
- 内容概括
- 相关算法
- 模拟
- 01分数规划
- [牛客网暑期ACM多校训练营(第五场)](https://www.nowcoder.com/acm/contest/143) A
- 思维
- [牛客网暑期ACM多校训练营(第五场)](https://www.nowcoder.com/acm/contest/143) J
- 概率论 枚举 unsigned
- [牛客网暑期ACM多校训练营(第六场)](https://www.nowcoder.com/acm/contest/144)J
内容概括
涉及算法
模拟,01分数规划,思维
题数
3
相关算法
模拟
洛谷OJ P1538 迎春舞会之数字舞蹈
原题链接
题意: 打印数字图形(输入一串只包含0-9的字符串) 边长为k
思考过程及相关解法:并没有想到优秀的模拟方法,于是参考了题解的方法-_-
考虑到组成这些数字最多需要7条线 于是把十个数的七条线按位置存放起来,即代码中的预处理部分s[10],存放的是单位大小的数字的相对位置
如:3的图形
-
|
-
|
- (orz好丑
之后枚举七条边 在处理最右边的竖线时交由处理左边竖线时同时处理.所以在2和5时不作处理
横线位置刚好是3的倍数
剩余的枚举所有数进行填补
具体参考如下代码
参考代码:
#include
#include
01分数规划
牛客网暑期ACM多校训练营(第五场) A
原题链接
题意:一共n门课程,每门课程有一个成绩s[i]和学分c[i[,最终成绩为
要求去掉k门课程使得最终成绩最大.
思考过程及相关解法:当时最多想到了二分枚举答案,但不知道如何处理,学习了01分数规划后,发现将乘到右边,既然我们枚举的是答案,那么将答案看做自变量,
设 f® = $ \sum s[i]c[i] -r \sum s[i] $
这是一个斜率为负的直线 当f®为0时的r就是我们需要的答案,所以当f®>0时,仍需要更大的r,此时二分l =mid,f®<0,则r = mid,在check函数里选取可以使用的学科判断当前选取的r值是大是小.
01分数规划参考博客:http://www.knowsky.com/957231.html
参考代码:
#include
#include
思维
牛客网暑期ACM多校训练营(第五场) J
原题链接
题意:n个学生订房间,有双人间,三人间两种房间,价格分别是p2,p3,求订房间的最小花费
思考过程及题解:问题在于处理多出来的人,分别对于选二人间和1三人间多出来的一个人1进行判断,因为前一个房间的策略可以和剩余这个人重新按最优策略进行分配
参考代码:
#include
#include
概率论 枚举 unsigned
牛客网暑期ACM多校训练营(第六场)J
原题链接
题意:使用题中给的函数生成n个数,在这n个数里找两个数,要求这两个数的lcm最大.
思考过程及题解:首先要知道这个函数差不多相当于是个随机数生成函数,那么就是在n个随机数里找.
有这么一个结论:随机两个正整数互质的概率为 6 / π 2 6/\pi^2 6/π2 那么只要对前k大的数进行暴力即可,大约在17个数之间即可找到两个互质的,那么k取一个较小值就可以了
生成数据函数一定要用unsigned 而不能用unsigned long long ,否则会导致生成数据出错
参考代码:
#include
#include