集训第一天心得
集训第一天心得
一.收获
-
当要求出一下式子的结果时,时间效率较高的处理方法:
int a[maxn],ans; for(int i=1;i<=n;i++){ for(int e=i+1;e<=n;e++){ for(int j=e+1;j<=n;j++){ ans+=a[i]*a[e]*a[j]; } } }
时间效率
int a[maxn],ans; int tot,totway; for(int i=1;i<=n;i++){ ans+=totway*a[i]; totway+=tot*a[i]; tot+=a[i]; }
时间效率
原理解释:讲不清,自行体会
-
二分
-
给定个元素的数组和个元素的数组,拿每个除以得到一个商。问这个商中第大值是多少。输出位小数。
-
,且数组元素为到的整数。
思路:先对排序。二分一个商,分别求出对于每一个有多少个满足它。
优化:我们递增的枚举中元素,那么满足商要求的的个数只会越来越多,这样整体上最终对a也会递增的扫一遍。最终总的时间复 杂度
-
有个人到一家餐馆点菜。这家餐馆总共有道菜,每一道菜都有两个属性——美味度和价格。这n个人每周都会来一次,每次只会点一道菜或不点。在这个人中,有个人比较挑剔,他们只能接受美味度大于等于一定值的菜;有个人比较贫穷,他们只能点价格小于等于一定值的菜。
-
现在请你计算:这些人至少要来几周,才可能能把餐馆的所有的菜都点过一遍?
-
思路:二分时间()。先对菜用美味度降序排序,对挑剔的人降序排列可以发现每个挑剔的人能吃的菜都是排序之后数组的一段前缀,并且后一个挑剔的人能吃到的菜一定包含前一个人的。把菜按美味度从大到小扔到一个价格的大根堆里,一共扔次,每次扔的都是第挑剔的人可以取的,然后取出个(不足则全取),作为第挑剔的人吃的道菜。接下来再让穷的人尽量吃,看剩下的菜是否多余正常人的个数
-
-
三分
-
组数据,个选手参加比赛,比赛分为跑步和骑车两项,但总长固定。已知每位选手进行每种项目时的速度,求是否可以通过调整各项目长度使某指定选手获胜;如果可以获胜还需输出与第二名的耗时差最大值及此时各项目长度。
-
不妨设跑步长度为,易得(要赢的人)。
对于与其他人的时间差 显然这是一个一次函数。
但是我们要求的是第二名的耗时差最大值,即上面的一次函数取最小值中的最大值。
三分即可
-
在一个2维平面上有两条传送带,分别为线段AB和线段CD。小燚在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R。现在小燚想从A点走到D点,他想知道最少需要走多长时间。
思路:直接在 上三分,再在 上三分即可。
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效