2018 Multi-University Training Contest 1 1002 /hdu6299 贪心 1007 /hdu6304 找规律

1002 /hdu6299 Balanced Sequence

题意:
给出 n 个括号串,要把这 n 个串任意排序连接成一个串,求最后连接成的串中,最长匹配子序列。
题解:
所有 n 个串中,本身能匹配的就先匹配掉,最后剩下三种串, "(((" 、 ")))((((" 、 ")))))" 。给这三种串按以下优先级排序:
1、"((((" ;
2、"))))((((" 中 ')' < '(' 的 , 按 ')' 从小到大排序 ;
3、"))))((((" 中 ')' >= '(' 的 , 按 '(' 从大到小排序 ;
4、")))))" ;


###[1007 /hdu6304 Chiaki Sequence Revisited](acm.hdu.edu.cn/showproblem.php?pid=6304) 题意: 给出序列生成函数,if(n<=2) a[n] = 1; else a[n] = a[n-a[n-1]] + a[n-1-a[n-2]]; T组数据,每次求前 n 项和。 1≤T≤1e5,1≤n≤1e18 。 题解: 找规律,打表前面几个数,1, 1, 2, 2, 3, 4, 4, 4, 5, 6, 6, 7, 8, 8, 8, 8, 9, 10, 10, 11, 12, 12, 12, 13, 14, 14, 15, 16, 16, 16, 16, 16, 17, 18, 18, 19, 20, 20, 20, 21, 22, 22, 23, 24, 24, 24, 24, 25, 26, 26, 27, 28, 28, 28, 29, 30, 30, 31, 32, 32, 32, 32, 32, 32, 33, 34, 34, 35, 36, 36, 36, 37, 38, 38, 39, 40, 40, 40, 40, 41, 42, 42, 43, 44, 44, 44, 45, 46, 46, 47, 48, 48, 48, 48, 48, 49, 50, 50, 51, 52, 52, 52, 53, 54, 54, 55, 56, 56, 56, 56, 57, 58, 58, 59, 60, 60, 60, 61, 62, 62

发现,
出现1次的:3,5,7,9...... 公差为2的等差数列
出现2次的:2 ,6,10,14....... 公差为4的等差数列
出现3次的:4,12,20,28...... 公差为8的等差数列
出现4次的:8 ,24,40,56..... 公差为16的等差数列
......
每个数出现次数就是 lowbit() 。

所以二分出第 n 个是哪个数,再等差数列求和即可。

posted @ 2018-08-12 19:40  v9fly  阅读(221)  评论(0编辑  收藏  举报