题目链接


菜爆了啊QAQ

记起点为\(S\),终点为\(T\),走过的最靠左的点是\(L\),最靠右的点是\(R\)。

那么坐标轴被分成了五段:

\(0\sim L-1\):经过\(0\)次;

\(L\sim S-1\):经过偶数次;

\(S\sim T\):经过奇数次;

\(T+1\sim R\):经过偶数次;

\(R+1\sim\infty\):经过\(0\)次。

第二段和第四段可以经过\(0\)次(也就是可以没有第二段或第四段)。注意如果是第二/三/四段\(A_i=0\)的话会有花费。

\(f[i][j]\)表示到\(i\)点,处在第\(j\)段,的最小花费。转移很简单。

复杂度\(O(n)\)。


//4ms	640KB
#include <cstdio>
#include <cctype>
#include <algorithm>
//#define gc() getchar()
#define MAXIN 500000
#define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF:*SS++)
typedef long long LL;
const int N=2e5+5; char IN[MAXIN],*SS=IN,*TT=IN; inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-48,c=gc());
return now;
} int main()
{
int n=read(); LL f[5]={0};
for(int i=1; i<=n; ++i)
{
int ai=read();
LL mn=f[0]; f[0]=f[0]+ai;
mn=std::min(mn,f[1]), f[1]=mn+(ai?ai&1:2);
mn=std::min(mn,f[2]), f[2]=mn+(ai?ai+1&1:1);
mn=std::min(mn,f[3]), f[3]=mn+(ai?ai&1:2);
mn=std::min(mn,f[4]), f[4]=mn+ai;
}
printf("%lld\n",std::min(f[2],std::min(f[3],f[4]))); return 0;
}

Yahoo Programming Contest 2019.D.Ears(DP)的更多相关文章

  1. Yahoo Programming Contest 2019 D - Ears

    D - Ears 思路: s:起点           t:终点           l:左端点           r:右端点 以上称为关键点 dp[i][j]表示到位置 i 为止,已经经过前 j ...

  2. Yahoo Programming Contest 2019.F.Pass(DP)

    题目链接 惊了这是什么F题...怎么我都能做出来...以后atcoder的比赛也不能走神了万一有个这样的F呢(CF已有多次了= =) \(f[i][j]\)表示Takahashi现在一共有\(i\)个 ...

  3. [AtCoder] Yahoo Programming Contest 2019

    [AtCoder] Yahoo Programming Contest 2019   很遗憾错过了一场 AtCoder .听说这场是涨分场呢,于是特意来补一下题. A - Anti-Adjacency ...

  4. Yahoo Programming Contest 2019 补题记录(DEF)

    D - Ears 题目链接:D - Ears 大意:你在一个\(0-L\)的数轴上行走,从整数格出发,在整数格结束,可以在整数格转弯.每当你经过坐标为\(i-0.5\)的位置时(\(i\)是整数),在 ...

  5. 【AtCoder】Yahoo Programming Contest 2019

    A - Anti-Adjacency K <= (N + 1) / 2 #include <bits/stdc++.h> #define fi first #define se se ...

  6. Atcoder Yahoo Programming Contest 2019 简要题解

    A-C 直接放代码吧. A int n,k; int main() { n=read();k=read(); puts(k<=(n+1)/2?"YES":"NO&q ...

  7. Yahoo Programming Contest 2019

    A - Anti-Adjacency 签. #include <bits/stdc++.h> using namespace std; int main() { int n, k; whi ...

  8. Yahoo Programming Contest 2019 自闭记

    A:签到. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> ...

  9. Yahoo Programming Contest 2019 F - Pass

    F - Pass 思路: dp[i][j] 表示到第 i 个球为止放了 j 个蓝球的方案数 第 i 个球来自的位置的最右边是min(i, n) 转移方程看代码 代码: #pragma GCC opti ...

随机推荐

  1. java测试

    //信1705-1 20173527 刘津鑫package money;import java.io.IOException;import java.io.Serializable;import ja ...

  2. 修改jenkins发布账号信息

  3. Jenkins删除或替换All view

    一.Jenkins删除All view “系统管理”→“系统设置”页面,更改“Default view”的下拉选项.(前提你已经新建了新的view) 二.My Views删除All view “用户” ...

  4. 步步为营-86-WSFUpload组件

    文件上传组件,所需js文件和图片在百度网盘对应的文件夹下 <%@ Page Language="C#" AutoEventWireup="true" Co ...

  5. 添加依赖:https://mvnrepository.com/

    该网站搜索

  6. Redis设置内存最大占用值

    Redis设置内存最大占用值: Redis设置占用物理机最大的内存 #占用最大20G maxmemory 20480mb Redis设置内存装不下了,有限删除即将过期的 当前已用内存超过maxmemo ...

  7. 一脸懵逼加从入门到绝望学习hadoop之Caused by: java.net.UnknownHostException: master报错

    windows下开发hadoop应用程序,hadoop部署在linux环境中, 在运行调试时可能会出现无法找到主机,类似异常信息如下: java.net.UnknownHostException: u ...

  8. springcloud feign传输List的坑

    无法直接传输List 错误方法1: @RequestMapping(value = "/stat/merchant/get_merchant_compare_info", meth ...

  9. C#使用Emit生成构造函数和属性

    假设我们需要一个名叫Kitty的类,其在Pets程序集下. 1 // specify a new assembly name 2 var assemblyName = new AssemblyName ...

  10. sed 简单修改配置文件ip地址

    sed -i 's/old ip/new ip/g' file.txt