【THUPC 2024 初赛】 转化

我都能做出来,那就是大水题了。

思路

首先我们要确定最大可以变色的球的数量 \(tot\)。

有如下两个贪心步骤:

    1. 所有颜色使用分裂操作,并更新 \(a_i\)。

​ 此时的有 \(tot=\sum_{i=1}^n \min(a_i,b_i)\)(需要更新 \(a_i,b_i\))。

    1. 若 \(tot\) 大于 \(0\),给 \(b_i\) 和 \(c_i\) 不为 \(0\) 的点,分配一个球,执行完分裂 \(c_i\) 次后,更新 \(a_i,b_i\),更新 \(tot\)。

这两个贪心步骤可以保证 \(tot\) 最大。

对于 1 如果一个点有球,那么从别处变色球来分裂肯定不优;对于 2,不难发现,执行完后 \(tot\) 肯定不降。

对于每一个颜色 \(i\),如果此时 \(tot\) 大于 \(0\) 且 \(c_i\) 大于 \(0\),那么 \(ans_i=tot+a_i+c_i\)。

如果 \(tot\) 等于 \(0\),那么 \(ans_i=a_i\)。

对于全局最大值,在执行完上述操作中的 \(c_i\),选择大于 \(0\) 且最大的 \(tot\) 个,设这些 \(c_i\) 的和为 \(sum\)。

全局最大答案为:\(ans=\sum\limits_{i=1}^n a_i+sum+tot\)。

时间复杂度 \(O(n)\)。

CODE

#include<bits/stdc++.h>
using namespace std; const int maxn=5e5+5; #define int long long
#define ll long long struct node
{
int c,id;
}edge[maxn]; ll n,fs,ct;
ll a[maxn],b[maxn],c[maxn]; bool cmp(ll a,ll b){return a>b;} signed main()
{
scanf("%lld",&n);
for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
for(int i=1;i<=n;i++) scanf("%lld",&b[i]);
for(int i=1;i<=n;i++) scanf("%lld",&c[i]);
for(int i=1;i<=n;i++)
{
if(a[i]==0) continue;
a[i]+=c[i];
c[i]=0;
ll t=min(a[i],b[i]);
fs+=t;
b[i]-=t;
a[i]-=t;
}
for(int i=1;i<=n;i++)
{
if(b[i]&&c[i]&&fs)
{
fs--;
a[i]=1+c[i];
c[i]=0;
ll t=min(b[i],a[i]);
b[i]-=t;
a[i]-=t;
fs+=t;
}
} ll totans=0;
for(int i=1;i<=n;i++)
{
totans+=a[i];
ll t=fs+a[i];
if(t) t+=c[i];
printf("%lld ",t);
}
sort(c+1,c+n+1,cmp);
for(int i=1;i<=n;i++)
{
if(c[i]&&fs)
{
fs--;
totans+=1+c[i];
}
} printf("\n%lld",totans+fs);
}

赛时代码比较艹,所以读者自己写一次的好。

