BZOJ 1802: [Ahoi2009]checker
2024-10-21 07:47:05
若有两个红格相邻
第一问的答案为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 ;
}
最新文章
- 各种url编码
- centos6配置网卡
- 框架Maven笔记系列 一 基础
- tomcat 虚拟节点
- AEAI Portal V3.5.2门户集成平台发版说明
- 使用网站processon在线作图
- Bitset位图
- Java_Web使用简单的批处理操作
- HTML5的Server-Sent Events功能的使用
- asp.net mvc4 使用java异步提交form表单时出现[object object] has no method ajaxSubmit
- VMware三种链接方式
- ThinkPHP 框架执行流程分析
- (cljs/run-at (JSVM. :all) ";细说函数";)
- 定制Three.js中Material属性
- P5301 [GXOI/GZOI2019]宝牌一大堆
- linq中分组查询而且获取每个分组中的第一条记录,数据用于分页绑定
- 关于K8S证书生成方面的脚本草稿
- Java与c#的一些细节区别
- mysql学习目录
- mysql设置更改root密码、mysql服务器的连接、mysql常用命令