D. Vasya and Arrays
链接
[http://codeforces.com/contest/1036/problem/D]
题意
给你两个数组长度分别为n,m;
有这么一种操作,用某个数组的某个子区间元素之和代替这个子区间,这样使得数组长度减少,两个数组都可以进行
问你最后两个数组一摸一样的时候,最大数组长度是多少?如果无法使两个数组一摸一样输出-1
分析
先判断开始数组总和是否相等,不相等是不可能最后两个数组一摸一样的
从头和尾两个位置判断是否相等,相等继续如果不相等统计两个数组区间的长度,在比较大小,进行到最后
具体看代码
代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll N=3e5+10;
ll a[N],b[N];
ll n,m;
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	//freopen("in.txt","r",stdin);
	cin>>n;
	ll sum1=0,sum2=0;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
		sum1+=a[i];
	 }
	 cin>>m;
	 for(int i=0;i<m;i++)
	 {
	 	cin>>b[i];
	 	sum2+=b[i];
	 }
	 if(sum1!=sum2){
	 	cout<<-1<<endl;
	 	return 0;
	 }
	    int cnt=0;
	 if(a[0]==b[0])
	 {
	 	int i=1,j=1;
	 	sum1=a[1],sum2=b[1];
	 	while(i<n&&j<m){
	 		if(sum1<sum2){
	 			sum1+=a[i+1];
	 			cnt++;
	 			i++;
			 }
			 else if(sum1>sum2){
			 	sum2+=b[j+1];
			 	j++;
			 }
			 else {
			 	sum1=a[i+1],sum2=b[j+1];
			 	i++,j++;
			 }
		 }
	 }
	 else if(a[n-1]==b[m-1]){
	 	int i=n-1,j=m-1;
	 	sum1=a[n-1],sum2=b[m-1];
	 	while(i>-1&&j>-1){
	 		if(sum1<sum2){
	 			sum1+=a[i-1];
	 			cnt++;
	 			i--;
			 }
			 else if(sum2<sum1){
			 	sum2+=b[j-1];
			 	j--;
			 }
			 else {
			 	sum1=a[i-1],sum2=b[j-1];
			 	i--,j--;
			 }
		 }
	 }
	 else{
	 	int i=0,j=0;
	 	sum1=a[0],sum2=b[0];
	 	while(i<n&&j<m){
	 		if(sum1<sum2){
	 			sum1+=a[i+1];
	 			cnt++;
	 			i++;
			 }
			 else if(sum1>sum2)
			 {
			 	sum2+=b[j+1];
			 	j++;
			 }
			 else {
			 	sum1=a[i+1],sum2=b[j+1];
			 	i++,j++;
			 }
		 }
	 }
	 //cout<<cnt<<endl;
	 cout<<n-cnt<<endl;
	return 0;
}
D. Vasya and Arrays的更多相关文章
- CF1036D Vasya and Arrays 题解
		Content 给定两个长度分别为 \(n\) 和 \(m\) 的数列 \(A,B\).你需要将两个数列都恰好分成 \(k\) 份,使得两个数列中第 \(i(i\in[1,k])\) 份的元素和对应相 ... 
- Educational Codeforces Round 50
		1036A - Function Height 20180907 \(ans=\left \lceil \frac{k}{n} \right \rceil\) #include<bits/ ... 
- Codeforces Edu Round 50 A-D
		A. Function Height 由于只能提升\(x\)为奇数的点,每个三角形的底一定为\(2\), 则要求我们求: \(2 * (h_1 + h_2 + - + h_n) / 2 = k\),使 ... 
- Vasya and Beautiful Arrays CodeForces - 354C  (数论,枚举)
		Vasya and Beautiful Arrays CodeForces - 354C Vasya's got a birthday coming up and his mom decided to ... 
- E. Vasya and Beautiful Arrays
		http://codeforces.com/contest/355/problem/E 每个数都可以变成段 [a-k,a], 某一个因子是否被所有的段包含,就是把这个因子以及它的所有倍数看成点, 看是 ... 
- Codeforces 1090D - Similar Arrays - [思维题][构造题][2018-2019 Russia Open High School Programming Contest Problem D]
		题目链接:https://codeforces.com/contest/1090/problem/D Vasya had an array of n integers, each element of ... 
- Java程序员的日常—— Arrays工具类的使用
		这个类在日常的开发中,还是非常常用的.今天就总结一下Arrays工具类的常用方法.最常用的就是asList,sort,toStream,equals,copyOf了.另外可以深入学习下Arrays的排 ... 
- 使用 Arrays 类操作 Java 中的数组
		Arrays 类是 Java 中提供的一个工具类,在 java.util 包中.该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序.搜索等(关于类和方法的相关内容在后面的章节中会详细讲解滴 ... 
- 【转】java.util.Arrays.asList 的用法
		DK 1.4对java.util.Arrays.asList的定义,函数参数是Object[].所以,在1.4中asList()并不支持基本类型的数组作参数. JDK 1.5中,java.util.A ... 
随机推荐
- js常见执行方法window.onload = function (){},$(document).ready()
			1. window.onload = function(){}; 当页面DOM对象加载完毕,web浏览器能够运行JS时,此方法即被触发. 2. $(document).ready();当web页面以及 ... 
- 《面向对象程序设计》c++第六次作业___calculator SE
			c++第五次作业 Calculator SE 代码 PS:这次作业延迟了很久,人要是迷茫啊----唉------ 新增GUI界面,使用Qt creator编写,纯代码生成控件.写坐标. 感觉Qt cr ... 
- django复习-2-配置、静态文件与路由
			一.配置文件 1. BASE_DIR BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) __file__指当 ... 
- FastDFS分布式文件系统设计原理
			转载自http://blog.chinaunix.net/uid-20196318-id-4058561.html FastDFS是一个开源的轻量级分布式文件系统,由跟踪服务器(tracker ser ... 
- webstorm 搭建es6开发环境
			本文转自:http://www.jianshu.com/p/26601581e152 1:新建一个Empty Project项目es6 ,然后在src目录下新建了一个es.js: 2:打开设置pref ... 
- 【洛谷】【单调队列】P2032 扫描
			[题目描述:] 有一个 1 ∗ n 的矩阵,有 n 个正整数. 现在给你一个可以盖住连续的 k 的数的木板. 一开始木板盖住了矩阵的第 1 ∼ k 个数,每次将木板向右移动一个单位,直到右端与第 n ... 
- <数据结构与算法分析>读书笔记--利用Java5泛型实现泛型构件
			一.简单的泛型类和接口 当指定一个泛型类时,类的声明则包括一个或多个类型参数,这些参数被放入在类名后面的一对尖括号内. 示例一: package cn.generic.example; public ... 
- OpenCV——Harris、Shi Tomas、自定义、亚像素角点检测
			#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ... 
- Jmeter上传下载文件
			每次使用时都会忘记,此处是存储网路上通用的方式. 1.上传文件 记得勾选“use multipart/form-data for post”,表明此请求包含文件信息.在信息请求头中,需加入“Con ... 
- 关于NLB的群集操作模式知识 (转载)
			单播:单播模式是指各节点的网络适配器被重新指定了一个虚拟MAC(由02-bf和群集IP地址组成确保此MAC的唯一性).由于所有绑定群集的网络适配器的MAC都相同,所以在单网卡的情况下,各节点之间是不能 ... 
