链接

[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的更多相关文章

  1. CF1036D Vasya and Arrays 题解

    Content 给定两个长度分别为 \(n\) 和 \(m\) 的数列 \(A,B\).你需要将两个数列都恰好分成 \(k\) 份,使得两个数列中第 \(i(i\in[1,k])\) 份的元素和对应相 ...

  2. Educational Codeforces Round 50

    1036A - Function Height    20180907 \(ans=\left \lceil \frac{k}{n} \right \rceil\) #include<bits/ ...

  3. Codeforces Edu Round 50 A-D

    A. Function Height 由于只能提升\(x\)为奇数的点,每个三角形的底一定为\(2\), 则要求我们求: \(2 * (h_1 + h_2 + - + h_n) / 2 = k\),使 ...

  4. Vasya and Beautiful Arrays CodeForces - 354C (数论,枚举)

    Vasya and Beautiful Arrays CodeForces - 354C Vasya's got a birthday coming up and his mom decided to ...

  5. E. Vasya and Beautiful Arrays

    http://codeforces.com/contest/355/problem/E 每个数都可以变成段 [a-k,a], 某一个因子是否被所有的段包含,就是把这个因子以及它的所有倍数看成点, 看是 ...

  6. 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 ...

  7. Java程序员的日常—— Arrays工具类的使用

    这个类在日常的开发中,还是非常常用的.今天就总结一下Arrays工具类的常用方法.最常用的就是asList,sort,toStream,equals,copyOf了.另外可以深入学习下Arrays的排 ...

  8. 使用 Arrays 类操作 Java 中的数组

    Arrays 类是 Java 中提供的一个工具类,在 java.util 包中.该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序.搜索等(关于类和方法的相关内容在后面的章节中会详细讲解滴 ...

  9. 【转】java.util.Arrays.asList 的用法

    DK 1.4对java.util.Arrays.asList的定义,函数参数是Object[].所以,在1.4中asList()并不支持基本类型的数组作参数. JDK 1.5中,java.util.A ...

随机推荐

  1. 彻底理解lib和dll

    转自:http://www.cppblog.com/amazon/archive/2009/09/04/95318.html 两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口 ...

  2. PyQt5--QCheckBox

    1 # -*- coding:utf-8 -*- ''' Created on Sep 20, 2018 @author: SaShuangYiBing Comment: ''' import sys ...

  3. Oracle 11g AWR 系列五:如何生成 AWR 报告?

    1.生成单实例 AWR 报告: @$ORACLE_HOME/rdbms/admin/awrrpt.sql 2.生成 Oracle RAC AWR 报告: @$ORACLE_HOME/rdbms/adm ...

  4. python爬虫(三)

    webdriver Selenium是ThroughtWorks公司开发的一套Web自动化测试工具.它分为三个组件:Selenium IDE,Selenium RC (Remote Control), ...

  5. <数据结构与算法分析>读书笔记--实现泛型构件pre-Java5

    面向对象的一个重要目标是对代码重用的支持.支持这个目标的一个重要的机制就是泛型机制:如果除去对象的基本类型外,实现的方法是相同的,那么我们就可以用泛型实现来描述这种基本的功能. 1.使用Object表 ...

  6. Android4.4 ContentResolver查询图片无效 及 图库删除 增加图片后,ContentResolver不更新的问题解决

    问题背景: 参考链接 做了一个图片浏览,用ContentResolver扫描图库照片,且严格按照时间拍摄顺序排好序显示在listview里.如下图所示: 遇到的问题是在4.2的手机上能正常显示,但是新 ...

  7. rlwrap与历史命令

    # yum install rlwrap $ vi .bash_profile alias sqlplus='rlwrap sqlplus'alias rman='rlwrap rman' 或者 l ...

  8. C++之友元函数和友元类

    通过friend关键字,我们可以将不属于当前类的一个函数在当前类中加以声明,该函数便可以成为当前类的友元函数. #include<iostream>using namespace std; ...

  9. Altium 拼板方法以及 注意的 地方

    1.修改软件设置, 即工具→优先选项→覆铜重建 对号去掉,如下,否则 拼板复制 覆铜 会变形导致拼板错误!!! 2.拼板方法,Ctrl+A全部复制(不要漏掉),选择特殊粘贴的方式,快捷键 E→A  去 ...

  10. uC/OS-III 时钟节拍,时间管理,时间片调度

    uC/OS-III 时钟节拍,时间管理,时间片调度   时钟节拍 时钟节拍可谓是 uC/OS 操作系统的心脏,它若不跳动,整个系统都将会瘫痪. 时钟节拍就是操作系统的时基,操作系统要实现时间上的管理, ...