文章目录

  • 题意
  • 题解

题目链接
我又掉了.
CF上少见的优秀贪心题,有必要拿出来讲一下.

题意

n个数切成k份,求切出数的平方和的最小值.

题解

首先证明当对一个数字切的份数越多,因切分而减少的平方和就越小.证明显然.
接下来开始贪心.我们发现可以O(1)O(1)O(1)计算一个数切成kkk份平方和的最小值,那么我们每次选择切成k+1k+1k+1份后减少最多的数即可.
存储三元组a,b,c{a,b,c}a,b,c表示给出的数字,切出的份数,多切一次可以减少的平方和,重载运算符,用堆进行维护即可.

struct node{ll a,b,c;bool operator <(const node &x) const{return a<x.a;} // a表示减少量.
};
priority_queue<node> q;
ll gv(ll a,ll b) { // 计算a被切b次平方和的最小值ll u=a/b,v=a-u*b;return (b-v)*u*u+v*(u+1)*(u+1);
}
int main() {int n,k,i;ll lxy=0,t;read(n),read(k);for (i=1;i<=n;++i) {t=read(),lxy+=t*t;q.push({gv(t,1)-gv(t,2),t,2});}for (i=1;i<=k-n;++i) {lxy-=q.top().a;ll b=q.top().b,c=q.top().c;q.pop();q.push({gv(b,c)-gv(b,c+1),b,c+1}); // 给b多切一次.}printf("%lld\n",lxy);
}

谢谢大家.

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

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

  3. Codeforces - 1428E. Carrots for Rabbits

    题目链接 题解: 考虑将一个胡萝卜分成K段,那么这个胡萝卜肯定是尽可能的均分才能贡献最小 因为一个胡萝卜切的次数越多,x / cnt下降的越少,因此胡萝卜切的次数越多,它的平方和减少的越少 那么可以用 ...

  4. CF1428 E. Carrots for Rabbits 贪心+优先队列

    n个数切成k份,求切出数的平方和的最小值. 有个比较显然的结论: 对于一个数x,把它分成y份,求平方和sm,使得sm最小的分法一定是均分. 而把一个数分成y份,平方和与分成y-1份的平方和减量设为Cy ...

  5. (贪心)CF1428E. Carrots for Rabbits

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

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

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

  7. codeforces Gym 100338E Numbers (贪心,实现)

    题目:http://codeforces.com/gym/100338/attachments 贪心,每次枚举10的i次幂,除k后取余数r在用k-r补在10的幂上作为候选答案. #include< ...

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

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

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

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

最新文章

  1. python gui 可视化开发工具_用c语言输出九九乘法口诀表
  2. template模板的使用方法
  3. 百度面试题:求数组最大值
  4. 部署DNS服务和管理DNS
  5. 【安全漏洞】挖洞小记
  6. 64位服务器IIS不能识别32位framework版本。IIS没有Asp.net切换界面的解决办法。
  7. python 包管理和virturlenv
  8. Buck降压电路仿真与解析
  9. wenstorm设置谷歌_WebStorm+Chrome调试Vue步骤
  10. ffmpeg中文开发手册_快速调用复杂命令,支持中文注释,命令行备忘工具navi两天就火了...
  11. 厦门信息计算机专业录取分数,厦门大学计算机类(含计算机科学与技术、智能科学与技术、网络专业2016年在福建理科高考录取最低分数线...
  12. 解决无法连接到visual studio开发服务器的问题
  13. JavaScript知识点之“事件机制”
  14. Head First Java ——我的Java入门书
  15. 简单易用的国产GIS工具软件
  16. 使用iptables+脚本实现只允许中国IP访问服务器
  17. 如何搭建自己的网站别人可以直接访问
  18. 桌面虚拟化中VDI和IDV的五大区别
  19. H.264——H.264的基本介绍
  20. Java实现背包问题之01背包(是否装满),完全背包

热门文章

  1. ai背景合成_ai全自动视频剪辑软件,每天批量制作800条原创视频
  2. Python基于tkinter的GUI编程讲座
  3. mapreduce 模板代码
  4. Blender赛道建模+Gazebo赛道仿真
  5. tidb-cdc日志tables are not eligible to replicate
  6. 操作系统课程课程笔记
  7. android poi webview,java-Android(4.4)WebView第二次加载时不显示ifra...
  8. 对vector<int> 的数组使用sort排序出错
  9. 面对日益激烈的互联网各类电商的竞争,你是如何看待电商之间的价格战的呢?
  10. Android实现ListView的A-Z字母排序和过滤搜索功能