【THUPC 2024 初赛】 E 转化的更多相关文章

  1. 2016"百度之星" - 初赛(Astar Round2A)--HDU 5690 |数学转化+快速幂

    Sample Input 3 1 3 5 2 1 3 5 1 3 5 99 69   Sample Output Case #1: No Case #2: Yes Case #3: Yes Hint ...

  2. 2016百度之星 初赛2A ABEF

    只做了1001 1002 1005 1006.剩下2题可能以后补? http://acm.hdu.edu.cn/search.php?field=problem&key=2016%22%B0% ...

  3. 华南师大 2017 年 ACM 程序设计竞赛新生初赛题解

    题解 被你们虐了千百遍的题目和 OJ 也很累的,也想要休息,所以你们别想了,行行好放过它们,我们来看题解吧... A. 诡异的计数法 Description cgy 太喜欢质数了以至于他计数也需要用质 ...

  4. hdu 4533 线段树(问题转化+)

    威威猫系列故事——晒被子 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Tot ...

  5. NOIP2018提高组初赛知识点

     (传说,在神秘的初赛中,选手们经常互相爆零以示友好……) 历年真题:ti.luogu.com.cn 以下标题中打*的是我认为的重点内容 一.关于计算机 (一)计算机组成 硬件组成: 1. 控制器(C ...

  6. 百度之星2017初赛A-1005-今夕何夕

    今夕何夕 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  7. HDU 6122 今夕何夕 【数学公式】 (2017"百度之星"程序设计大赛 - 初赛(A))

    今夕何夕 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  8. thupc & cts & apio & thusc 游记 (北京17日游记)

    thupc & cts & apio & thusc 游记 (北京17日游记) Day 0 和隔壁校两人py了一下,六个人组了两队,(左哼哼)与(右哼哼),我和Camoufla ...

  9. 史上最全NOIP初赛知识点

    CSP-J/S 第一轮知识点选讲 \(NOIP\)(全国青少年信息学奥林匹克竞赛)于2019年取消.取而代之的是由\(CCF\)推出的非专业级软件能力认证,也就是现在的\(CSP-J/S\).作为一名 ...

  10. 初赛Part2

    初赛 时间复杂度 主定理(必考) \[ T(n) = aT(\frac{n}{b})+f(n) \] 其中,\(n\)为问题的规模,\(a\)为递推下子问题的数量,\(\frac{n}{b}\)为每个 ...

随机推荐

  1. Windows 10 美化 Mac OSX 实用教程

    我前几天给新电脑装上了Windows 10系统,想要美化一下,遇到了很多问题,就出了这篇博客,帮大家踩踩坑. 在开始之前,先提醒大家一句: 美化有风险,玩机需谨慎.为以防万一,请大家在进行任何操作前创 ...

  2. Java 实现线程的方式有几种方式?带有返回值的线程怎么实现?

    Java 实现线程的方式有几种方式?带有返回值的线程怎么实现? 在Java线程开发中,有几种方法开启线程?假如需要得到线程返回的信息怎么办?可以实现吗?凯哥将通过源码和大家一起分享下线程怎么将返回值带 ...

  3. el-form 自定义验证规则,手动触发某项验证

    1. ui <el-form ref="xXXForm" :rules="XXXFormRules" > <el-form-item labe ...

  4. android 访问域名接口报错

    1. 移动端访问https域名及接口,显示 java.net.UnknownHostException: Unable to resolve host "xxx" : No add ...

  5. 10 Python面向对象编程:类和对象以及和Java的对比

    本篇是 Python 系列教程第 10 篇,更多内容敬请访问我的 Python 合集 这里只介绍类和对象,self.属性.方法.访问控制.类继承.方法重写在后面的文章里介绍 在Python中,类和对象 ...

  6. VC 单文档FormView视图增加打印预览

    1修改my.rc文件二处 3 TEXTINCLUDE BEGIN "#define _AFX_NO_OLE_RESOURCES\r\n" "#define _AFX_NO ...

  7. electron-builder打包配置说明

    发现问题 通过vue建立的项目使用electron-builder打包(不会eletron打包vue项目的看这里)出exe后发现名字就直接是项目文件夹的名字,但此时想自定义汉字名称,通过尝试直接修改p ...

  8. springboot 前端访问服务器上的图片及附件

    一.需求 后端是springboot,附件上传到服务器上,前端访问服务器上的附件,如:显示图片.视频.文件等 二.解决方法 springboot 中进行资源映射,根据路径将磁盘上的文件映射为资源返回到 ...

  9. 【解题报告】P8478 「GLR-R3」清明

    P8478 「GLR-R3」清明 参考了出题人题解和 xcyyyyyy 大神的题解,强推前两篇. 拿到题完全没思路怎么办??? 人类智慧的巅峰,思维量的登峰造极. 换句话说就是非人题目,不过不得不说 ...

  10. 服务器文件打压缩包下载(java)

    public void download(HttpServletRequest request, HttpServletResponse response){ try { String downloa ...