Topcoder SRM579 1000pts】的更多相关文章

石头剪刀布QAQ 一看是个很油的概率dp 首先一看你很快能得出状态的表示F[i][r][p][s] 然后只要考虑r,p,s出现的次数来进行概率dp就好了 具体实现的时候细节很多(少) 如果预处理一下组合数常数短了一截.但是自信的我认为50^4根本不慌.最后还是过了. #include<map> #include<stack> #include<queue> #include<cstdio> #include<string> #include<…
(15) 也是 DIV1 500 题意是给定 一个无向图 删去一条边以后 可不可以是完全二叉树. 细节点很多,开始做法居然求到桥去了,最近强联通写傻了. 最多1024-1个点 1024-1条边枚举 所以: 先枚举要删去的边,然后进行判断. 判断是否是一颗完全二叉树的话 要一个标记deep深度 max deep==h 然后还要看是否整个图强联通 还有一点 点的度 为1 ,2 ,3 其中度为2的只有一个 ,度为1的有2^(h-2)个 code: #include<iostream> #includ…
kawigiEdit插件可以提高 TopCoder编译,提交效率,可以管理保存每次SRM的代码. kawigiEdit下载地址:http://code.google.com/p/kawigiedit/downloads/list 我用C++,以后设置是设置C++的,其他的类似. 一.添加kawigiEdit插件. 1. 打开TC客户端–Option–Editor 2. 点击Add,在弹出的 Name填写插件名称,随便写个: EntryPoint: 写 kawigi.KawigiEdit (不可更…
今天第一次做topcoder,没有比赛,所以找的最新一期的SRM练习,做了第一道题. 题目大意是说 给一个数字字符串,任意交换两位,使数字变为最小,不能有前导0. 看到题目以后,先想到的找规律,发现要从后向前找数字串中最小的数,放在数字串中尽可能靠前的位置,数字最小.用这个贪心.找规律的方法,写代码,然后提交测试. 但最后,写出的代码不能过几组数据,感觉边界的数据非常容易考虑不周而出错,比如第一个数字是否为最小,数字串中是否有零等. 看了其他人的代码(http://www.cnblogs.com…
TopCoder                        250                              500                                         1000                                589 div2 简单题 简单的分析题! //非常好的DP!硬币反转!待补 590 div2 简单题!模拟五子棋判断 简单搜索,模拟围棋!  蛮好的DP!递推!掌握技巧! 591 div2 简单题 简单题,暴力…
本文写于9月初,是利用Topcoder准备应聘时的机试环节临时补习的C++的一部分内容.签约之后,没有再进行练习,此文暂告一段落. 换句话说,就是本文太监了,一直做草稿看着别扭,删掉又觉得可惜,索性发布掉. 字符串string基本操作 1.用stringstream控制流,格式化输出 //SRM144 D2L1 #include <sstream> ... string res; /* .. .*/ stringstream ss; ss<<h<<":&quo…
在TopCoder下载好luncher,网址:https://www.topcoder.com/community/competitive%20programming/ 选择launch web arena 或者选择 launch applet arena(一般选择这个,这个会下载类似于客户端的软件到电脑,苹果和windows都可以),文件是一个.jnlp类型的文件. 然后会提示安装最新的java jre 按照提示安装即可. 如果遇到不满足java 安全级别失败的问题,请打开Java控制面板 在…
body { font-family: Monospaced; font-size: 12pt } pre { font-family: Monospaced; font-size: 12pt } Problem Statement      You have an array with N elements. Initially, each element is 0. You can perform the following operations: Increment operation:…
周赛时遇到的一道比较有意思的题目: Problem Statement      There are N rooms in Maki's new house. The rooms are numbered from 0 to N-1. Some pairs of rooms are connected by bidirectional passages. The passages have the topology of a tree. That is, there are exactly N-…
 第一次做TC,不太习惯,各种调试,只做了一题...... Problem Statement     Fox Ciel is going to play Gomoku with her friend Fox Jiro. Ciel plays better, so before they start she allowed Jiro to put some of his pieces on the board. You are given a vector <string> board tha…
一. Arena插件配置 1. 下载Arena 指针:http://community.topcoder.com/tc?module=MyHome 左边Competitions->Algorithms->Single Match Rounds->Launch Arena->Load Competition Arena 2. 下载插件 指针:http://community.topcoder.com/tc?module=Static&d1=applet&d2=plug…
题目连接:https://community.topcoder.com/stat?c=problem_statement&pm=1889&rd=4709 题意:给一张n*m的地图,上面有些路不能走,每次只能向左走或者向下走.问从(0,0)走到(n,m)一共有多少种走法. 动态规划,先哈希标记出所有无法走的道路,然后做DP. 转移方程: 如果(i-1,j)可以走到(i,j):dp(i,j)+=dp(i-1,j) 如果(i,j-1)可以走到(i,j):dp(i,j)+=dp(i,j-1) //…
题目链接:https://community.topcoder.com/stat?c=problem_statement&pm=1259&rd=4493 题意:给一串数字,求出最长的波动序列.波动的定义是一个数相邻的两个数同时比他大或者同时比他小,形象的看成一个波动的三角函数吧. 定义dp(i)为到第i个数字时的最长波动序列长度,我们发现仅有一维的数组是存不下状态的,还应该再维护一个量,那就是第i个数字的时候他是波峰还是波谷.于是dp数组扩展成了dp(i,k),k可以取0或1分别表示是波峰…
div2 250pts MiddleCode 题意:s串长度为奇数时,将中间字符取掉并添加到t末尾:长度为偶数时,将中间两个较小的字符取掉并添加到末尾. 分析:直接做,学习了一下substr(s, pos, len)返回s中从pos开始的长度为len的字串. 代码: class MiddleCode { public: void Remove(string &s, int pos) { int len = s.size(); string t = ""; || pos >…
最近一场TC,做得是在是烂,不过最后challenge阶段用一个随机数据cha了一个明显错误的代码,最后免于暴跌rating,还涨了一点.TC题目质量还是很高的,非常锻炼思维,拓展做题的视野,老老实实补题吧. div2 250pts 题意:判断s去掉一个字符后能否和t一样. 代码: class DecipherabilityEasy { public: string check(string s, string t) { int n = s.size(); int m = t.size(); !…
250pts   PeriodicJumping 题意:从起点开始,每次按找数组jump给定的长度,即jump[0], jump[1], jump[2].....jump[n-1], 向各个方向跳,跳完后从从头开始,问最后能否达到(x,0). 限制:|x| <= (int)1e9,n <= 50, 1 <= len[i] <= (int)1e9. 分析: 题解分析的很详细,每次跳完后可达的范围离原点的距离总是一个区间[a,b],考虑下一次跳的长度r之后,可达的范围, (1). r…
http://community.topcoder.com/stat?c=problem_statement&pm=12975 简单题 #include <cstdlib> #include <vector> using namespace std; class EllysNumberGuessing { public: int getNumber(vector <int> guesses, vector <int> answers) { const…
http://community.topcoder.com/stat?c=problem_statement&pm=12967 计算一个字符串里Palindrome的数量.我的DP方法需要n^2的空间. #include <vector> #include <string> using namespace std; class PalindromicSubstringsDiv2 { public: int count(vector <string> S1, ve…
http://community.topcoder.com/stat?c=problem_statement&pm=12995 简单题 class PackingBallsDiv2 { public: int minPacks(int R, int G, int B) { int sum = 0; sum += (R / 3); sum += (G / 3); sum += (B / 3); R %= 3; G %= 3; B %= 3; while ((R > 0 || G > 0…
http://community.topcoder.com/stat?c=problem_statement&pm=13035 矩阵棋盘的题,比较典型.可以定两条column夹住,然后上下扫,上下扫过程中有一点DP的东西,这样负责度是o(n^3) #include <vector> #include <algorithm> #include <iostream> using namespace std; class TheMatrix { public: int…
http://community.topcoder.com/stat?c=problem_statement&pm=13005 好题.最暴力是试验2^n种跳法.然后有从结果入手,那么最终的左右是i, j,有n^2种(每种4个跳法),然后花O(n)的时间去验证. 最后的正解比较有意思,就是观察到必须向里跳才有意义,那么只有RRRRRR...LLLLLL这种形式的才满足,于是遍历这个R和L的分界点就行了. #include <vector> #include <algorithm&g…
http://community.topcoder.com/stat?c=problem_statement&pm=13040 DFS集合全排列+LCM和GCD.但事实上,有更简单的算法,列在下面,就是观察到不能整除x的对我们无效. #include <vector> #include <iostream> using namespace std; class LCMSetEasy { public: string include(vector <int> S,…
http://community.topcoder.com/stat?c=problem_statement&pm=13091 解方程,对中国孩子太简单了. #include <vector> #include <iostream> using namespace std; class LongLongTripDiv2 { public: string isAble(long long D, int T, int B) { long long diff = (D - T);…
http://community.topcoder.com/stat?c=problem_statement&pm=13147 此题关键在于发现ABAB的组合最多有26*26种,可以穷举,然后用判断子序列~ #include <vector> #include <iostream> using namespace std; class LongWordsDiv2 { public: string find(string word) { for (int i = 0; i &…
https://www.topcoder.com/stat?c=problem_statement&pm=13146&rd=15852 // Need carefully calc the shift and the final index #include <vector> using namespace std; class ChooseTheBestOne { public: int countNumber(int N) { vector<int> vec(N…
https://community.topcoder.com/stat?c=problem_statement&pm=13192 #include <vector> #include <queue> #include <functional> using namespace std; class BoxesDiv2 { public: vector<int> power2; int findSize(vector <int> candyC…
http://community.topcoder.com/stat?c=problem_statement&pm=12107 此题想了半天,当时瞥到了Greedy,所以就想着贪心,最后的方法又纸上画了一下应该是对的.就是排序后依次看是不是满足要求.证明就是如果对数字X,有a和b都能够通过增加k的倍数步得到X,那么使用小的a自然更好,因为b有更大机会为剩下的出力. #include <string> #include <vector> #include <algori…
http://community.topcoder.com/stat?c=problem_statement&pm=13245 就是有字符串,里面的字符可以随意两两消除,如果不等的话,那么最后如果留下一个字符,这个字符就是winning letter.如果任意方法消除都是这个winning letter,叫做happy letter.求happy letter是否存在.题目其实就是找众数.要注意的是求完了还要扫一遍是不是大于length/2. #include <string> usi…
http://community.topcoder.com/stat?c=problem_statement&pm=13243 就是能否通过把字符串中的'X'替换成"()", "[]", and "{}"来变成合法的括号字符串, "([]X()[()]XX}[])X{{}}]"Returns: "possible"You can replace 'X's respectively with '{',…
Topcoder上的一道题目,题目描述如下: Problem Statement      Byteland is a city with many skyscrapers, so it's a perfect venue for BASE jumping. Danilo is an enthusiastic BASE jumper. He plans to come to Byteland and to jump off some of its buildings. Danilo wants…