题目描述

若有两个红格相邻
  第一问的答案为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 ;
}

最新文章

  1. 各种url编码
  2. centos6配置网卡
  3. 框架Maven笔记系列 一 基础
  4. tomcat 虚拟节点
  5. AEAI Portal V3.5.2门户集成平台发版说明
  6. 使用网站processon在线作图
  7. Bitset位图
  8. Java_Web使用简单的批处理操作
  9. HTML5的Server-Sent Events功能的使用
  10. asp.net mvc4 使用java异步提交form表单时出现[object object] has no method ajaxSubmit
  11. VMware三种链接方式
  12. ThinkPHP 框架执行流程分析
  13. (cljs/run-at (JSVM. :all) &quot;细说函数&quot;)
  14. 定制Three.js中Material属性
  15. P5301 [GXOI/GZOI2019]宝牌一大堆
  16. linq中分组查询而且获取每个分组中的第一条记录,数据用于分页绑定
  17. 关于K8S证书生成方面的脚本草稿
  18. Java与c#的一些细节区别
  19. mysql学习目录
  20. mysql设置更改root密码、mysql服务器的连接、mysql常用命令

热门文章

  1. JAVAWEB之增删改查
  2. 浅浅的叙WPF之数据驱动与命令
  3. gitblit服务器:用户、团队、权限管理
  4. Java之路---Day12(多态)
  5. echarts设置横坐标的信息竖向排放
  6. Django之mysql数据库配置
  7. centos 修改默认启动内核,及删除无用内核
  8. 【解决】挂载NFS服务时,不同共享客户端间的数据不同步
  9. 执行shell脚本时提示/bin/sh^M: bad interpreter: No such file or directory
  10. django项目中form表单和ajax的文件上传功能。