CF792E Colored Balls
2024-09-04 18:02:02
题目大意:将n个数分解成若干组,如4 = 2+2, 7 = 2+2+3,保证所有组中数字之差<=1。
首先我们能想到找一个最小值x,然后从x+1到1枚举并check,找到了就输出。这是40分做法。
能不能优化?我们发现,若k合法,那么x%k==0或x%(k+1)==0或x%(k-1)==0。
所以枚举倍数就行了,利用贪心找到了就输出。
代码:
#include<cstdio>
#include<algorithm>
using namespace std;
#define ll long long
int n;
ll a[],mn=0x3f3f3f3f;
bool cmp(ll x,ll y)
{
return x<y;
}
void check(ll k)
{
if(!k)return ;
ll ret = ;
for(int i=;i<=n;i++)
{
if(a[i]<k-)return ;
int cnt = a[i]/k+(a[i]%k!=);
if(a[i]%k==)
{
ret+=cnt;
continue;
}
if(k*cnt-a[i]>cnt)return ;
ret+=cnt;
}
printf("%I64d\n",ret);
exit();
return ;
}
int main()
{
// freopen("C.in","r",stdin);
// freopen("C.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%I64d",&a[i]);
mn=min(mn,a[i]);
}
for(int i=;i<=mn;i++)
{
check(mn/i+);
check(mn/i);
check(mn/i-);
}
fclose(stdin);
fclose(stdout);
return ;
}
最新文章
- 在浏览器的背后(二) —— HTML语言的语法解析
- oracle 备份数据库对象(存储过程PROCEDURE,FUNCTION,VIEW,TRIGGER...)
- winform中textbox属性Multiline=true时全选
- QTableView 添加进度条
- [转]AS3的垃圾回收
- CentOS系统识别NTFS分区的移动硬盘
- http status 汇总
- resumable.js —— 基于 HTML 5 File API 的文件上传组件 支持续传后台c#实现
- 使用JMeter的HTTP代理服务器录制app脚本
- 《Effective C++》模板与泛型编程:条款32-条款40
- Java注解之 @Target、@Retention简介
- Python读取文件内容与存储
- SpringMVC Controller之间的重定向和转发
- Leetcode——66.加一
- MyBatis基础入门《二》Select查询
- scala VS python2 (linux or shell)
- 利用HBuilder打包前端开发webapp为apk
- WindowsPhone 8.1 语音命令资料
- vim 取消高亮
- C/C++中创建(带头结点、不带头结点的)单链表