【TopCoder】SRM151 DIV2 练习总结】的更多相关文章

第一次做完整的SRM题,刷完感觉萌萌哒,不过自己对java中很多细节不熟练,还要边做题边google. 250分的题:判断字符串序列是否是前缀码,如果不是,返回第一个违反前缀码规则的字符串. 简单的暴力方法,要积累的是java中startsWith的用法: public boolean startsWith(String prefix) 如果prefix是调用该函数的字符串的前缀,返回true,否则返回false.从实际经验来看,对大小写是敏感的,即No不是not的前缀. 完整代码连接:GitH…
暴力枚举 1 #include <iostream> #include <vector> #include <string> using namespace std; class FoxAndClassroom{ public: string ableTo(int n , int m){ ; i < n ; ++ i ){ ; j < m; ++ j ){ vector<vector<bool> > visitFlag(n,vecto…
太弱了,太弱了! A:基本的判断吧,然后就是边界问题,写了好久,结果发现时房间第二个交的.. B:真心跪了,还好想出来了,思路想的太慢太慢,结果交上去,落后太多,不过HACK时很多人挂了, 这也是DIV1的A题.做法是: 如果对于一个long long 的数质因数分解师很难做到的. 但是题目告诉了m/2个数,m是分解后质因数的个数. 然后我们想先刷法求出1-10^6的质因数. 如果n有大于10^6的质因数最多2个(n<=10^18)对吧. 然后已经写出了1个,一定会写出一个. 所以 我们对其用1…
这是我的第一次打TC,感觉打的一般般吧.不过TC的题目确实挺有意思的. 由于是用客户端打的,所以就不发题目地址了. 300分的题: 这题大意是有一段序列只包含+和数字0~9. 一段序列的操作是,从头扫到尾,遇到+就对计数器+1.遇到数字就计算abs(num-count)的值,并加到sum中. 题目要求重新排序序列,使得sum最小. 由于是abs,最小值自然是0,于是就是要构造0. 由于计数器只会网上增,所以数字我肯定从小到大排,于是对于某个数,计数器不足这个数,那么就需要增加计数器,否则就计算a…
题意: For an integer n, let F(n) = (n - 0^2) * (n - 1^2) * (n - 2^2) * (n - 3^2) * ... * (n - k^2), where k is the largest integer such that n - k^2 > 0. You are given three long longs lo, hi and divisor. It is guaranteed that divisor will be a prime n…
8 A:模拟 9:B:终于看懂题目... 题意:最多分解K次 每分钟一个数可以分解成两个数 或者-1: 关键字:DP,记忆花搜索. DP[I][J]=min(dp[i][j],1+max(dp[ii][jj],dp[i-ii][j-jj-1]); 1 #include<iostream>  2 #include <string>  3 #include <vector>  4 #include<cmath>  5 #include <string.h&…
Topcoder 658 div2 500 加强版 不过给了<=20,暴力肯定不行. 然后想DP方程,先二分可能需要的最大次数mid; 然后根据 mid 构造 DP方程. 假设x[i]需要 x个9 ,y个3,z个1,x*9+y*3+z>=x[i]; 然后求出dp[n][[x]][y][z]<=mid 是否 符合. 转移方程为:dp[i+1][n9+m9][m3+n3]=min(dp[i+1][n9+m9][n3+m3],dp[i][n9][n3]+max(0,x[i]-9*m9-3*m3…
\(>Topcoder \space Srm \space 673 \space Div2 \space 1000 \space BearPermutations2<\) 题目大意 : 对于一个长度为 \(n\) 的排列,定义其的贡献为对其建笛卡尔树,树上有两个儿子的节点其左右儿子在原排列中的距离之和,给出 \(n, Mod\),求所有长度为 \(n\) 的排列的贡献之和对 \(Mod\) 取模的值 \(1 \leq n \leq 100\) 解题思路 : 考虑一个最暴力的 \(dp\) ,设…
\(>Topcoder \space Srm \space 671 \space Div2 \space 1000 \space BearDestroysDiv2<\) 题目大意 : 有一个 \(W \times H\) 的网格,每一格上有一棵树和一个随机字母 \(S\) 或 \(E\) ,有一只熊在左上角,按从上到下从左到右的顺序遍历每一行每一列,如果其遇到一棵可以推倒的树,就尽可能按照字母表示的方向 (向下,向右) 推倒它,然后其推倒方向的下一棵树就不能被推倒了,同时树不能被推倒在边界之外…
今天第一次做topcoder,没有比赛,所以找的最新一期的SRM练习,做了第一道题. 题目大意是说 给一个数字字符串,任意交换两位,使数字变为最小,不能有前导0. 看到题目以后,先想到的找规律,发现要从后向前找数字串中最小的数,放在数字串中尽可能靠前的位置,数字最小.用这个贪心.找规律的方法,写代码,然后提交测试. 但最后,写出的代码不能过几组数据,感觉边界的数据非常容易考虑不周而出错,比如第一个数字是否为最小,数字串中是否有零等. 看了其他人的代码(http://www.cnblogs.com…