contest1002专题

Contest1002 - HHU ACM 综合训练1 B题 Friendship of Mouse(朴素算法)

题意:给定一个小写字母组成的序列,求问其中相同字母之前的最小距离,若不存在相同字母则输出-1。 思路:每次遍历,若找到相同的则更新最短距离,然后break。时间优化在于每次更新完最短距离,下次遍历就可以在最短距离之内遍历。 #include <iostream> #include <stdio.h> #include <string.h> using namespace std; i

Contest1002 - HHU ACM 综合训练1 C题 Boxes and Balls(找规律)

题意:给定一个盒子,盒子里装着n个球。每次操作如下:给定一个空盒子,所有装有球的盒子都要给空盒子一个球,之后将没有球的盒子拿走按球个数排序。排序后的数字序列看做一个状态,有时候每次操作后状态保持不变。现在给定一个数m,问在不超过m的情况下可以保持状态不变的初始球数最大为多少。 思路:找规律。会发现只要出现1,2,3,4....这样的序列即可满足状态不变要求,即m为1+2+3+4+....的和。因

Contest1002 - HHU ACM 综合训练1 A题 Kingdom of Black and White(朴素)

题意:给定一串01序列,序列的值表示为序列中连续的0或1的个数的平方相加的和。最多可以改变其中一个数字变为0或1,求序列最大值。 思路:很朴素的想法,一开始我以为有什么简便算法,然而并没有= = 首先离散化,数组存储的是连续的0或1的个数,之后对这个数组进行遍历,每次把a[i]+1的平方+a[i+1]-1的平方计算出来的和与a[i]的平方+a[i+1]的平方计算出来的和相比较,若更新后的值大,

Contest1002 - HHU ACM 综合训练1 E题 Mouse and Parenthesis(线段树+括号匹配)

题意:给定一个平衡序列(即左右括号完全匹配),询问其中两个位置的括号进行交换后是否仍为平衡序列 思路:看到题目完全想不到用线段树做(微笑)。 首先终于学会了判断括号匹配的方法:(为1,)为-1,依次相加,中间结果不能为负数(即前缀和不为负数)且最后和为0即可完全匹配。 所以听了许多人的讲解我也终于明白这道题怎么做了= = 首先如果两个位置的括号一样并不影响原有平衡,将)括号向右移动也不会影