BZOJ 1802: [Ahoi2009]checker
若有两个红格相邻
第一问的答案为0,所有位置上的棋子都可以通过在这两个格子上放棋子得到
第二设f[i]表示想让第i个格子上有棋子需要放的棋子数
若没有,第一问答案为偶数格子上白格的个数,第二问为偶数格子上红格的个数
#include<complex>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=1e3+;
int n;
bool flag;
long long f[N];
bool a[N];
int qread()
{
int x=;
char ch=getchar();
while(ch<'' || ch>'')ch=getchar();
while(ch>='' && ch<=''){x=x*+ch-'';ch=getchar();}
return x;
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
a[i]=qread();
for(int i=;i<=n;i++)
if(a[i]&a[i-])flag=;
if(!flag)
{
int b=,c=;
for(int i=;i<=n;i+=)
a[i]?c++:b++;
printf("%d\n%d\n",b,c);
return ;
}
memset(f,0x3f,sizeof(f));
f[]=;
for(int i=;i<=n;i++)
if(a[i])f[i]=;
for(int i=;i<=n;i++)
if(a[i]&a[i+])
{
for(int j=i-;j>;j--)
f[j]=min(f[j],f[j+]+f[j+]);
for(int j=i+;j<=n;j++)
f[j]=min(f[j],f[j-]+f[j-]);
}
long long ans=;
for(int i=;i<=n;i+=)
ans+=f[i];
printf("0\n%lld\n",ans);
return ;
}
BZOJ 1802: [Ahoi2009]checker的更多相关文章
- 【BZOJ1802】[AHOI2009]checker(动态规划)
[BZOJ1802][AHOI2009]checker(动态规划) 题面 BZOJ 洛谷 题解 首先自己观察一波,发现如果有相邻两个格子都是红色的话,那么显然可以在任意位置都存在一个跳棋.可以让两个位 ...
- Bzoj 1081 [Ahoi2009] chess 中国象棋
bzoj 1081 [Ahoi2009] chess 中国象棋 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1801 状态比较难设,的确 ...
- bzoj 1799: [Ahoi2009]self 类似的分布 解读
[原标题] 1799: [Ahoi2009]self 同类分布 Time Limit: 50 Sec Memory Limit: 64 MB Submit: 554 Solved: 194 [id ...
- BZOJ 1797: [Ahoi2009]Mincut 最小割
1797: [Ahoi2009]Mincut 最小割 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2076 Solved: 885[Submit] ...
- bzoj 1800: [Ahoi2009]fly 飞行棋 暴力
1800: [Ahoi2009]fly 飞行棋 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline ...
- [BZOJ 1801] [Ahoi2009]chess 中国象棋 【DP】
题目链接:BZOJ - 1801 题目分析 对于50%的数据是可以直接状压 DP 的. 对于100%的数据,使用递推的 DP .(或者这只叫递推不叫 DP ?) 可以发现,每一行和每一列的棋子个数不能 ...
- BZOJ 1801: [Ahoi2009]chess 中国象棋( dp )
dp(i, j, k)表示考虑了前i行, 放了0个炮的有j列, 放了1个炮的有k列. 时间复杂度O(NM^2) -------------------------------------------- ...
- BZOJ 1800: [Ahoi2009]fly 飞行棋( 枚举 )
O(N2)算出有x条直径然后答案就是x(x-1)/2...这个数据范围是闹哪样! ----------------------------------------------------------- ...
- BZOJ 1797: [Ahoi2009]Mincut 最小割( 网络流 )
先跑网络流, 然后在残余网络tarjan缩点. 考虑一条边(u,v): 当且仅当scc[u] != scc[v], (u,v)可能出现在最小割中...然而我并不会证明 当且仅当scc[u] = scc ...
随机推荐
- 总结:WPF中MultiBinding多值绑定的方法
原文:总结:WPF中MultiBinding多值绑定的方法 一.Xaml中绑定代码: <TextBlock Grid.Row="5" Grid.Column="3 ...
- ubuntu Ifconfig只显示一个lo
第一步启动网卡 是网卡未启动 命令: ifconfig -a,显示所有网络接口的信息. ifconfig显示当前激活的网络接口信息 ifconfig eth0 up 启动网卡 ifconfig -a ...
- jquery实现简单定时轮播图
JS $(document).ready(function(){ var index = 0; //刚开始设置一个index,index为图片的索引值 $(".pictureDemo img ...
- Java自学-接口与继承 接口
设计Java的接口 在设计LOL的时候,进攻类英雄有两种,一种是进行物理系攻击,一种是进行魔法系攻击 这时候,就可以使用接口来实现这个效果. 接口就像是一种约定,我们约定某些英雄是物理系英雄,那么他们 ...
- English--不完全及物动词与授予动词
English|不完全及物动词与授予动词 动词在整个语法中都是占据着十分重要的角色.在五大句型中将动词分为五种:系动词.不及物动词.及物动词.不完全及物动词.授予动词.这篇主讲不完全及物动词和授予动词 ...
- CSS 过渡动画
一.过渡 过渡(transition)是CSS3中具有颠覆性的特征之一,可以在不使用 Flash 动画或 JavaScript 的情况下,当元素从一种样式变换为另一种样式时为元素添加效果. 在CSS3 ...
- Golang: 解析JSON数据之一
JSON 作为目前最流行的数据传输格式, 相信每个程序员都跟它打过交道吧.使用 Go 语言时,也不可避免的要操作 JSON 数据,令人惊喜的是,Go 内置了序列化和反序列化 JSON 的功能,今天就来 ...
- swipe滑动操作
1.swipe() 滑动用法 swipe(self, start_x, start_y, end_x, end_y, duration=None) :Args: - start_x - 开始滑动的x坐 ...
- main process exited, code=exited, status=203/EXEC
问题描述: Oct :: c_3. systemd[]: Started etcd. Oct :: c_3. systemd[]: Starting etcd... Oct :: c_3. syste ...
- Mac开源文本编辑器Brackets 快捷操作有哪些?
Brackets for Mac是一款可靠,直观且易于使用的macOS应用程序,可用作HTML,CSS和JavaScript项目的代码编辑器.如果你能了解更多Mac开源文本编辑器Brackets 快捷 ...