【赛时·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. ACM-线段树

    http://blog.csdn.net/libin56842/article/details/8530197 基础可以看上面这篇文章 风格: maxn是题目给的最大区间,而节点数要开4倍,确切的说… ...

  2. H5新特性-----WebSocket

    WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议. WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据.在 W ...

  3. Bootstrap导航栏navbar源码分析

    1.本文目地:分析bootstrap导航栏及其响应式的实现方式,提升自身css水平 先贴一个bootstrap的导航栏模板 http://v3.bootcss.com/examples/navbar- ...

  4. textarea高度随着内容的多少而变化,高度可以删减

    问题:可以多行输入,并且输入框的高度随着内容的多少而变化,输入框的高度不能只增不减 由于 input 只能单行输入 textarea可以多行输入,并且高度可以随着内容的增加而增加,但是当内容删减的时候 ...

  5. iDempiere 使用指南 测试 及 开发 虚拟机下载

    Created by 蓝色布鲁斯,QQ32876341,blog http://www.cnblogs.com/zzyan/ iDempiere官方中文wiki主页 http://wiki.idemp ...

  6. t d x 示例z

    using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServi ...

  7. Struts2学习-横切关注点

    1.建空项目 2.建包 3.建类 4.编写 package com.nf.action; import com.opensymphony.xwork2.ActionInvocation; import ...

  8. Linux --Apache服务搭建

    Apache网站服务 1.基本配置 安装 [root@localhost /]# rpm -e httpd --nodeps --卸载rpm方式安装的httpd [root@localhost qwe ...

  9. May 29th 2017 Week 22nd Monday

    I figure life is a gift and I don't intend on wasting it. 我觉得生命是一份礼物,我不想浪费它. It seems that I didn't ...

  10. libxml2库函数详解

    许多事物符合80/20法则,libxml中也是20%的函数提供了80%的功能.下面的列表列出了libxml的主要函数及其用法说明. 1.   全局函数说明 头文件引用 xml2config --cfl ...