题目大意:

有两种类型的果酱,一个梯子,从中间开始吃,可以吃左边的,也可以吃右边的,最终要使两种类型的果酱的数量想等

题解:

思路对了,但是没考虑完。

对梯子的左侧的果酱I我们用两个数组记录其从1到i的1的数量和从1到i的2的数目,对梯子右侧的果酱保存从i到n的1的数目和2的数目。

然后两种情况,

第一种是最终答案最侧与右侧均有果酱剩余。我们只需要让左侧的1-2等于右侧2-1。

第二种情况,最终答案出现在一侧, 即左侧都吃光或者右侧都吃光。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1E6+;
const ll INF=1e9+;
ll arr[N];
ll brr[N];
ll marka1[N];
ll marka2[N];
ll markb1[N];
ll markb2[N];
map<ll,ll >mp;
void solve(){
mp.clear();
ll n;
cin>>n;
for(ll i=;i<=n;i++) cin>>arr[i];
for(ll i=;i<=n;i++) cin>>brr[i];
for(ll i=;i<=n;i++){
if(arr[i]==) {
marka1[i]=marka1[i-]+;
marka2[i]=marka2[i-];
}
else {
marka1[i]=marka1[i-];
marka2[i]=marka2[i-]+;
}
}
markb1[n+]=;
markb2[n+]=;
for(ll i=n;i>=;i--){
if(brr[i]==){
markb1[i]=markb1[i+]+;
markb2[i]=markb2[i+];
}
else {
markb1[i]=markb1[i+];
markb2[i]=markb2[i+]+;
}
}
for(ll i=n;i>=;i--){
ll k=marka1[i]-marka2[i];
if(mp[k]==) {
mp[k]=i;
}
}
ll ans=INF;
for(ll i=;i<=n;i++){
ll k=markb2[i]-markb1[i];
if(mp[k]!=){
ans=min(ans,n-mp[k]+i-);
}
}
ll ans2=;
for(int i=;i<=n;i++){
if(marka1[i]==marka2[i]) ans2=i;
}
ans2=n-ans2+n;
ll ans3=n+;
for(int i=n;i>=;i--){
if(markb1[i]==markb2[i]) ans3=i;
}
ans3=n+ans3-;
cout<<min(ans3,min(ans,ans2))<<endl;
}
int main(){
ios::sync_with_stdio();
ll t;
cin>>t;
while(t--) solve();
return ;
}

Berry Jam codeforces 1278C的更多相关文章

  1. Educational Codeforces Round 78 (Rated for Div. 2) C. Berry Jam

    链接: https://codeforces.com/contest/1278/problem/C 题意: Karlsson has recently discovered a huge stock ...

  2. codeforcesC - Berry Jam(折半枚举+1-1序列前后缀和)

    Educational Codeforces Round 78 (Rated for Div. 2) C - Berry Jam C. Berry Jam time limit per test 2 ...

  3. Educational Codeforces Round 78 (Rated for Div. 2) C - Berry Jam(前缀和)

  4. CF 1278C Berry Jam 题解

    Forewords 说实话我是被图吸引进来的23333,图画的真的挺好看. 题意 你从一个梯子下到地下室,梯子左右两边各有 \(n\) 瓶果酱排成一排,果酱口味为草莓味或蓝莓味,你每次只能吃你左边或右 ...

  5. Berry Jam (前缀和)cf教育场

    距离上一篇博客又2个月了 寻思着该除除草了 教育场是真的好难 可能是因为我还是只菜鸡 哭唧唧 先说下题意:有2*n罐果酱,草莓和蓝莓,梯子在中间从梯子那开始往两边吃(可以一会左一会右),问最少吃多少果 ...

  6. 【cf比赛记录】Educational Codeforces Round 78 (Rated for Div. 2)

    比赛传送门 A. Shuffle Hashing 题意:加密字符串.可以把字符串的字母打乱后再从前面以及后面接上字符串.问加密后的字符串是否符合加密规则. 题解:字符串的长度很短,直接暴力搜索所有情况 ...

  7. Educational Codeforces Round 78 (Rated for Div. 2) 题解

    Shuffle Hashing A and B Berry Jam Segment Tree Tests for problem D Cards Shuffle Hashing \[ Time Lim ...

  8. 2021record

    2021-10-14 P2577 [ZJOI2004]午餐 2021-10-13 CF815C Karen and Supermarket(小小紫题,可笑可笑) P6748 『MdOI R3』Fall ...

  9. CodeForces 4A

    A A - Water~melon Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit St ...

随机推荐

  1. asp.net net::ERR_ABORTED 500 (Internal Server Error) 无法加载JS CSS等文件的解决方法

    网站换服务器,部署上去后打开首页,js .css等文件始终无法加载,经过排查,问题出现在web.config文件中. <defaultDocument> <files> < ...

  2. Leetcode——二叉树常考算法整理

    二叉树常考算法整理 希望通过写下来自己学习历程的方式帮助自己加深对知识的理解,也帮助其他人更好地学习,少走弯路.也欢迎大家来给我的Github的Leetcode算法项目点star呀~~ 二叉树常考算法 ...

  3. linux execl()函数 关于execl()函数族的用法不在赘述,

    linux execl()函数 关于execl()函数族的用法不在赘述, linux 网络编程 1---(基本概念) 1.TCP和UDP协议 共同点:同为传输层协议 不同点: TCP:有连接,可靠 U ...

  4. CF 631C report

    Each month Blake gets the report containing main economic indicators of the company "Blake Tech ...

  5. 优化Python代码的4种方法

    介绍 作为数据科学家,编写优化的Python代码非常非常重要.杂乱,效率低下的代码即浪费你的时间甚至浪费你项目的钱.经验丰富的数据科学家和专业人员都知道,当我们与客户合作时,杂乱的代码是不可接受的. ...

  6. 使用FME将CAD中块参照数据转换为shp数据

    暴露出需要导出的字段值,首先在数据查看器中看看CAD中各个图层分别有哪些隐含的字段. CAD快参照中含有多个部分,需要将点按照原始编码聚合成一个点. 属性字段创建,并按照属性字段一一对应CAD中的字段 ...

  7. coding++:js实现基于Base64的编码及解码

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. Java工程师常用Linux命令

    本文所列的Linux常用命令包含:文件相关(目录操作,内容查看,查找与比较,压缩与解压),进程管理,网络操作,系统管理,性能监测与优化,Java常用工具多个方面概述. 文件目录基本操作 ls 命令用来 ...

  9. 4.用IntelliJ IDEA 创建Maven Web

    一.File→New→ Project 二.Maven→org.apache.maven.archetypes:maven-archetype-webapp→Next(记得打钩) 三.填入后Next→ ...

  10. 树莓派 Raspberry PI之GPIO

    树莓派 Raspberry PI之GPIO 树莓派各版本硬件原理图:https://www.raspberrypi.org/documentation/hardware/raspberrypi/REA ...