Codeforces Div. 2:B
ProLightsfxjh
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #352 (Div. 2) B. Different is Good __ substrings water problem
the smallest Substring of the given string can be lowercase English letters, so if it is possible to make the goal string the size of the given stringcan't be bigger than 26, so is size > 26 print -1;the use set too find the number of the different lette原创 2016-05-12 11:24:04 · 1950 阅读 · 2 评论 -
Codeforces Round #383 (Div. 2) B. Arpa’s obvious problem and Mehrdad’s terrible solution 数论、易错
题意:找出多少组ai和aj 使 ai ^ aj == x.数论、易错 ai ^ aj == x. => ai ^ x == aj这样把sz[ai] 为数ai出现的次数,对于每个ai,ans += sz[ai] * sz[ai ^ x] ; sz[ai ^ x] = 0; //即每一对 ai 和 aj 只处理一次。很显然还有一个特殊情况,即x == 0 的时候, ai ^ ai == 0, 故此时特殊处理 ans += sz[ai] * (sz[ai] - 1) / 2;然后 中间过程原创 2017-01-10 18:18:48 · 748 阅读 · 0 评论 -
Codeforces Round #385 (Div. 2) B. Hongcow Solves A Puzzle 几何、思维题
题意:那个由x构成的图片可以平移但不能翻转,问2个一样的图片分别经过以后能否构成一个矩形。几何、思维题其实就是判断所给的X构成的图形是否本身是矩形,因为只有这样才能在不翻转的情况下拼出一个矩形。笔者判断矩形的方法是,用4个变量分别记录x出现过的最高点最低点左左点最右点,然后 判断 (r - l) * (u - d) 是否 等于 x的总数,如果相等就是矩形了。这个题的难道应该是题意比较费解吧,没办法复杂度 O(n)原创 2017-01-10 23:00:42 · 538 阅读 · 0 评论 -
Codeforces Round #389 (Div. 2) B. Santa Claus 贪心+字符串处理、易错
题意:给定一个原串和一个新串,它们之中存在一些序偶,(x, y) 在原串的i位置为x,在新串的i位置是y,且x != y 则存在序偶(x, y),原串的所有x在新串中必须只用y表示。一个字母最多出现在一个序偶中,问这样的序偶有多少对。贪心+字符串处理、易错理解懂题意是关键,然后扫一遍就好。一旦存在序偶(x, y) 则x、y之后不能出现在别的序偶中了,原串中的所有x,在新串中的对应位置都必须是y,新串中所有y在原串必须是x,否则ans = -1;扫一遍得到序偶之后,再重新扫一遍,按照一旦存在序偶(x原创 2017-01-12 00:46:04 · 723 阅读 · 0 评论 -
Codeforces Round #403 (Div. 2) B. The Meeting Place Cannot Be Changed 三分
题意:n个人每个人在xi位置且运行速度为vi,问他们相聚在一点的最短时间。三分打那次cf 的时候,三分还没有学,没办法。这里直接对[minx, maxx]的范围内进行三分即可,然后eps最开始的时候取了1e-12,后来TLE了,确实好像数据溢出了,double大概只能存十五六位有效数字。所以改成1e-6,就过来,这里给出的 一是为了提醒eps的取值,然后可以算一下,用1e-6时,计算出的答案误差确实最大为1e-6,刚好可以满足<=1e-6的误差要求,所以可以放心使用。复杂度 略大于 O(n原创 2017-03-21 00:02:15 · 879 阅读 · 0 评论 -
Codeforces Round #400 (Div. 1 + Div. 2, combined) B. Sherlock and his girlfriend 素数筛法+贪心
题意:给出一个n,表示有2、3、......n+1这n个数,要求给这些数涂色,如果一个数是另一个数的质因数则必须涂不同的颜色。素数筛法+贪心首先其实只有2种数,一种是素数,一种是以这个素数作为其其中一个因数的数,所以最多用2中颜色。用素数的O(nlogn)的筛法,边筛素数边涂色,如果i是素数,则涂1,然后对于i*j,(i*j<= n+1)涂上2.,并标记为非素数。复杂度 O(nlogn)原创 2017-03-22 00:49:13 · 1165 阅读 · 0 评论 -
Codeforces Round #345 (Div. 2) B. Beautiful Paintings __ greedy and Bucket_sort
There are n pictures delivered for the new exhibition. The i-th painting has beauty ai. We know that a visitor becomes happy every time he passes from a painting to a more beautiful one.We are allowed to arranged pictures in any order. What is the maximum原创 2016-04-08 21:20:24 · 2289 阅读 · 0 评论 -
AIM Tech Round 3 (Div. 2) B. Checkpoints 排序、讨论
排序、讨论if(a < val[0]) ans = val[n - 2] - a;else if(a > val[n - 1]) ans = a - val[1];else 1 : min(ans舍去val[0], ans舍去val[n-1]) 处理的时候注意 a > val[0] && a < val[1] 和 a < val[n-1] && a > val[n-2 ]的情况此外就是 n == 1的时候了原创 2016-08-26 23:09:01 · 879 阅读 · 0 评论 -
Codeforces Round #456 (Div. 2) B. New Year's Eve 贪心、构造、位运算、异或和
题意:给出1~n这n个数,最多选k个数,要求,选出的数的异或和最大,求这个异或和。贪心、构造、位运算、异或和首先对于n的二进制有b位,n ^ ((1<<b) - 1)的值必定小于n。所以如果k为1,则只能选ans = n;否则选n和n ^ ((1<<b) - 1)这2个数,当n和 ((1<<b) - 1)相等时依然选n,即 ans = (1<<b) - 1。原创 2018-01-13 17:56:13 · 580 阅读 · 0 评论 -
Codeforces Round #444 (Div. 2) B. Cubes for Masha 暴力、枚举
题意:有n(1<= n <= 3)个骰子(每面标着数字0~9),要求找出最大的数x,满足1~x之间所有的数都可以用这最多n个骰子的正面表示出来。不能旋转,即不能用9表示6,反正亦然,且不要求所有的骰子都用上)。暴力、枚举首先用一个标记数组f,先全标记为false,之后把出现过的数都标记为true。当n == 1的时候,只有枚举每一面,并标记即可。当n == 2的时候,要枚举只用到1个骰子的情况和要用到2个骰子的情况,同时手动枚举全排列。当n == 3的时候,要枚举只用到1个或者2个骰子的情况和要用原创 2018-01-14 10:51:09 · 520 阅读 · 0 评论 -
Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined) B. Bash's Big Day 数论+贪心
题意:给出n个数,选出尽可能多的数,使这些数的gcd不是1.数论+贪心选出尽可能多的数,使这些数的gcd不是1.,则它们的gcd是x,x >= 2,所以可以枚举gcd的值,从2到1e5,然后枚举倍数 j, x * j (x*j < 1e5)必定在x的集合里所以1<=j <=1e5 ,即对于每个i 最多可以枚举j = 1e5 / i 个值i * j,故对于1e5 / x 从1 到1e5积分,得n*lin(n) 约等于 1e6故复杂度 O(nln(n))原创 2017-01-14 01:15:01 · 1359 阅读 · 0 评论 -
Technocup 2017 - Elimination Round 1 (Rated for Div. 2) B. Bill Total Value 表达式处理、sstream
题意:每一个物品有自己的价格,求价格总数,并按照要求的格式输出,小数只有2为,且整数部分每3位用一个小数点来分隔。表达式处理、sstream全部转化为乘100以后转化为整数加法,(这个过程可能有精度损失,所以addup = (add + 0.005) * 100; 然后最好 sum % 100就是小数部分(可能为0),而sum / 100 为整数部分(也可能为0)。其中用sstream的stringstream来把字符串类型的数字转化成整型的数字// It is guaranteed that原创 2016-11-20 14:31:24 · 875 阅读 · 0 评论 -
Codeforces Round #353 (Div. 2) B. Restoring Painting __ map or set 、思维题
自己画一个3*3的方格图, 然后标上 a, b, c, d 然后发现左上角标上x, 中间标上y,然后剩余3个空格可以表示出来。故可以O(n)的来做扫一遍,过程中用ans[][][][]来表示那个状态的个数。最后得到不同的个数然后n*ans.size()就好了,(n 表示中间的数字的可能情况总数为n), 然后注意可能溢出就好了……Solution 2 建一个结构体 q, 然后四个成员 ru(rights up), lu(lest up), ld(lest down) and rd(right dow原创 2016-05-17 19:50:02 · 3149 阅读 · 1 评论 -
Codeforces Round #350 (Div. 2) B. Game of Robots __ interesting
这个思维题, 不用构造或模拟哦, 直接-=i就可以的^_^原创 2016-07-09 23:24:05 · 568 阅读 · 0 评论 -
Codeforces Round #367 (Div. 2) B. Interesting drink 离线操作
离线操作朴素的离线操作 O(n)把询问记录下来,然后根据值排序, 然后 扫一遍数组就出来了然后把offline[maxn]根据下标Ind排序,然后依次输出就好了复杂度 O(n)原创 2016-09-09 01:45:20 · 854 阅读 · 0 评论 -
Codeforces Round #340 (Div. 2) B. Chocolate 组合学、简单题
0 1 0 1 0 1 0从左向右遍历, 遇到第一个1后开始算(ans = 1), 然后连续的cnt个0 碰到隔断连续0的1的时候 ans *= cnt, cnt = 0, 然后继续访问这样就把左端的连续0和右端的连续0去掉了2 发 Wrong answer on test 7尴尬 最开始的时候只包括了 0 1 0 1 0, 1 0 1, 1 1 1 1 1 1这些情况,但漏了0 0 0 0 0 0,所以初始化为 ans = 0; // 最开始的时候是初始化为 1 的复杂度 O(n)原创 2016-09-01 01:02:21 · 631 阅读 · 0 评论 -
Codeforces Round #362 (Div. 2) B. Barnicle 科学记数法、表达式处理
处理科学计算法的表达式找到 " . " 和 " e " 的位置, 然后读清题目的条件就好了a and b contain no leading zeros and d contains no trailing zeros (but may be equal to 0). Also, b can not be non-zero if a is zero.原创 2016-08-23 23:05:39 · 713 阅读 · 0 评论 -
Codeforces Round #371 (Div. 2) B. Filya and Homework STL(map or set)
STL(map or set)把所有的数丢进一个map,然后如果 mp.size() > 3 必然 NO;如果 mp.size() <= 2 必然 YES; //如果是 1 则 x = 0, 如果 是 2 则 x = 大 - 小 如果 mp.size() == 3 则 如果 大 + 小 = 2 * 中 则 YES, 否则 NO;原创 2016-09-16 02:57:24 · 1354 阅读 · 0 评论 -
Codeforces Round #369 (Div. 2) B. Chris and Magic Square 数学、幻方
数学、幻方读入的时候记录好缺口的坐标 x, y优先判断每行都相等, 然后求出 ans缺口的值如果 ans <= 0 则无解, 否者就填上去 //!Wrong answer on pretest 7 的原因然后判断每列, 以及2条大的对角线复杂度 O(n^2)原创 2016-09-06 18:13:38 · 621 阅读 · 0 评论 -
Codeforces Round #372 (Div. 2) B. Complete the Word __ two pointers、队列(queue)
two pointers、队列(queue)用 queue<char> que;维护一个除了 '?'以外所有字符最多在该队列中出现一次的队列, 当que里的合法元素达到 26 个是就是 nice substring 了。在这过程中 用 map<char, int> ch 维护队列中每个字符出现的次数, 且用 ind 维护队列的首元素的在s中的下标。得到要求的que以后, 扫一遍map, 把没有出现过的大写字母丢到 队列 ans里去, 然后 输出 s[ 0 ~ ind-1], 输出 nice subs原创 2016-09-23 19:06:46 · 1359 阅读 · 0 评论 -
Codeforces Round #373 (Div. 2) B. Anatoly and Cockroaches 贪心、字符串
贪心、字符串对于 1010101...... (0 ~ n-1) 如果奇数的地方不是1就 ans1++, 如果偶数的地方不是0就 ans0++,ans = max(ans0, ans1); //min(ans0, ans1)次交换, ans - min(ans0, ans1) 次改变颜色然后再对 010101......(0 ~ n-1) 的情况跑一遍2个ans取最小值复杂度 O(n)此外 用 x & 1 表示偶数的时候 要写成 ((x & 1) == 0),(x & 1)要加括号,位运算符的优原创 2016-09-28 02:06:28 · 1438 阅读 · 0 评论 -
Codeforces Good Bye 2017 B. New Year and Buggy Bot 枚举全排列、模拟
题意:给出一张地图,有一个出口和入口,以及一些障碍和通道。然后给出一个操作序列0123,分别表示上下左右,求有多少种对应的可能可以使得按照该指令序列从入口走到出口。0->下,1->左,2->上,3->右为一种可能,以此类推。枚举全排列、模拟我们规定长度为4的序列op,op0表示上,op1表示下,op2表示左,op3表示右。所以只要枚举0123的全排列即可得到所以的对应可能,然后用每一个排列去模拟的跑一遍地图即可判断该情况是否可行。/*//枚举全排列代码原创 2018-01-14 16:08:33 · 506 阅读 · 0 评论