【赛时·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环境搭建与配置、以及Tomcat搭建与配置

    首先配置Java jdk环境  列如:jdk1.8.0 : 1.首先windows+e打开文件管理系统,找到系统属性,点击“高级系统设置” ,再点击环境变量: 2.在系统变量里边新建:JAVA_HOM ...

  2. 注解实现AOP

    package com.dch.service.aop; import java.text.SimpleDateFormat; import java.util.Arrays; import java ...

  3. scss-@extend

    @extend指令用于共享规则和选择器之间的关系.它可以扩展所有其他类的样式在一个类中,也可应用于自己特定的样式. 查看如下scss@extend示例: .style{ font-size: 30px ...

  4. IMG标签与before,after伪类

    在CSS中总有一些你不用不知道,用到才知道的“坑”.比如今天要谈的,把 before, after 伪类用在 <img> 标签上.嗯,实际上你用你会发现,在大多数浏览器这是无效的,dom中 ...

  5. 关于Java中的线程安全(线程同步)

    java中的线程安全是什么: 就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问 什么叫 ...

  6. 02_Redis数据类型(String、Hash)

    [Redis数据类型] redis是通过key-Value来存储的,其支持的数据类型如下: 1.字符串 2.Hash 3.List 4.Set 5.SortSet(zset) 注:redis中,命令( ...

  7. Android性能优化之渲染篇

    下面是渲染篇章的学习笔记,部分内容和前面的性能优化典范有重合,欢迎大家一起学习交流! 1)Why Rendering Performance Matters 现在有不少App为了达到很华丽的视觉效果, ...

  8. Intent的简单使用

    主要实现Intent之间值得转递,如从AActivity到BActivity之间传一个数值,一个实体类,一个集合类 下面代码只要是实现对startActivityForResult的使用,用ABC 3 ...

  9. 爬虫入门之jsonPath PhantomJS与 selenium详解(六)

    1 jsonPath数据格式 pip安装: pip install jsonpath 用来解析json格式的字符串,类似于xpath (1) json对象的转换 json.loads() json.d ...

  10. x64 分页机制——虚拟地址到物理地址寻址

    原博客:http://www.cnblogs.com/lanrenxinxin/p/4735027.html 详细的理论讲解都在上面 下面说的是通过windbg手动进行寻址,深入理解 x64: 实践: ...