题目链接
题解:

考虑将一个胡萝卜分成K段,那么这个胡萝卜肯定是尽可能的均分才能贡献最小

因为一个胡萝卜切的次数越多,x / cnt下降的越少,因此胡萝卜切的次数越多,它的平方和减少的越少

那么可以用优先队列维护平方和下降的值,每次减去贡献平方和减少最多的胡萝卜即可

代码:
/** @Author : Nightmare*/
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ull unsigned long long
#define PII pair<int,int>
#define ls 2 * rt
#define rs 2 * rt + 1
#define gcd(a,b) __gcd(a,b)
#define eps 1e-6
#define lowbit(x) (x&(-x))
#define N 100005
#define M 100005
#define mod 1000000007
#define inf 0x3f3f3f3f
struct node{int a, b, c;friend bool operator < (node x, node y){ return x.a < y.a; }
};
priority_queue<node> que;
int cut(int a, int x){int m = a / x, t = a % x;return t * (m + 1) * (m + 1) + (x - t) * m * m;
}
void solve(){int n, k, ans = 0; cin >> n >> k;for(int i = 1, x; i <= n ; i ++) cin >> x, ans += x * x, que.push({cut(x, 1) - cut(x, 2), x, 2});for(int i = n ; i < k ; i ++){int a = que.top().a, b = que.top().b, c = que.top().c; que.pop();ans -= a;que.push({cut(b, c) - cut(b, c + 1), b, c + 1});}cout << ans << '\n';
}
signed main(){#ifndef ONLINE_JUDGEfreopen("D:\\in.txt", "r", stdin);
#endifsolve();
#ifndef ONLINE_JUDGEcerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endifreturn 0;
}

Codeforces - 1428E. Carrots for Rabbits相关推荐

  1. codeforces 1428E. Carrots for Rabbits(贪心(非常优秀的贪心题),结构体重载运算符)

    题目链接:https://codeforces.ml/contest/1428/problem/E 题意:给定n个数,要求将这些数拆分为k个数,是这些数的平方和最小. 题解:结构体,一开始想到的是每次 ...

  2. Codeforces 1428E Carrots for Rabbits 贪心

    文章目录 题意 题解 题目链接 我又掉了. CF上少见的优秀贪心题,有必要拿出来讲一下. 题意 n个数切成k份,求切出数的平方和的最小值. 题解 首先证明当对一个数字切的份数越多,因切分而减少的平方和 ...

  3. Codeforces 1428E Carrots for Rabbits

    今天这题是一个非常不错的思维题,贪心专业户的我表示非常满足. 题目链接:题目 题意:将n个数字拆分成k个,比如5可以拆分为(1+1+2)变成3个.拆完之后求拆出来的所有数字的平方和最小为多少 思路:首 ...

  4. 【做题记录】CF1428E Carrots for Rabbits—堆的妙用

    CF1428E Carrots for Rabbits 题意: 有 \(n\) 个萝卜,每个萝卜的初始大小为 \(a_i\) .现在要把这些萝卜切为为 \(k\) 个.吃每一个萝卜的时间为这个萝卜的大 ...

  5. (贪心)CF1428E. Carrots for Rabbits

    CF1428E. Carrots for Rabbits 题意: 给你nnn个正整数,分成kkk个正整数,要求分好之后∑i=1kai2\sum\limits_{i=1}^{k}{a_i}^{2}i=1 ...

  6. Codeforces Raif Round 1 (Div. 1 + Div. 2) E. Carrots for Rabbits(贪心)

    传送门 题目大意 给出nnn个萝卜,现在需要分成长度为正整数的若干个萝卜,定义每个长度为xxx的胡萝卜贡献为x2x^2x2,问最小的贡献是多少. 解题思路 手玩一下样例,还是不难得出对于一个胡萝卜若需 ...

  7. acm-(贪心)Codeforces Raif Round 1 (Div. 1 + Div. 2) E. Carrots for Rabbits

    传送门 本题的贪心十分巧妙,我们考虑将所有数字的划分状态表示为(x,cur,v)(x,cur,v)(x,cur,v)的形式,xxx代表数字值,curcurcur为当前xxx被分成的份数,vvv代表从c ...

  8. Codeforces Raif Round 1 (Div. 1 + Div. 2) E. Carrots for Rabbits(优先队列+贪心)

    原题链接 题意 有N个萝卜,K只兔子,要求把N个萝卜分成K份,一个兔子吃一个长为X的萝卜的时间为X*X,求怎么分能使最后的时间最短. 思路 刚看到这个题的时候,刚开始的思路是,把所有的萝卜都存在一个大 ...

  9. codeforces(E. Carrots for Rabbits)贪心

    题目链接 给你n个数,每个数再被切分若干份(整数),比如5可以切分为2.3或2.2.1等 通过切割将n个数变成k个数,使这k个数的平方和最小. 一开始是想将所有数放在一个优先队列里,每次取出最大的一分 ...

最新文章

  1. ssd2828测试进入测试模式_LOL卡牌推出“远征”轮抽模式 本周再度开启线上测试...
  2. 前端教程分享:十行代码实现title滚动显示
  3. java source folder作用_java项目把源码放到folder里,不是source folder,这个java代码还能被调用吗?...
  4. python eureka服务发现_Spring Cloud版——电影售票系统—Eureka微服务注册与发现
  5. python文件合法模式组合_以下选项中,不是Python文件二进制打开模式的合法组合是...
  6. sphinx服务器安装及配置详解
  7. Layui数据表格动态cols(字段)动态变化(2)
  8. linux中定义用户账户的文件为,Linux中用户和组中认证库和解析库的文件格式以及默认参数定义文件...
  9. java B2B2C Springcloud电子商城系统- Gateway初体验
  10. 工作室多拨宽带如何优化?
  11. 解决gateway转发websocket出现Max frame length of 65536 has been exceeded
  12. GWA2吉娃兔升級基於事件驅動的緩存處理模塊
  13. 英语阅读小程序云开发项目
  14. javacv 视频转换
  15. 吴恩达对话刘慈欣 预言AI未来20年
  16. 2021-09-30-THZ-前置
  17. 淘宝天猫乐高的销售情况
  18. 大学里不该做的十件事
  19. Window 下载安装 Kafka
  20. 安卓pdf阅读器_BOOX阅读器:不仅阅读效果逆天,PDF阅读和手写体验更出色!

热门文章

  1. sys 系统库 笔记(一)—— 简介与快速入门
  2. FISCO-BCOS应用实战:区块链实战应用开发分享
  3. JavaWeb篇之一——使用原生JDBC对数据库进行操作
  4. [教程]通过注册表关闭win10 xbox dvr 游戏录像
  5. Python玩耍:一个小小的爬虫,在一堆公司列表里筛选出总部位于中国的公司
  6. 2017年即将过半 免费OA系统行业OA厂商大转变
  7. 计通网实验的准备工作(C语言实现)
  8. Android开发工具类集合
  9. CF终于上紫了。。。
  10. 英文论文写作常用词汇及句型