首页 > 其他分享 >2024牛客暑期多校训练营10

2024牛客暑期多校训练营10

时间:2024-08-25 21:38:14浏览次数:11  
标签:10 int 多校 dfs pb 2024 ++ vt ans

A Surrender to My Will 签到题

B std::pair 模拟,建立二叉树即可

D Is it rated?

题目大意

有 \(n\) 场\(\textbf{按顺序}\)的比赛,第 \(i\) 场比赛有表现分 \(p_i\)。参加第 \(i\) 场比赛后你的分数 \(r\) 将变为 \(r\times(1-k)+k\times p_i\)。你可以选择最多 \(m\) 场比赛不参加。给定初始分数 \(r_0\) 和参数 \(k\)。问经过至少 \(n-m\) 场比赛后,分数最高是多少。

题解做法

根据数据范围 \(k\geq0.1\), 经过至多 200 场后之前的分数影响将在精度误差之内, 故只需要考虑最后 \(\min(m+200,n)\) 场比赛即可.

场上某大佬做法(可忽略 k 范围)

const int N = 1e6 + 5;
ll a[N];
db k, p[N];
#define vt vct<db>
vt dfs (int l, int r)
{
    if (l == r) rty {0, k * a[l]};
    int m = l + r >> 1;
    vt L = dfs (l, m);
    vt R = dfs (m + 1, r);
    int i = 0, j = 0;
    vt ans = {0};
    while (i + 1 < L.sz && j + 1 < R.sz)
    {
        if (L[i] * p[j + 1] + R[j + 1] > L[i + 1] * p[j] + R[j])
            j++, ans.pb (L[i] * p[j] + R[j]);
        else
            i++, ans.pb (L[i] * p[j] + R[j]);
    }
    while (i + 1 < L.sz ) i++, ans.pb (L[i] * p[j] + R[j]);
    while (j + 1 < R.sz ) j++, ans.pb (L[i] * p[j] + R[j]);
    rty ans;
}
void solve()
{
    cin >> n >> m >> k >> x;
    p[0] = 1;
    fo (i, 1, n) p[i] = p[i - 1] * (1 - k), cin >> a[i];
    vt rp = dfs (1, n);
    db ans = 0;
    fo (i, n - m, n)
    {
        ans = max (ans, x * p[i] + rp[i]);<details>
<summary>点击查看代码</summary>

```

```
</details>
//      print (x * p[i] + rp[i])
    }
    sp (12);
    ANS;
    rty;
}

用类似归并排序的方式来求区间内选择 \(1\sim len\) 场的最大得分.

分析: 在相同场次下, 不同的选取方式大小关系与初始分数无关. 基于原始 dp \(f_{i,j}\) 表示前 \(i\) 场, 选了 \(j\) 场参加的最大得分. 寻找性质快速合并.

下面来证明正确性:

F Collinear Exception

按顺序模拟,可以加入时暴力标记新增直线覆盖的点,经分析复杂度正确

标签:10,int,多校,dfs,pb,2024,++,vt,ans
From: https://www.cnblogs.com/xjtu-uuku/p/18379585

相关文章

  • 题解:SP3109 STRLCP - Longest Common Prefix
    三倍经验:UVA11996JewelMagicP4036[JSOI2008]火星人题意维护一个字符串\(S\),支持以下操作:\(Q\i\j\):输出\(\operatorname{LCP}(S[i\dotsl],S[j\dotsl])\)\(R\i\char\):用\(char\)替换\(S\)的第\(i\)个字符\(I\i\char\):在\(S\)的第\(i\)......
  • 【C++ Primer Plus习题】5.10
    问题:解答:#include<iostream>usingnamespacestd;intmain(){ intcount=0; cout<<"请输入星星的行数:"; cin>>count; for(inti=0;i<count;i++) { for(intj=0;j<count-i-1;j++) { cout<<&qu......
  • [20240824]利用gdb抽取kglnaobj内容.txt
    [20240824]利用gdb抽取kglnaobj内容.txt--//上午测试跟踪librarycachelocklibrarycachepin使用gdb,利用handleaddreess+0x1c8偏移可以取出kglnaobj内容.--//灵光一现,是否可以直接通过gdb抽取kglnaobj内容,新的gdb版本支持管道操作,在测试环境尝试一下.--//千万不要在生产系......
  • [20240824]跟踪library cache lock library cache pin使用gdb.txt
    [20240824]跟踪librarycachelocklibrarycachepin使用gdb.txt--//这几天一直想写一个gdb脚本实现这个功能,先开始自己尝试,遇到一些问题,冷静下来看了以前的学习笔记,网上查了相关链接,能找到--//的资源很少:--//https://nenadnoveljic.com/blog/tracing-library-cache-locks/......
  • 2024暑期牛客多校第10场 D Is it rated?
    题目大意有\(n\)场\(\textbf{按顺序}\)的比赛,第\(i\)场比赛有表现分\(p_i\)。参加第\(i\)场比赛后你的分数\(r\)将变为\(r\times(1-k)+k\timesp_i\)。你可以选择最多\(m\)场比赛不参加。给定初始分数\(r_0\)和参数\(k\)。问经过至少\(n-m\)场比赛后,分数最高是......
  • lvm 扩容 pvresize -v /dev/vdb lvextend -l +100%FREE /dev/vgdata/lvdata
    以root用户登录弹性云主机。执行fdisk-l命令,查看系统是否正确识别扩容后的磁盘。具体回显如图所示:扩容前/dev/vdb的容量是10GB,扩容后为20GB。执行pvdisplay命令,查看LVM的物理卷相关信息。具体回显如图所示:/dev/vdb的容量是10GB,说明物理卷容量未增加。执行pvresize-v 磁......
  • 2024.8.25总结
    这周打了一场模拟赛,学了dsuontree,线段树合并,点分治边分治&点分树,树套树,K-DTree,STL中的bitset,分块&莫队学了好多东西。模拟赛中犯了低级错误文件怎么能写错啊啊啊啊,于是唱歌自省。在模拟赛中也学到了东西:线段树可以维护最短路,折半搜索签到题没签出来,看起来数组开不下但实际要用......
  • 苍穹外卖项目DAY10
    苍穹外卖项目DAY101、SpringTask1.1、介绍SpringTask是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑定位:定时任务框架作用:定时自动执行某段Java代码只要是需要定时处理的场景都可以使用SpringTask1.2、cron表达式cron表示式其实就是一个......
  • Java基础课设,大作业,小游戏--------数字华容道[无偿提供源代码]100%可以运行
    成品游戏胜利1.准备图片0.png1.png2.png3.png4.png5.png6.png7.png8.png9.png10.png11.png12.png13.png......
  • 自适应seo高仿草民电影网源码 苹果cmsv10模板
    自适应seo高仿草民电影网源码 苹果cmsv10模板源码介绍自适应SEO高仿草民电影网源码是一款基于苹果CMSv10开发的模板,旨在为用户提供一个高度仿真的草民电影网站体验。该模板不仅在视觉设计上模仿了草民电影网的布局和风格,还特别优化了搜索引擎优化(SEO)功能,以提高网站在搜索引......