Yahoo Programming Contest 2019.D.Ears(DP)
菜爆了啊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)的更多相关文章
- Yahoo Programming Contest 2019 D - Ears
D - Ears 思路: s:起点 t:终点 l:左端点 r:右端点 以上称为关键点 dp[i][j]表示到位置 i 为止,已经经过前 j ...
- Yahoo Programming Contest 2019.F.Pass(DP)
题目链接 惊了这是什么F题...怎么我都能做出来...以后atcoder的比赛也不能走神了万一有个这样的F呢(CF已有多次了= =) \(f[i][j]\)表示Takahashi现在一共有\(i\)个 ...
- [AtCoder] Yahoo Programming Contest 2019
[AtCoder] Yahoo Programming Contest 2019 很遗憾错过了一场 AtCoder .听说这场是涨分场呢,于是特意来补一下题. A - Anti-Adjacency ...
- Yahoo Programming Contest 2019 补题记录(DEF)
D - Ears 题目链接:D - Ears 大意:你在一个\(0-L\)的数轴上行走,从整数格出发,在整数格结束,可以在整数格转弯.每当你经过坐标为\(i-0.5\)的位置时(\(i\)是整数),在 ...
- 【AtCoder】Yahoo Programming Contest 2019
A - Anti-Adjacency K <= (N + 1) / 2 #include <bits/stdc++.h> #define fi first #define se se ...
- 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 ...
- Yahoo Programming Contest 2019
A - Anti-Adjacency 签. #include <bits/stdc++.h> using namespace std; int main() { int n, k; whi ...
- Yahoo Programming Contest 2019 自闭记
A:签到. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> ...
- Yahoo Programming Contest 2019 F - Pass
F - Pass 思路: dp[i][j] 表示到第 i 个球为止放了 j 个蓝球的方案数 第 i 个球来自的位置的最右边是min(i, n) 转移方程看代码 代码: #pragma GCC opti ...
随机推荐
- java测试
//信1705-1 20173527 刘津鑫package money;import java.io.IOException;import java.io.Serializable;import ja ...
- 修改jenkins发布账号信息
- Jenkins删除或替换All view
一.Jenkins删除All view “系统管理”→“系统设置”页面,更改“Default view”的下拉选项.(前提你已经新建了新的view) 二.My Views删除All view “用户” ...
- 步步为营-86-WSFUpload组件
文件上传组件,所需js文件和图片在百度网盘对应的文件夹下 <%@ Page Language="C#" AutoEventWireup="true" Co ...
- 添加依赖:https://mvnrepository.com/
该网站搜索
- Redis设置内存最大占用值
Redis设置内存最大占用值: Redis设置占用物理机最大的内存 #占用最大20G maxmemory 20480mb Redis设置内存装不下了,有限删除即将过期的 当前已用内存超过maxmemo ...
- 一脸懵逼加从入门到绝望学习hadoop之Caused by: java.net.UnknownHostException: master报错
windows下开发hadoop应用程序,hadoop部署在linux环境中, 在运行调试时可能会出现无法找到主机,类似异常信息如下: java.net.UnknownHostException: u ...
- springcloud feign传输List的坑
无法直接传输List 错误方法1: @RequestMapping(value = "/stat/merchant/get_merchant_compare_info", meth ...
- C#使用Emit生成构造函数和属性
假设我们需要一个名叫Kitty的类,其在Pets程序集下. 1 // specify a new assembly name 2 var assemblyName = new AssemblyName ...
- sed 简单修改配置文件ip地址
sed -i 's/old ip/new ip/g' file.txt