bzoj 1802: [Ahoi2009]checker
来源:互联网 发布:mac怎么批量删除文件 编辑:程序博客网 时间:2024/06/06 03:08
题意:一个1*n的棋盘,有些格子是白的,有些是红的。一个棋子可以跳过与他相邻的棋子来移动(落点不能有棋子),跳过的那个会被吃掉。一开始最左边有个棋子,要把它移到最右边。开始前可以随便放棋子,开始后可以在红格子放棋子。问开始前最少需要放几个棋子,以及在这种情况下开始后最少要放几个。
题解:dp
先说个结论吧:假如有两个连续的红格,游戏开始后可以通过这两个红格使一个棋子走到任意位置。两个都放一个棋子,就可以把右边那个向左跳,使左边那个格子有棋子,然后再在左边那个红格放棋子,这样红格左边第二格也有棋子了。按照这种方法就可以无限走下去了。右边同理。
既然要让最左边的棋子走到最右边,就要让所有偶数位上都有棋子给它跳。如果没有两个连续的红格,就只好一开始就把偶数位上的白格放上棋子,开始后再在偶数位红格上放。
如果有连续的红格,就dp一下。
代码:
#include<bits/stdc++.h>using namespace std;int n,a[1010];long long f[1010];//f[i]表示使i位置有棋子的最小棋子数int main(){ scanf("%d",&n); bool tf=0; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } for(int i=2;i<n;i++) if(a[i]&&a[i+1]) { tf=1; break; } if(!tf) { int ans[2]={0,0}; for(int i=2;i<=n;i+=2) ans[a[i]]++; printf("%d\n%d",ans[0],ans[1]); } else { puts("0"); memset(f,63,sizeof(f)); for(int i=2;i<=n;i++) if(a[i]) f[i]=1; for(int i=2;i<n;i++) { if(a[i]&&a[i+1]) { for(int j=i-1;j>1;j--) f[j]=min(f[j],f[j+1]+f[j+2]); for(int j=i+2;j<=n;j++) f[j]=min(f[j],f[j-1]+f[j-2]); } } long long ans=0; for(int i=2;i<=n;i+=2) ans+=f[i]; printf("%lld",ans); }}
阅读全文
0 0
- bzoj 1802: [Ahoi2009]checker
- 1802: [Ahoi2009]checker
- bzoj1802: [Ahoi2009]checker
- bzoj 1801: [Ahoi2009] chess 中国象棋
- 【bzoj 1801】: [Ahoi2009]chess 中国象棋
- 【bzoj 1798】[AHOI2009]维护序列
- 【BZOJ 1801】[Ahoi2009]chess 中国象棋
- bzoj 1801 [Ahoi2009]chess 中国象棋
- bzoj 1801: [Ahoi2009]chess 中国象棋
- BZOJ 1801 AHOI2009 Chess 中国象棋
- BZOJ 1798: [Ahoi2009]Seq 维护序列seq
- bzoj 1800 [Ahoi2009] fly 飞行棋
- bzoj 1799: [Ahoi2009]self 同类分布 题解
- bzoj 1797: [Ahoi2009]Mincut 最小割
- BZOJ 1801 AHOI2009 中国象棋 递推
- BZOJ 1800 AHOI2009 fly 飞行棋 暴力
- bzoj 1798: [Ahoi2009]Seq 维护序列seq
- 【BZOJ 1798】 [Ahoi2009]Seq 维护序列seq
- nginx下redirect问题
- MFC的二进制文件读写
- Spark Shell编写第一个代码
- 《算法导论》Chapter6 堆
- python---pymsql+flask_sqlalchemy连接数据库
- bzoj 1802: [Ahoi2009]checker
- 谷歌企业文化建设分析
- openCV任意几何形状感兴趣区域(ROI)提取
- python文案处理
- 【java】打印月历
- 使用托管快照创建作为 Azure 托管磁盘存储的 VHD 的副本
- The Apache Tomcat installation at this directory is version 8.5.6A Tomcat 8.0
- IDEA跑两个模块1099端口占用问题解决方案
- GMIC北京2018即将启幕 我们在未来等你!