【赛时·8】AGC-027

日常AGC坑……还好能涨Rating

+传送门+


◇ 简单总结

感觉像打多校赛一样,应该多关注一下排名……考试的时候为了避免影响心态,管都没有管排名,就在那里死坑B题。最后还剩十几分钟的时候发现大家都把C题AC了,B题空了一大堆。后来事实也证明了C题比B题简单。


◇ 题目&解析

◆A题◆ Candy Distribution Again ❄模拟❄

·【题意】

老师要将x颗糖分给n个孩子(恰好分完)。当第i给孩子得到恰好a[i]颗糖时,他会感到快乐。问如何给孩子分糖使得快乐的孩子最多,输出最多有多少个孩子感到快乐。

·【解析】

尽量先把糖分给a[i]小的孩子,这样可以使得到恰好a[i]颗糖的人数尽量大。但是注意特判当每个人都分到a[i]颗糖后还剩有糖时,因为要把糖分完,则必定有一个人得到的糖多余a[i],要把答案-1。

·【源代码】

/*Lucky_Glass*/
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,tot;
int chi[105];
int main(){
scanf("%d%d",&n,&tot);
for(int i=0;i<n;i++)
scanf("%d",&chi[i]);
sort(chi,chi+n);
int ans=0;
for(int i=0;i<n;i++)
if(chi[i]<=tot){
ans++;
tot-=chi[i];
}
else{
tot=0;
break;
}
if(tot) ans--;
printf("%d\n",ans);
return 0;
}

  

◆B题◆ Garbage Collector ❄数学+模拟❄

 · 【题意】

数轴的正半轴上(>0,且垃圾位置相同)有n个垃圾,分别位于 x1,x2,...,xn 。有一个机器人在原点,每次可以移动一步。原点还有一个垃圾桶,机器人要把垃圾捡到垃圾桶里。机器人可以同时拿多个垃圾,当它拾起一个垃圾或者把它携带的所有垃圾丢到垃圾桶里时,需要消耗X点能量。且当机器人拿起k个垃圾时,每移动一个单位就需要消耗(1+k)2点能量。求出机器人把所有垃圾捡回垃圾桶所需要的最小能量。注意:机器人只能把垃圾丢进垃圾桶里,不能放在数轴的其他位置。

第一行输入n;第二行输入 n 个整数表示垃圾的位置,从左到右依次输入。

机器人把所有垃圾捡到垃圾桶里的最小花费。

· 【解析】

考试的时候就没有考虑过数学暴力展开平方项……看了题解恍然大悟QwQ

有几个结论很容易想到(但是我也不知道怎么证明):

