【AtCoder010】B - Boxes(差分)
AtCoder Grand Contest 010 B题
题目链接
题意
n个盒子,第i个盒子有ai个石头。
重复这个步骤:选一个盒子i,每次从第i+j个盒子中移走j个石头,j从1到n,第n+k个盒子被称为第k个盒子。若某一轮有盒子里石头不够,就停止,且这一轮都不能执行。问能否清空所有盒子。
题解
首先每轮减少的值是\(t=\sum_{i=1}^{i=n}i\),因此\(\sum_{i=1}^{i=n}a_i\)必须是t的倍数,否则NO。
这个倍数就是操作的轮数,设为k。
计算出差分\(d[i]=a[i]-a[i-1]\),对于差分来说,每一轮有一个位置是增加了\(1-n\),其它位置是增加了1。
现在我们倒回去模拟,每一轮给差分最小的加上\(n-1\),其它位置-1,如果能使所有差分变为0,那么就是YES。
但是直接模拟肯定超时。
可以观察到k轮后每个位置都减去了若干个1和1-n,把k个1提出来,也就是每个位置先减去k,d[i]-k得是n的倍数,而且是负数[修正:或0],才是YES,否则NO。
代码
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#define ll long long
#define N 100005
#define inf 0x3f3f3f3f
using namespace std;
ll sum,a[N],t,tmp,n;
int main() {
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		sum+=a[i];
		t+=i;
	}
	if(sum%t)cout<<"NO";
	else{
		tmp=a[1];
		for(int i=1;i<n;i++)a[i]=a[i+1]-a[i];
		a[n]=tmp-a[n];
		ll d=sum/t,ok=1;
		for(int i=1;i<=n&&ok;i++){
			a[i]-=d;
			if(a[i]%n||a[i]>0)ok=0;
		}
		if(ok)cout<<"YES";
		else cout<<"NO";
	}
	return 0;
}
												
											【AtCoder010】B - Boxes(差分)的更多相关文章
- Atcoder Grand Contest 010 B - Boxes 差分
		
B - Boxes 题目连接: http://agc010.contest.atcoder.jp/tasks/agc010_b Description There are N boxes arrang ...
 - Image Processing and Analysis_8_Edge Detection:Finding Edges and Lines in Images by Canny——1983
		
此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...
 - hdu4059 The Boss on Mars(差分+容斥原理)
		
题意: 求小于n (1 ≤ n ≤ 10^8)的数中,与n互质的数的四次方和. 知识点: 差分: 一阶差分: 设 则 为一阶差分. 二阶差分: n阶差分: 且可推出 性质: 1. ...
 - 【hihocoder#1413】Rikka with String     后缀自动机 + 差分
		
搞了一上午+接近一下午这个题,然后被屠了个稀烂,默默仰慕一晚上学会SAM的以及半天4道SAM的hxy大爷. 题目链接:http://hihocoder.com/problemset/problem/1 ...
 - 差分进化算法 DE-Differential Evolution
		
差分进化算法 (Differential Evolution) Differential Evolution(DE)是由Storn等人于1995年提出的,和其它演化算法一样,DE是一种模拟生物进化 ...
 - UVA11478 Halum [差分约束系统]
		
https://vjudge.net/problem/UVA-11478 给定一个有向图,每条边都有一个权值.每次你可以选择一个结点v和一个整数d,把所有以v为终点的边的权值减小d,把所有以v为起点的 ...
 - BZOJ 2330: [SCOI2011]糖果 [差分约束系统] 【学习笔记】
		
2330: [SCOI2011]糖果 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 5395 Solved: 1750[Submit][Status ...
 - 洛谷P3406 海底高铁[差分 贪心]
		
题目背景 大东亚海底隧道连接着厦门.新北.博艾.那霸.鹿儿岛等城市,横穿东海,耗资1000亿博艾元,历时15年,于公元2058年建成.凭借该隧道,从厦门可以乘坐火车直达台湾.博艾和日本,全程只需要4个 ...
 - Fedora 24 Gnome Boxes 无法ping通网络
		
安装Fedora 24在试用虚拟机时发现无法ping通外网. 我傻傻地以为是软件问题. 问题描述: 尝试ping程序来测试网络连通性: (我之前也是ping百度,后来在为了少打字百度了一些比较短的域名 ...
 
随机推荐
- url 传递中文参数乱码问题的终极解决方法。
			
估计很多人在做web开发的时候,都会碰到过url传递中文参数,有时候会出现乱码的问题,但有些项目或者环境,又不会有问题.当遇到乱码的时候,上网找了很多解决方案,比如: 页面设置它的编码方式,改成utf ...
 - odoo11 访问web/database/manager管理数据库页面布局混乱问题
			
最近在使用odoo11开发自己的模块时,在管理数据库的页面的时候,页面布局混乱,查看http加载页面的时候大量的js css文件没有加载成功,被卡了3天,现在问题找到. 问题是在加入自己的custom ...
 - Nginx 反向代理 上传大文件报 413
			
Nginx 中上传文件限制是 2m,上传太大就报错,配置一下 client_max_body_size 1024m; 就可以上传 1G 大小文件 添加在 location 中,如果是反向代理就添加在反 ...
 - [Oracle]GoldenGate官方文档
			
Extracting Data in Oracle GoldenGate Integrated Capture Mode http://www.oracle.com/technetwork/datab ...
 - vue 首页背景图片加载完成前增加 loading 效果 -- 使用 new Image() 实现
			
1. 创建 loading 公用组件 <template> <div class="load-container"> <div class=" ...
 - TCP服务端开发为例--web开发不同url请求为何会走不同方法
			
拿java的web开发为例子,相信有很多小伙伴是做j2EE开发的,htpp请求,json数据传输都是工作中经常用的,查询请求,添加请求,修改请求前端配个url,例如https://localhost/ ...
 - Openstack部署踩坑
			
第一周: 使用kola部署Openstack,vip_address有问题,双网上也不行,就是部署不了,但all-in-one却可以,可是节点不会加. 第二周: 使用Packstack部署Openst ...
 - 个人阅读作业WEEK7 (软件工程的瀑布, 大泥球, 教堂,集市,和银弹)
			
一 . 关于银弹 (Silver Bullet) 银弹,被引申为解决问题的有效办法.IBM大型机之父福瑞德·布鲁克斯在1986年的论文<没有银弹>中表达了他的观点:软件工程中不存在银弹—— ...
 - linux内核分析程序破解实践报告
 - servlet请求转发
			
来源:http://www.2cto.com/kf/201610/554591.html 请求转发:Servlet(源组件)先对客户请求做一些预处理操作(数据处理),然后把请求转发给其他Web组件(目 ...