随笔分类 - ACM~~TopCoder
摘要:题意: 一个游戏有n轮,有A和B比赛,谁在第 i 轮得胜,就获得 i 分,给出x,y,问A得x分,B得y分有没有可能,如果有,输出A最少赢的盘数解题思路: 首先判断n(n+1)/2 = (x+y)是否有解,即是否存在n为整数,使得所有分数的和加起来为x+y,即判断n2+n-2(x+y)=0,存在整...
        阅读全文
                
摘要:先用dfs搜索所有的情况,然后判断每种情况是不是括号匹配#include #include #include #include #include #include #include #include #include #include #include #include #include #incl...
        阅读全文
                
摘要:题目比较简单。注意看测试用例2,给的提示Please note that this is the largest possible return value: whenever there is a solution, there is a solution that uses at most tw...
        阅读全文
                
摘要:本题就是求所有连续子数列的和开始拿到题目还以为求的时数列子集的和,认真看到题目才知道是连续子数列循环遍历即可 int findSum(vector array) { int sum = 0; for(int i = 0 ; i < array.size(); ++...
        阅读全文
                
摘要:典型的条件概率题目。事件A在另外一个事件B已经发生条件下的发生概率。条件概率表示为P(A|B),读作“在B条件下A的概率”。若只有两个事件A,B,那么,P(A|B)=P(AB)/P(B)本题的设事件Alice赢为B,事件Alice投掷数字x为A,则事件Alice投掷数字x且赢为AB则求在Alice赢...
        阅读全文
                
摘要:题目的意思是给一个01的字符串数组,让你去求解满足棋盘条件的最大棋盘棋盘的条件是: 相邻元素的值不能相同此题有点像求全1的最大子矩阵,当时求全1的最大子矩阵是用直方图求解的本题可以利用直方图求解首先找到子矩阵的两个顶点坐标(x0,y0),(x1,y1)我们能遍历开始和结束列,y0=i, y1=j,...
        阅读全文
                
摘要:题目的意思是给你一组数,然后不断的进行除法(注意是大数除以小数),然后将得到的结果加入这组数种然后继续进行除法,直到没有新添加的数为止此题按照提议模拟即可注意要保持元素的不同 int CountNumbers(vector numbers) { set ss(numbers.b...
        阅读全文
                
摘要:由于题目数据量比较小,故可以开辟一个数组存储每个index出现的次数然后遍历即可string canItBeDone(int k, vector A){ vector cnt(52,0); int n = A.size(); for(int i = 0 ; i A) { ...
        阅读全文
                
摘要:由于题目告诉肯定至少存在一种解,故只需要根据条件遍历一下, vector makeExpression(int y) { vector res; for(int i = -1000; i =-1000 && k<=1000 && k!=0 && k!=1){ ...
        阅读全文
                
摘要:注意题目给的最后一句话,如果部门任何employee都做不同类型的工作,则这个部门是一个diverse,题目是计算department的diverse数读起来感觉有点别扭,英语没学好的原因 int countGood(vector superior, vector workType) { ...
        阅读全文
                
摘要:一开始Y1,Y2两个参数看不懂,再看一遍题目后才知道,vector索引代表是行数,值代表的是列此题数据量不大,直接深度搜索即可注意这里深度搜索的访问标识不是以前的索引和元素,而是一个交换元素后的整个状态vector,这样可以避免重复元素的搜索 set > visit; bool flag...
        阅读全文
                
摘要:只需要对word遍历一遍即可 int write(string word) { int cnt = 0; for(int i = 0 ; i < word.length(); ++ i){ cnt+=word[i]-'A'+1; ...
        阅读全文
                
摘要:此题给出的条件是:(1)word的每个字母都是大写字母(此条件可以忽略,题目给的输入都是大写字母)(2) 相等字符不能连续,即不能出现AABC的连续相同的情况(3)word中不存在字母组成xyxy的形式,即不存在第一个字符和第3个字符相等同时第2个字符和第4个字符相等的情况对于第(2)种情况,只需要...
        阅读全文
                
摘要:从大到小遍历一遍,每次取M个元素,然后求得最小的floor即可 int minimum(int M, vector heights) { sort(heights.begin(),heights.end()); int minFloor = 10000; ...
        阅读全文
                
摘要:排个序,求前k个元素和即可 int minimum(int K, vector danceCost) { sort(danceCost.begin(),danceCost.end()); return accumulate(danceCost.begin()...
        阅读全文
                
摘要:解决本题的一个关键点就是当Cat进入时,此时Rat在哪个位置?注意移动方向可以随时改变,由于是圆环,故离入口最远点的距离是pi*R,即圆的一半,当cat进入时(cat的速度大于rat的速度,否则不可能追上) 如果rat移动的距离小于圆环的一半,即此时rat的位置为移动最远的位置 如果rat移动的...
        阅读全文
                
摘要:比较简单的一题,纠结比较久的是把my_cmp和my_minus放在类中,利用sort函数会出现no matching function for call to ""sort(std::vector::iterator, std::vector::iterator, )""当把这两个函数放在类外面时就...
        阅读全文
                
摘要:关于斐波那契数列,由于数据量比较小, 直接打表了,代码写的比较戳#include #include #include using namespace std;class FibonacciDiv2{public: vector table; void make_table(){ ...
        阅读全文
                
摘要:注意题目这句话,Once you have each type of candies in a box, you want to pack those boxes into larger boxes, until only one box remains.两个box合并后必须放入更大一个盒子题目的有...
        阅读全文
                
摘要:1 #include 2 #include 3 4 using namespace std; 5 6 class TheArithmeticProgression{ 7 public: 8 double minimunChange(int a,int b, int c){ 9 return (abs(2*b-a-c)+0.0)/2;10 }11 12 };
        阅读全文
                

 浙公网安备 33010602011771号
浙公网安备 33010602011771号