05:LGTB 与偶数

总时间限制: 
10000ms

单个测试点时间限制: 
1000ms

内存限制: 
65536kB
描述

LGTB 有一个长度为 N 的序列。当序列中存在相邻的两个数的和为偶数的话,LGTB 就能把它们删掉。

LGTB 想让序列尽量短,请问能将序列缩短到几个数?

输入
第一行包含一个数 N 代表序列初始长度
接下来一行包含 N 个数 a1, a2, ..., aN,代表序列
输出
输出包含一个数代表操作后序列最短长度
样例输入
10
1 3 3 4 2 4 1 3 7 1
样例输出
2
提示
对于 50% 的数据,1 ≤ N ≤ 1000
对于 100% 的数据,1 ≤ N ≤ 1e5
, 0 ≤ ai ≤ 1e9
【思路】
一开始dp死活做不出来...
栈 边读边处理....
不太明白为什么处理顺序对答案没影响...
【code】

//05:LGTB 与偶数
#include<iostream>
#include<cstdio>
using namespace std;
int n,top,sz[100009],stack[100009];
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&sz[i]);
        if(!top)stack[++top]=sz[i];
        else
        if(((stack[top]+sz[i])&1)==0)
        top--;
        else
        stack[++top]=sz[i];
    }
    printf("%d\n",top);
    return 0;
}

时间: 2024-12-25 14:43:15

05:LGTB 与偶数的相关文章

2016.8.29 LGTB解题报告

考试总结: 1.这道题还是花了不少的时间的,特别是对拍啊之类的,总是放不下,然后有一些实现的问题导致改错也改了很久: 解决方案:下一次在决定写程序的时候,一定要先在草稿纸上把实现算法的流程基本上写一次,精确到循环语句,判断语句的框架,把所有的情况都完整地考虑一次,确定没有问题了再写: 这道题犯了和上一套第二题同样的问题:证明的时间过长: 解决方案:在解题时把流程规范化,在证明了算法正确性以后就放下了,不要总是把它提出来! 2.这道题的数据范围特别小,所以可以很容易地想到状压DP,然后考虑到互质的

列表(list)

列表是最常见的一种数据形式,是一种有序的序列,可以随时添加和删除其中的元素.它可以把大量的数据放在一起,可以对其进行集中处理. 列表是以方括号"[]"包围的数据集合,不同成员间以","分隔.列表中可以包含任何数据类型,也可以包含一个列表.列表可以通过序号来访问其中的成员. 1.列表内置方法 list.append(obj) 在列表末尾添加新的对象 list.clear() 删除列表中的所有项,相当于 del a[:] list.count(obj) 统计某个元素在列

各种推导式

###适用各种推导式的详细格式### variable = [out_exp_res for out_exp in input_list if out_exp == 2] out_exp_res ###列表生成元素表达式,可以是有返回值的函数 for out_exp in input_list ###迭代input_list将out_exp传入out_exp_res表达式中 if out_exp ==2 ### 根据条件过滤哪些值可以 列表推导式: ###30以内能被3整除的数 print([i

seq用法总结

基本用法 seq [选项]... 尾数 seq [选项]... 首数 尾数 seq [选项]... 首数 增量 尾数 以指定增量从首数开始打印数字到尾数. 选项: -f, --format=格式 使用printf 样式的浮点格式 -s, --separator=字符串 使用指定字符串分隔数字(默认使用:\n) -w, --equal-width 在列前添加0 使得宽度相同 例: 1.尽可能显示大整数 [plain] $ seq --format=%1.f 1000000 1000001 显示 1

各种推导式详解

各种推导式详解 推导式的套路 之前我们已经学习了最简单的列表推导式和生成器表达式.但是除此之外,其实还有字典推导式.集合推导式等等. 下面是一个以列表推导式为例的推导式详细格式,同样适用于其他推导式. variable = [out_exp_res for out_exp in input_list if out_exp == 2] out_exp_res: 列表生成元素表达式,可以是有返回值的函数. for out_exp in input_list: 迭代input_list将out_exp

python-生成器进阶~各种推导式

列表推导式 例一:30以内所有能被3整除的数 列表推导式1 multiples = [i for i in range(30) if i % 3 is 0] print(multiples) # Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27] 例二:30以内所有能被3整除的数的平方 列表推导式2 例三:找到嵌套列表中名字含有两个'e'的所有名字 嵌套列表表达式 names = [['Tom', 'Billy', 'Jefferson', 'Andrew'

习题作业day14

1,整理今天的博客,写课上代码,整理流程图. 2,用列表推导式做下列小题 (1) 过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母 l = ['abcd','ft','asd'] l1 = [i.upper() for i in l if len(i) <3] print(l1) (2) 求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表 l1 = [(x,y) for x in range(6) if x%2 is 1 for y in range(6) if y%

4-4日 列表推导式,生成器推导式

1,列表推导式就是在列表中进行for 循环if语句判断,最多两个for,一个if判断 #求1到30 被3整除的数的平方 li = [i*i for i in range(1,31)if i%3 == 0] print(li) li = [i for i in range(1,101)if i%2 == 0] l2 = [i for i in range(1,101)if i%2 == 1] print(li) print(l2) #求列表中带两个'e'名字 names = [['Tom', 'B

各种推导式玩法

推导式套路 之前我们已经学习了最简单的列表推导式和生成器表达式.但是除此之外,其实还有字典推导式.集合推导式等等. 下面是一个以列表推导式为例的推导式详细格式,同样适用于其他推导式. variable = [out_exp_res for out_exp in input_list if out_exp == 2] out_exp_res: 列表生成元素表达式,可以是有返回值的函数. for out_exp in input_list: 迭代input_list将out_exp传入out_exp