每次捡的垃圾数量应该是一样的(除了最后一次可能捡得少一些);(某Tiw告诉我这个不需要证明(https://blog.csdn.net/Tiw_Air_Op1721)

最好取连续的一段垃圾,并且先到达离原点最远的垃圾,然后折返回来捡剩下的垃圾。

那么我们就可以先确定我们要从起点出发多少次来把垃圾捡完。那么我们每次就要捡(n/k)个垃圾然后返回原点,当然最后一次可能捡得少一点。

假设我们某一次从原点出发要捡的连续一段垃圾的位置为  pos[1~m],再算上原点的坐标pos[0]=0。则捡这些垃圾的花费为:

[1+(m+1)2]·(pos[1]-pos[0]) + [1+(m-1+1)2]·(pos[2]-pos[1]) + [1+(m-2+1)2]·(pos[3]-pos[2]) + .... + [1+(2+1)2]·(pos[n-1]-pos[n-2]) + [1+(1+1)2]·(pos[n]-pos[n-1])

那么上式中关于pos[i]的花费为:

cst[i] = [1+(m-i+1+1)2]·pos[i] - [1+(m-i-1+1+1)2]·pos[i] = pos[i]·[(m-i+2)- (m-i+1)2] = pos[i]·[(2m-2i+3)·1] = pos[i]·(2m-2i+3)

然后就可以得出一次的总花费为:fcst[i]=cst[1~m]

所以所有的花费为 now=fcst[1~n/k]

(只可意会不可言传)

· 【源代码】

/*Lucky_Glass*/
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=int(2e5);
int n;
ll X;
ll dst_sum[N+5];
int main(){
scanf("%d%lld",&n,&X);
for(int i=1,dst;i<=n;i++){
scanf("%d",&dst);
dst_sum[i]=dst_sum[i-1]+dst;
}
ll ans=ll(1e18);
for(int k=1;k<=n;k++){ //决定丢多少个垃圾
ll now=0,cof=1;
for(int i=n;i>=1;i-=k){
now+=(dst_sum[i]-dst_sum[max(i-k,0)])*max((cof+=2),5ll);
if(now>ans) break; //最优性剪枝
}
now+=(n+k)*X;
ans=min(ans,now);
}
printf("%lld\n",ans);
return 0;
}

  

◆C题◆ ABland Yard ❄二分图+环+DFS❄

非常有意思+1……我又写了一篇Blog

【赛事总结】◇赛时·8◇ AGC-027的更多相关文章

  1. agc 027 B - Garbage Collector

    B - Garbage Collector https://agc027.contest.atcoder.jp/tasks/agc027_b 题意: x坐标轴上n个垃圾,有一个机器人在从原点,要清扫垃 ...

  2. 【赛时总结】◇赛时·VI◇ Atcoder ABC-104

    ◇赛时·VI◇ ABC-104 ◆??? 莫名爆炸……ABC都AK不了 QwQ C题竟然沦落到卡数据的地步:D题没有思路,直接放弃 ⋋( ◕ ∧ ◕ )⋌ ◆ 题目&解析 ◇A题◇ Rated ...

  3. .NET足球赛事资料数据库平台SmartLottery开源发布——全球足球联赛应有尽有

            本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源C#彩票数据资料库系列文章总目录:[目录]C#搭建足球赛事资料库与预测平台与彩票数据分析目录 前2个月,我的系列文 ...

  4. 18TH赛事管理

    赛事管理者 项目psp: 一.计划 估计这个任务需要7天时间 二.开发 1.需求分析 作为一个赛事管理者,我希望知道每场比赛的队伍得分和积分情况,以便给每队进行排名. 2.生成设计文档 查询出每场得分 ...

  5. 【目录】C#搭建足球赛事资料库与预测平台与彩票数据分析目录

    本博客所有文章分类的总目录链接:本博客博文总目录-实时更新 1.彩票数据分析与预测 6.智彩足球技术研究团队成员介绍 5.关于组建“智彩足球技术研究团队”的说明 4.为什么选择玩足球彩票以及玩彩票的心 ...

  6. 【原创】C#搭建足球赛事资料库与预测平台(6) 赔率数据表设计2

            本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源C#彩票数据资料库系列文章总目录:[目录]C#搭建足球赛事资料库与预测平台与彩票数据分析目录 本篇文章开始将逐步介 ...

  7. C#搭建足球赛事资料库与预测平台(1) 基本介绍

            本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源C#彩票数据资料库系列文章总目录:[目录]C#搭建足球赛事资料库与预测平台与彩票数据分析目录 去年4月到现在,一年 ...

  8. 【原创】C#搭建足球赛事资料库与预测平台(2) 数据库与XCode组件

            本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源C#彩票数据资料库系列文章总目录:[目录]C#搭建足球赛事资料库与预测平台与彩票数据分析目录  本篇文章开始将逐步 ...

  9. 【原创】C#搭建足球赛事资料库与预测平台(3) 基础数据表设计

            本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html 开源C#彩票数据资料库系列文章总目录:http://www.cn ...

随机推荐

  1. 【代码笔记】Java Web初入:XML的进一步深入了解

    2015-12-25 文件名    guojia.xml <?xml version="1.0" encoding="GB2312"?> <! ...

  2. qt 创建线程

    http://www.cnblogs.com/xinxue/p/6840315.html Qt 之 QtConcurrent 本文以 Qt 中的 QtConcurrent::run() 函数为例,介绍 ...

  3. raid管理

    raid管理 使用工具命令 storcli64 查看磁盘状态 storcli64 /c0 show 注:现在磁盘状态为UGood状态,表示可以直接制作raid 若磁盘状态为JBOD,则制作raid时会 ...

  4. java面试题----工厂模式大整理(面试问的较多)

    在一次面试中了解到工厂模式在实际应用中的重要性,可以说工厂模式的应用随处可见,以下是百度百科对工厂模式的介绍 工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式.著名的Jiv ...

  5. sudo cat > EOF权限问题

    sudo bash -c 'cat << EOF > /etc/yum.repos.d/some-name.repo line1 line2 line3 EOF'

  6. 初涉京东及淘宝开放平台API-商品模型

    ============ 京东 ============ [Product]http://help.jd.com/jos/question-568.html#A2ware_id(相当于SPU?)sku ...

  7. Win10提示“您未连接到nvidia gpu的显示器”的解决方法

    显卡有Nvidia 和 ATI两个芯片,我们经常称他们为N卡和A卡,N卡更加注重于性能,而A卡则为颜色艳丽,画面更好.不过,最近一些windows10系统用户在使用N卡过程中,遇到了提示“您当前未使用 ...

  8. SQA1

    客观地验证软件项目产品和工作是否遵循恰当的标准.步骤和需求. 2.将软件质量保证工作及结果通知给相关组别和个人.

  9. IOS CoreData的(增删查改)

    (1).CoreDataa>什么是CoreDatab>CoreData增删改查 "什么时候使用COredata 什么时候使用FMDatabases"CoreData 在 ...

  10. SiteMesh配置下载使用(简单介绍)

    简单介绍 SiteMesh 是一个网页布局和修饰的框架,利用它可以将网页的内容和页面结构分离,以达到页面结构共享的目的. Sitemesh是由一个基于Web页面布局.装饰以及与现存Web应用整合的框架 ...