首页 > 其他分享 >2023 百度之星决赛题解

2023 百度之星决赛题解

时间:2024-01-10 15:33:51浏览次数:25  
标签:le 个点 题解 2023 mid 枚举 深度 点数 之星

T4 传信游戏

建反向边,从入度为 \(0\) 的结点开始搜

T5 喵喵卫士,全靠你了\(\star\)

考虑暴力枚举每个点的深度,发现只要知道相邻两层的深度就能用组合数算方案数,自然想到按层 DP,把上一层的点数记到状态里

赛时做法

按深度从小到大 DP 的话想要记录每个点是否被用过,以保证深度达到上界时它已经被加入,这是无法接受的

在一个前缀上可用,考虑倒序做。设 \(f[i,j,k]\) 表示构造好了深度 \(\ge i\) 的部分,深度为 \(i\) 的有 \(j\) 个点,还剩下 \(k\) 个点可用,容易枚举当前深度的点数转移

时间复杂度 \(O(n^{4})\)

std

其实是可以正着做的。先将 \(A\) 排序,预处理 \(g[i]\) 表示要求深度 \(\le i\) 的点数

设 \(f[i,j,k]\) 表示构造好了深度 \(\le i\) 的部分,深度为 \(i\) 的有 \(j\) 个点,一共用了 \(k\) 个点。这里先令用过的点编号为 \(1\sim k\),之后再重新分配
枚举第 \(i+1\) 的点数 \(l\)。注意到已经有确定的 \(g[i]\) 个点深度 \(\le i\),所以只能把 \(k+l-g[i]\) 个编号分配到前 \(i\) 层和第 \(i+1\) 层

T7 这一击贯穿星辰

std

预处理 \(i\) 点体力能够达到的 \(A\times B\) 的最大值 \(f[i]\),\(100+C\) 的最大值 \(g[i]\)
可以证明 \(D\) 增大时分配给 \(100+C\) 的体力值是单增。决策单调性

凸包

分配 \(i\) 点体力给 \(A\times B\) 的答案为 \(f[i](g[m-i]-D)=-Df[i]+f[i]g[m-i]\)。凸包

T8 小度的双色球

从颜色和盒子两个角度考虑。精细实现可以做到时间 \(O(n\sqrt{n})\),空间 \(O(n)\),并避免使用哈希表

T9 寻宝

二分答案。考虑计算被偷走的价值 \(\le mid\) 最少需要多少名警员

如果 \(c[i]+d[i]>mid\),那么先放 \(a[i]\) 个,之后每个点只有两种可能:不放 或 放 \(a[i]\) 个/放 \(b[i]-a[i]\) 个。考虑最小割,用割与 \(S\) 或 \(T\) 的连边代表两种情况

  • 如果 \(d[i]>mid\):\((S,i,b[i]-a[i])\)
  • 如果 \(c[i]+d[i]\le mid\):\((i,T,a[i])\)
  • 如果原图中 \(i,j\) 相邻:\((i,j,+\infty)\)

标签:le,个点,题解,2023,mid,枚举,深度,点数,之星
From: https://www.cnblogs.com/ft61/p/17955539

相关文章

  • Helix QAC 2023.4 新版支持C++20语言,带来更多性能提升!
    HelixQAC2023.4新增功能HelixQAC2023.4全面支持MISRAC++:2023®规则,涵盖100%的指南。此版本还加强了对C++20语言的支持,改进了数据流分析性能,并在整个产品中增加了多项用户体验改进。增强的C++20支持此版本新增了对以下语言特性的支持:-模板参数列表和函数声明的require......
  • CAXA CAD电子图板2023:让设计更简单,工作更高效
    CAXACAD电子图板2023是一款功能强大的数字化绘图软件,专为工程师和设计师打造。作为CAXA软件公司旗下的核心产品,CAXACAD电子图板2023在继承了之前版本的优秀性能和功能的基础上,进一步提升了用户的工作效率和设计品质。点击获取CAXACAD电子图板2023首先,CAXACAD电子图板2023提......
  • P3203 弹飞绵羊 题解
    QuestionP3203[HNOI2010]弹飞绵羊一条直线上摆着\(n\)个弹簧,每个弹簧有一个弹力系数\(k_i\),当绵羊走到第\(i\)个弹簧时,会被弹到第\(i+k_i\)个弹簧,如果\(i+k_i>n\)则会被弹飞,有两个操作1x查询\(x\)处的绵羊经过几次会被弹飞2xy把\(x\)处的弹力系数改成......
  • P1307题解
    思路1.定义及输入原数/反转后的数intn,cnt=0;//反转后的数一定要归零!cin>>n;2.用while循环反转while(n!=0){//只要n还没有被分解完,就继续分解cnt=cnt*10+n%10;//cnt每次*10再加上分离出的数位(*10为了防0)n/=10;//n减一位}3.输出cout<<cnt;至此,这道题就做完......
  • P5722题解
    说两句哈,等差数列求和公式是\((A_1+A_n)\timesd\over2\),所以其实可以一行代码解决,但是我没高斯聪明,于是我不打算用等差数列求和公式。//(等差数列求和公式)intn;cin>>n;cout<<(1+n)*1/2;思路1.定义及输入截止的数/计数器intn,cnt=0;//计数器必须归零!cin>>n;2.循环......
  • P1085题解
    思路1.定义校内时间/校外时间/最大值(记录不高兴值)/记录星期intn,m,maxx=-1,tmp;2.使用循环输入并判断for(inti=1;i<=7;i++){//循环一周的日期cin>>n>>m;if(n+m>8&&maxx<n+m){//如果津津不高兴了且它比以往的值都大maxx=n+m;//更改最大值tmp=i;......
  • P5718题解
    思路1.定义及输入最小值的变量/输入个数/每个数intn,m,minn=1001;cin>>n;2.循环输入每个数并找最小值while(n--){cin>>m;minn=min(minn,m);}(用for循环也可以)for(inti=1;i<=n;i++){cin>>m;minn=min(minn,m);}3.输出cout<<minn;至此,这道题就做......
  • 复旦大学2023--2024学年第一学期高等代数I期末考试情况分析
    一、期末考试成绩班级前十名的同学褚乐一(91)、陈天乐(91)、文俊(90)、林加耀(90)、覃昊东(89)、高宇飞(88)、周家宏(85)、邓海斌(85)、陈康(85)、牛博彬(85)二、总评成绩计算方法平时成绩根据交作业的次数决定。本学期提交作业共13次,10次100分,少1次扣10分。总评成绩=平时成绩......
  • 堆算法题解
    输入一个长度为n的整数数列,从小到大输出前m小的数。输入格式第一行包含整数n和m。第二行包含n个整数,表示整数数列。输出格式共—行,包含m个整数,表示整数数列中前m小的数。数据范围1≤m≤n≤10^51≤数列中元素≤10输入样例:5345132输出样例:123代码:#include<iostream>......
  • 平台工程动态 Monthly News 2023-12
    TOC项目与社区动态CNOE:云原生卓越运营领英工程团队开源了其开发者生产力与幸福感框架Backstage添加中文README会议与活动PlatformCon2024议题正在征集中KubeConEU2023回顾KubeConNA回顾TOP100全球软件案例研究峰会优质好文推荐微软推出平台工程学习课程......