Codeforces Round #340-B. Chocolate-水+坑
2016-01-24 02:24
218 查看
http://codeforces.com/contest/617/problem/B
给你 n个字符,01串
让你在2个相邻字符间加一分隔符 ,要求 分隔后的每一段至少包含一个 1
求分隔方案数
直接数1之间多少个0即可。。。
答案就是 (x1+1)*(x2+1)*(x3+1).....
注意题目坑点。。如果输入全0串。要输出0...............
给你 n个字符,01串
让你在2个相邻字符间加一分隔符 ,要求 分隔后的每一段至少包含一个 1
求分隔方案数
直接数1之间多少个0即可。。。
答案就是 (x1+1)*(x2+1)*(x3+1).....
注意题目坑点。。如果输入全0串。要输出0...............
#include <cstdio> #include <cmath> #include <cstring> #include <string> #include <algorithm> #include <queue> #include <map> #include <set> #include <stack> #include <iostream> using namespace std; double eps=0.000001; __int64 tm[105]; int main() { __int64 st,i,j,k; // for (i=1;i<=50;i++) // printf("%d %d ",1,0); __int64 n; scanf("%I64d",&n); __int64 line=0; __int64 ans=1; int zero=0; for (i=1;i<=n;i++) { scanf("%I64d",&tm[i]); if (tm[i]==1) zero=1; } for (i=1;i<=n;i++) { if (tm[i]==1){line=i+1;break;} } __int64 flag=0; if (line>n) flag=1; while(!flag) { __int64 tmp=1; for (i=line;i<=n;i++) { if(i==n) flag=1; if (tm[i]==0) {tmp++;} else {line=i+1;break;} } if ((!flag)||(flag&&tm ==1)) ans*=tmp; } if (zero==0) printf("0\n"); else printf("%I64d\n",ans); return 0; }
相关文章推荐
- Subsets II -- LeetCode
- [.net 面向对象程序设计进阶] (20) 反射(Reflection)(上)利用反射技术实现动态编程
- postgresql安装简单记录
- SQLite的JDBC的编写
- 关于python中如何导入pygame模块(超详细)
- 操作系统核心原理-7.设备管理:I/O原理
- OS存储器管理(一)
- 双管道cmd反弹程序
- Java 异常处理的捕获形式
- (spring-第15回【IoC基础篇】)容器事件
- solr安装-tomcat+solrCloud构建稳健solr集群
- solrCloud+tomcat+zookeeper集群配置
- 小笔记
- python的单例模式与讨论
- SolrCloud原理介绍
- 被 Apple Dev 帐号坑了好几天
- Edge——代号是Project Spartan Windows 10的缺省浏览器
- 感慨一下
- VS2013与MySql建立连接;您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库 EF6使用Mysql的技巧
- ubuntu14.04安装gnu/emacs24