Codeforces 374B - Inna and Nine
原题地址:http://codeforces.com/problemset/problem/374/B
这道题没什么难度,但是考场上就是没写对。Round #220彰显了它的逗比性质——这道题的“标算”在赛场上被推翻了。而且最有意思的是,我最初的想法和被推翻的标算是一样的,所以过了最初的pretest,然后改了数据就跪了,考后的后两天也没想出当时的想法反例在哪里,直到昨晚瞄了一眼数据才相通……还是想法、编程能力,再不提升我就彻底要跪了
题目大意:给你n个数(n <= 10000),所有数都是1~9,你可以选择相邻的两个和为9的数字,用一个9替换掉它们两个,要求最后的序列中有尽可能多的9,求目标状态有多少种(例如254519有25919和29519两种合法的目标状态)
题目分析:这道题上来之后最先要注意到的是任何一个数只有可能合并零次或一次,所以从左往右扫,只要有两个相邻的数相加得9就把它们合并就好了,这样得到的一定是最优情况(即9最多的情况)。只有当一种情况我们会面临选择——连续k个数,它们任意相邻两个相加都得9(例如5454545这种情况)。这时我们需要面临一个选择:第i个数究竟是要和左边的数合并还是和右边的数合并?显然当k为偶数时我们没的选,否则就会不满足9的数量最多的条件。如果k是奇数,我们便会有\( \lfloor \frac{k}{2} \rfloor + 1\)种选择方式(不妨自己手推一下)。所以我们只需要处理每个连续的长度为奇数的极大序列,满足此序列中任意两个相邻的数和为9,\( \prod(\lfloor \frac{k}{2} \rfloor + 1)\)即为所求
//date 20131218
#include <cstdio>
#include <cstring>
#include <iostream> using namespace std; const int maxn = ; int n;
char num[maxn];
int l[maxn];
long long ans; int main()
{
scanf("%s\n", num + );
n = strlen(num + );
num[n + ] = ;
ans = 1L;
memset(l, , sizeof l);
for(int i = ; i <= n + ; ++i)
{
if(num[i - ] + num[i] - * '' == )l[i] = l[i - ] + ;
else if((l[i - ] > ) && (!(l[i - ] & )))ans *= ((l[i - ] >> ) + 1L);
} cout << ans << endl;
return ;
}
小注:我最初的的想法是将上面那个式子中的\( \lfloor \frac{k}{2} \rfloor + 1\)用2替换掉,也就是说只考虑了首位可能落单,但是忽视了中间也可能落单,还是没考虑清楚,还好相通之后在原来代码上改了一句话就AC了,继续加油!
Codeforces 374B - Inna and Nine的更多相关文章
- codeforces 374A Inna and Pink Pony 解题报告
题目链接:http://codeforces.com/problemset/problem/374/A 题目意思:给出一个 n 行 m 列 的棋盘,要将放置在坐标点为(i, j)的 candy 移动 ...
- Codeforces 374A - Inna and Pink Pony
原题地址:http://codeforces.com/contest/374/problem/A 好久没写题目总结了,最近状态十分不好,无论是写程序还是写作业还是精神面貌……NOIP挂了之后总觉得缺乏 ...
- CodeForces 400A Inna and Choose Options
Inna and Choose Options Time Limit: 1000ms Memory Limit: 262144KB This problem will be judged on Cod ...
- codeforces 499A.Inna and Pink Pony 解题报告
题目链接:http://codeforces.com/problemset/problem/499/A 题目意思:有两种按钮:1.如果当前观看的时间是 t,player 可以自动处理下一分钟,姑且理解 ...
- codeforces C. Inna and Huge Candy Matrix
http://codeforces.com/problemset/problem/400/C 题意:给你一个n*m的矩阵,然后在矩阵中有p个糖果,给你每个糖果的初始位置,然后经过x次顺时针反转,y次旋 ...
- Codeforces 374C - Inna and Dima
374C - Inna and Dima 思路:dfs+记忆化搜索 代码: #include<bits/stdc++.h> using namespace std; #define ll ...
- Codeforces 374D - Inna and Sequence
374D - Inna and Sequence 思路: 树状数组+二分 因为被删的点最多N=1e6个,所以复杂度N*logN*logN 前段时间做过一道一样的题,这类题基本套路二分找没删除前的位置 ...
- codeforces C. Inna and Huge Candy Matrix 解题报告
题目链接:http://codeforces.com/problemset/problem/400/C 题目意思:给出一个n行m列的矩阵,问经过 x 次clockwise,y 次 horizontal ...
- Codeforces I. Inna and Nine(组合)
题目描述: Inna and Nine time limit per test 1 second memory limit per test 256 megabytes input standard ...
随机推荐
- 正则表达式模块re
正则表达式通过特定的式子匹配某种类型的字符串.对字符串进行匹配验证或者从大量的字符串里提取出特定的信息. 正则表达式包含普通字符和特殊字符.大部分的普通字符如‘A’或‘0’可以简单的来匹配自己.如te ...
- ubuntu 设置显示器的亮度
ubuntu电脑重新启动后,亮度都变成了最亮.似乎也没胡地方可以设置.只好通过写个脚本来做这个事了. # -*- coding: utf-8 -*- import dbus bus = dbus.Se ...
- 给UITextField左侧加一个小图标
xcode 6.1 File-New-Project.. iOs-Application-Simple View Application 1.写一个自定义JSTextField类,继承UITextFi ...
- 十二、mysql sql_mode 简学
.一般默认情况下sql_mode默认为空,也就是不严格的sql检查 .如果sql_mode为空的情况下,测试: )); //定义一个name字段长度为定长2的tt3表 insert into tt3 ...
- eclipse里maven项目An error occurred while filtering resources解决办法(转载)
转自:http://liyanjie918.blog.163.com/blog/static/20227290201581143110105/ 在使用eclipse构建maven项目时,突然出现错误提 ...
- 【学习总结】 init & initWithFrame & initWithCoder
//当我们所写的程序里没用用Nib文件(XIB)时,用代码控制视图内容,需要调用initWithFrame去初始化 - (id)initWithFrame:(CGRect)frame { if (se ...
- 获取局域网ip
显然不可使用基于request请求的request.getRemoteAddr()这个是获取广域网内的服务器地址,比如我请求百度使用这个方法就可以获取到百度的服务器地址 那么InetAddress的I ...
- MySQL与Oracle主键Query性能测试结果
测试结果总结如下: 1. 按主键读:SQL形式:SELECT * FROM table WHERE id=?. 1.1. 主键为数字.如果所有ID均不存在,纯比较SQL解析能力.MySQL解析SQL的 ...
- shell 后台执行命令
shell 后台执行命令方法: 1. nohup cmd & 后台会生成 nohup.out 文件 2.cmd >/路径/xx.log & 后台生成 xx. ...
- DB天气app冲刺第十天
好了 这是第十天了,按照白板任务上的来说的话,今天没有完成,所以等一下还要继续看看今天能不能把他做完,今天出的问题在于我又自己调整了一下UI设计,因为发现以前的设计发面有重复,浪费了屏幕.所以还不如省 ...