【THUPC 2024 初赛】 E 转化
【THUPC 2024 初赛】 转化
我都能做出来,那就是大水题了。
思路
首先我们要确定最大可以变色的球的数量 \(tot\)。
有如下两个贪心步骤:
- 所有颜色使用分裂操作,并更新 \(a_i\)。
此时的有 \(tot=\sum_{i=1}^n \min(a_i,b_i)\)(需要更新 \(a_i,b_i\))。
- 若 \(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 转化的更多相关文章
- 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 ...
- 2016百度之星 初赛2A ABEF
只做了1001 1002 1005 1006.剩下2题可能以后补? http://acm.hdu.edu.cn/search.php?field=problem&key=2016%22%B0% ...
- 华南师大 2017 年 ACM 程序设计竞赛新生初赛题解
题解 被你们虐了千百遍的题目和 OJ 也很累的,也想要休息,所以你们别想了,行行好放过它们,我们来看题解吧... A. 诡异的计数法 Description cgy 太喜欢质数了以至于他计数也需要用质 ...
- hdu 4533 线段树(问题转化+)
威威猫系列故事——晒被子 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Tot ...
- NOIP2018提高组初赛知识点
(传说,在神秘的初赛中,选手们经常互相爆零以示友好……) 历年真题:ti.luogu.com.cn 以下标题中打*的是我认为的重点内容 一.关于计算机 (一)计算机组成 硬件组成: 1. 控制器(C ...
- 百度之星2017初赛A-1005-今夕何夕
今夕何夕 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- HDU 6122 今夕何夕 【数学公式】 (2017"百度之星"程序设计大赛 - 初赛(A))
今夕何夕 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- thupc & cts & apio & thusc 游记 (北京17日游记)
thupc & cts & apio & thusc 游记 (北京17日游记) Day 0 和隔壁校两人py了一下,六个人组了两队,(左哼哼)与(右哼哼),我和Camoufla ...
- 史上最全NOIP初赛知识点
CSP-J/S 第一轮知识点选讲 \(NOIP\)(全国青少年信息学奥林匹克竞赛)于2019年取消.取而代之的是由\(CCF\)推出的非专业级软件能力认证,也就是现在的\(CSP-J/S\).作为一名 ...
- 初赛Part2
初赛 时间复杂度 主定理(必考) \[ T(n) = aT(\frac{n}{b})+f(n) \] 其中,\(n\)为问题的规模,\(a\)为递推下子问题的数量,\(\frac{n}{b}\)为每个 ...
随机推荐
- C#项目—彩票选号
C#彩票选号软件 今天做了一个彩票选号的小软件,将学到的知识点总结如下(新手小白,多提意见): 1.写程序的思路 实体类(属性.方法) No1. 随机数组集合(属性) No2. 创建集合对象(构造方法 ...
- Python 串口
ref: https://www.cnblogs.com/zhicungaoyuan-mingzhi/p/12303229.html
- Java 1.8 Stream流原理与用法总结
一.接口设计 从Java1.8开始提出了Stream流的概念,侧重对于源数据计算能力的封装,并且支持序列与并行两种操作方式:依旧先看核心接口的设计: BaseStream:基础接口,声明了流管理的核心 ...
- c程序设计语言 by K&R(二)指针与数组
指针与数组 1. c语言只有值传递,没有引用传递 可通过指针交换 #include <stdio.h> #include <stdlib.h> void swap(int* a ...
- EF Core – JSON Column
前言 SQL Server 支持 JSON, 以前写过一篇介绍 SQL Server – Work with JSON. 但 EF Core 一直没有支持. 直到 EF Core 7.0 才支持. 参 ...
- OData – OData vs GraphQL
GraphQL 很火, 很厉害, 但是它和 OData 有本质的区别. 所以并不是说任何一样对比另一个绝对的好. GraphQL is not OData twitter 的讨论 有几个点是我能 Ge ...
- Figma 学习笔记 – Constraints 约束
用途 Constraints 用于 responsive design, 子元素和父元素建立约束关系后, 当父元素 dimension 变换的时候, 子元素会做出相应的变化 (移动位置或 resize ...
- CSP提高组模拟1
我的微軟輸入法莫名其妙變成繁體了,你們有什麽頭緒嗎 狀態 題目 20 Time Exceeded A 最短路 25 Time Exceeded B 方格取数 0 Time Exceeded C 数组 ...
- HuggingChat macOS 版现已发布
Hugging Face 的开源聊天应用程序 Hugging Chat,现已推出适用于 macOS 的版本. 主要特点 Hugging Chat macOS 版本具有以下亮点: 强大的模型支持: 用户 ...
- 模板声明的两种形式:template<int N> 和 template<N>
template<int N>:非类型模板参数 template<int N> 是一个典型的非类型模板参数的例子.这里的 N 是模板的参数,但它不是一个类型,而是一个具体的整数 ...