Topcoder SRM625 题解】的更多相关文章

给出一个字符串求是palindrome和anagram的比率是多少. 知识点: 1 DBL_MAX 64位double的最长数大概是1.7E308,非常大非常大,比long long大上不知多少倍.故此大概能容纳150!的数值.不能容纳200!的数值 2 偶数的时候.不能有字母反复为基数次,否则不能组成palindrome 3 基数的时候,仅仅能有且仅仅有有一个字母反复为基数次,用于放在中间的,否则也不能组成palindrome 4 计算带反复数的全排列公式:P(N) / P(M1)/P(M2)…
Problem Statement   Let's say you have a binary string such as the following: 011100011 One way to encrypt this string is to add to each digit the sum of its adjacent digits. For example, the above string would become: 123210122 In particular, if P i…
好久没来写了,继续继续... Easy(250pts): //前方请注意,样例中带有zyz,高能预警... 题目大意:给你一个字符串,中间有一些是未知字符,请你求出这个字符串的回文子串个数的期望值.数据满足字符最多2500个. 我们考虑每一个子串,它对答案的贡献度就是它是回文串的概率,那么我们扫一遍就可以了, 这样做时间复杂度O(n^3),显然过不去. 我们考虑一下对于一个子串,在判断其是回文串的时候,我们一定是从中间往两边扫的,那么其实中间这些子串我们已经统计过答案了, 也就是说,我们通过枚举…
打卡- Easy(250pts): 题目大意:rating2200及以上和2200以下的颜色是不一样的(我就是属于那个颜色比较菜的),有个人初始rating为X,然后每一场比赛他的rating如果增加就会加D[i],如果减就会减D[i],但是如果rating小于0了就变成0,这个人不太喜欢比较厉害的颜色,所以他不能连续两次rating大于等于2200,求颜色变化的最多个数,保证比赛最多50场,D[i]<=10^9. 这套题还是很难的,所以我们来好好分析. 首先,样例0告诉我们贪心什么都是假的,不…
概览: T1 枚举 T2 状压DP T3 DP TopCoder SRM 667 Div.2 T1 解题思路 由于数据范围很小,所以直接枚举所有点,判断是否可行.时间复杂度O(δX × δY),空间复杂度O(1). 参考程序段 #include <bits/stdc++.h> using namespace std; class PointDistance { public: vector <int> findPoint( int x1, int y1, int x2, int y…
本题就是给出一个数k和一个数组,包含N个元素,通过每次添加�数组中的一个数的操作,最后须要得到1 - N的一个序列,不用排序. 能够从暴力法入手,然后优化. 这里利用hash表进行优化,终于得到时间效率是O(n*n)的算法,并且常数项应该非常低,速度还挺快的. 思路: 1 假设数组A[i]在1 -N 范围内,就利用bool B[]记录,这个数已经找到了: 2 假设A[i]的值之前已经找到了,那么就添加�k操作,得到新的值A[i]+k,看这个值是否找到了,假设没找到,就使用B记录,假设之前已经找到…
本题题意就是求有一组建筑物,问把这些建筑物的M个都统一到同一高度.须要的最小改动高度是多少? 题意隐含的意思就是由于是建筑物,所以不能降低,仅仅能添加了. 本题能够使用暴力搜索,由于数据量少. 可是事实上能够小排序.然后再求高度差的. 排序之后从第M个建筑物開始搜索.第M个建筑物与前面M个建筑物组成的建筑物群肯定是当前最小改动高度了. 一个题目要求的类和一个測试程序: #include <vector> #include <algorithm> #include <limit…
Easy(300pts): 题目大意:有n个盒子,一共有S个苹果,每个盒子有多少个苹果不知道,但是知道每个盒子的苹果下限和上限.现在要至少选择X个苹果,问如果要保证无论如何都能获得至少X个苹果,至少需要选择多少个盒子.数据满足n<=50. 首先第一个方面,如果我们选择的盒子的下限大于等于X,那么显然我们一定可以获得那么多的苹果, 所以我们将盒子的下限排序,然后从大到小累加即可. 另一方面,如果我们没有选择的盒子的上限小于等于S-X,那么显然我们也一定可以获得那么多的苹果, 于是我们再按照上限排序…
打卡! Easy(250pts): 题目大意:一个人心中想了一个数,另一个人进行了n次猜测,每一次第一个人都会告诉他实际的数和猜测的数的差的绝对值是多少,现在告诉你所有的猜测和所有的差,要求你判断心中所想的数是多少,如果无解输出-1,如果有多个解输出-2.数据满足n<=50,想的那个数在[1,10^9]中. 这题是不是很简单呀- 首先通过第一次我们就最多确定两个数了, 然后分别带到后面去看一下就可以了, 时间复杂度O(n),代码如下: #include <bits/stdc++.h> u…
日常打卡- Easy(250pts): 题目大意:你有n种汉堡包(统统吃掉-),每一种汉堡包有一个type值和一个taste值,你现在要吃掉若干个汉堡包,使得它们taste的总和*(不同的type值的个数)乘积越大,输出这个最大值.数据满足n<=50,type<=100,abs(taste)<=100000. 这题好像是个贪心,才不是呢啊哼- 首先我们发现,如果若干个汉堡包有同一个type值,那么我们可以把这一些汉堡包看成一个新的大汉堡包,它的type就是原来的type,它的taste就…