AGC037C Numbers on a Circle【构造】
从后往前做,每次将\(B_i\)减去相邻两个数,注意如果最大的数没有变成初始状态,那么肯定要减,否则相邻两边的就减不了,所以用堆维护。根据辗转相除的复杂度,\(O(n\log^2 n)\)。
#include<bits/stdc++.h>
#define Rint register int
#define MP make_pair
#define fi first
#define se second
using namespace std;
typedef long long LL;
typedef pair<int, int> pii;
const int N = 200003;
int n, a[N], b[N];
LL ans;
priority_queue<pii> pq;
int main(){
	scanf("%d", &n);
	for(Rint i = 1;i <= n;i ++) scanf("%d", a + i);
	for(Rint i = 1;i <= n;i ++){
		scanf("%d", b + i);
		if(a[i] != b[i]) pq.push(MP(b[i], i));
	}
	while(!pq.empty()){
		pii now = pq.top(); pq.pop();
		int i = now.se, pre = (now.se + n - 2) % n + 1, suf = now.se % n + 1, step = (b[i] - a[i]) / (b[pre] + b[suf]);
		if(!step){puts("-1"); return 0;}
		ans += step; b[i] -= step * (b[pre] + b[suf]);
		if(a[i] != b[i]) pq.push(MP(b[i], i));
	}
	printf("%lld", ans);
}
												
											AGC037C Numbers on a Circle【构造】的更多相关文章
- AGC037C Numbers on a Circle(神奇思路)
		
Atcoder 全是神仙题-- 先变成能不能从 \(b\) 到 \(a\).操作变成一个数减掉旁边两个数. 考虑里面最大的且不和 \(a\) 中相等的那个数.它两边的数此时都不能操作,否则就减到非正数 ...
 - AGC037C Numbers on a Circle
		
题目大意 给你一个序列a和序列b 每次操作是a[i]+=a[i-1]+a[i+1] 问a经过最少几次操作可以得到b 分析 用堆维护a 每次取出最大的 撤销操作直到不能撤销 将新数放入堆 不断维护即可 ...
 - D. Numbers on Tree(构造)【CF 1287】
		
传送门 思路: 我们需要抓住唯一的重要信息点"ci",我的做法也是在猜想和尝试中得出的,之后再验证算法的正确性. 我们在构造中发现,如果树上出现了相同的数字,则会让树的构造变得不清 ...
 - AGC037 C Numbers on a Circle【思维】
		
题目传送门 题意 这道题被某大佬改编拿来出成考试题,是长这个样子的: 好的,其实这才是真正的题意: 给定初始序列和最终序列,每次选择一个数变成自己和相邻2个数的和.问初始序列是否可以变为最终序列,若可 ...
 - CodeForces 128D Numbers 构造
		
D. Numbers time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...
 - Codeforces Beta Round #94 div 1 D Numbers map+思路
		
D. Numbers time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...
 - ATcoder Grand Contest总结
		
最前面: AT的题都很有思维难度,总结一下一些AT的常规操作 1.对于有操作的题目,如果正面推不行的话考虑倒推,将操作转化,寻找更好的性质 2.模型转化,看到某一种的计算的式子,需要考虑有没有更简化的 ...
 - crossplatform---Node.js Applications with VS Code
		
Node.js is a platform for building fast and scalable server applications using JavaScript. Node.js i ...
 - uva 524 prime ring problem——yhx
		
Prime Ring Problem A ring is composed of n (even number) circles as shown in diagram. Put natural ...
 
随机推荐
- 在微服务架构中service mesh是什么?
			
在微服务架构中service mesh是什么 什么是 service mesh ? 微服务架构将软件功能隔离为多个独立的服务,这些服务可独立部署,高度可维护和可测试,并围绕特定业务功能进行组织. 这些 ...
 - 此方法显式使用的 CAS 策略已被 .NET Framework 弃用。若要出于兼容性原因而启用 CAS 策略,请使用 NetFx40_LegacySecurityPolicy 配置开关
			
使用DEV8.3winform控件,框架从.net2.0升级到4.0后,程序报错,调用的目标异常. 此方法显式使用的 CAS 策略已被 .NET Framework 弃用.若要出于兼容性原因而启用 C ...
 - url格式化函数http_build_query() 和parse_str() 函数
			
例子 1. http_build_query() 使用示例 <?php $data = array('foo'=>'bar', 'baz'=>'boom', 'cow'=>'m ...
 - .net core 杂记:用Autofac替换内置容器
			
官方建议使用内置容器,但有些功能并不支持,如下: 属性注入 基于名称的注入 子容器 自定义生存期管理 Func<T> 支持 所以可以使用其他第三方IOC容器,如Autofac,下面为学习使 ...
 - ubuntu安装之后需要做什么
			
安装完ubuntu或者linux后应该做什么?首先在你安装完之后,都知道,很多系统都是有自带的一些软件之类,很多其实是不必要的,我们可以完全删掉,需要的时候再重装,那么安装完之后应该做什么呢? 1.智 ...
 - PX4/Pixhawk uORB
			
PX4/Pixhawk的软件体系结构主要被分为四个层次 应用程序的API:这个接口提供给应用程序开发人员,此API旨在尽可能的精简.扁平及隐藏其复杂性 应用程序框架:这是为操作基础飞行控制的默认程序集 ...
 - 【坑】select2 模态框中下拉input无法focus
			
select2的组件bug 解决方案: 在bootstrap.js中修改: Modal.prototype.enforceFocus = function () { $(document) .off( ...
 - m_atoi
			
自己实现atoi函数 函数定义:将字符串转换成整型数:atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时('\0')才结束转化,并将结 ...
 - 让你弄懂 call、apply、bind的应用和区别
			
call.apply.bind使用和区别 // 有只猫叫小黑,小黑会吃鱼 const cat = { name: '小黑', eatFish(...args) { console.log('this指 ...
 - Thread.sleep()和Thread.currentThread().sleep()区别
			
先看一下代码 public class Thread1 extends Thread{ @Override public void run() { try { System.out.println(& ...