codeforce
文章平均质量分 67
沂澜
这个作者很懒,什么都没留下…
展开
-
cordeforce 7A. Kalevitch and Chess超简单代码
每次看别人超长又复杂的代码就忍不住写个简单点的代码。题目大意,把一个8*8的全白棋盘涂成顾客想要的棋盘,最少需要多少步,顾客要的棋盘有一个特点就是某些整行或者某些整列是黑色的。count[ j ] 记录第 j 列上有多少个 'B', 先按行处理,每行跟一个模板string "BBBBBBBB" 比较,如果某行等于这个模板,说明这行需要被涂黑,涂完后每列上的 'B' 就少原创 2015-11-10 20:11:17 · 448 阅读 · 0 评论 -
codeforce 577 B. Modulo Sum
当 n 大于 m 时,n 个数的和的种类至少有 n 种,根据鸽巢原理,n 种和 放到 m 个盒子里,必然有至少两个相同的和放到同一个盒子中。设得到这两种和的序列 为 a1,a2,……,al, 和 b1,b2,……,br,那么 bl+1,……,br 这段序列的总和必然为0 ,则结果必然存在d当 n 小于等于 m 时, 用动态规划,相当于0/1 背包问题,对于每一个 a[i] 有要或者不要两种选择原创 2015-11-19 18:09:04 · 370 阅读 · 0 评论 -
596 C. Wilbur and Points
将具有相同 wi 的点放到同一个 set 中去,这里用 map 来实现,而且插入到 set 中的点是按 x 坐标的升序排序,因为最后的结果肯定是要 x 和 y 都尽量小的在前面。用两个 vector, 一个存储 由点坐标求出来的 w,一个存储输入的 w,排序后比较这两个vector,如果不相同,则结果为 “NO”, 否则就按输入的 w 的值,来在相应的 set 中找点,按顺序分配完所有原创 2015-11-23 15:15:02 · 432 阅读 · 0 评论 -
codeforce 589 D. Boulevard
暴力搜索,对于第 i 个人,判断所有第 j ( j=i+1,……,n) 个人是否能与其相遇,如果能相遇,则第 i 和第 j 个人的相遇人数都要加 1 .首先要对 第 i 和第 j 个人的起始位置进行判断,如果谁进入道路的时间早,就走到 晚进入道路的那个人 进入道路的时间点;此时再对这两个人剩余的路途进行判断,如果两个人中谁的剩余的路途为负数了,说明在另一个人还没上路之前这个人就已经到达终点原创 2015-11-18 17:01:18 · 435 阅读 · 0 评论 -
590 A. Median Smoothing
找 0 和 1 相间的字串,只有 0 和 1 相间的地方才需要修改,修改的次数就是修改最长0/1相间字串的次数,由于每次修改都是对称的,所以总的修改次数为最长字串长度的一半。每次修改字串有两种情况,当字串首尾元素相同时,整个字串都修改为 首尾元素;当首尾元素不相同时,前一半修改为首元素,后一般修改为尾元素。代码如下:#include using namespace std;原创 2015-11-14 15:48:13 · 368 阅读 · 0 评论 -
cordeforce 591 B. Rebranding
首先对输入的两个字符比较,相等就不用处理,如果不相等就进行两次映射这里有两张映射表,map1 用来存储某个字符映射到哪个字符了,比如 map1[ a ] = h ,说明字符 a 被替换成字符 h 了;map2 用来存储某个字符是由哪个字符映射而来,比如 map2[ a ] = h,说明字符 a 是由字符 h 映射而来。简单说这两张映射表一个存储去向,一个存储来源原创 2015-11-14 10:31:43 · 381 阅读 · 0 评论 -
codeforce 11B. Jumping Jack
由于输入的 x 有可能是负数,如果是负数,相当于向走走,取其绝对值后相当于向右走,因为向右和向左走的距离一样。预处理x=(x>0?x:-x)每走一步,跳的距离就增大一个单位,那么每次跳的距离是个等差数列,求这个数列的前 n 项和的公式为 (1+n)*n/2所以首先找到前 n 项和大于或等于 x 的 n 的值,相当于对公式 (1+n)*n/2 = x 求出 n ,由于x 已知原创 2015-11-12 19:16:55 · 540 阅读 · 0 评论 -
CF 3C Tic-tac-toe 井字棋 简洁代码
题目大意就是给你一个 3*3 棋盘,要你判断 A,B 哪个选手赢了,或者该谁下了,或者平局,或者棋盘不符合规则。这里分六类 (假设A先走)1. 输出 the first player won 的条件是,A符合赢的条件(某行或某列或对角线的字符一样),且B不符合赢的条件,且A的步数比B多1,因为A先走的。2. 输出 thesecond player won 的条件是,B符合原创 2015-11-07 19:35:40 · 757 阅读 · 0 评论 -
codeforce 4D Mysterious Present 简单思路 动态规划
看网上的代码和思路,感觉好复杂的,决定自己写一个代码简洁,思路简单的代码。这题的意思就是要找出一个最大子序列,这个最大子序列的每个元素就是一个信封,每个信封包含两部分,即信封的宽度和长度,要求序列中的元素的两个部分都是单调递增的,即单独按宽度看,所有信封的宽度是单调递增的,单独按长度看,每个信封的长度也是单调递增的,这样才能保证小信封可以放进大信封里。首先, 筛选输入的元素,只有宽度和长度原创 2015-11-09 19:51:09 · 843 阅读 · 0 评论 -
codeforce 582 A. GCD Table
显然矩阵中最大的那个数就是要求的数组中最大的那个数,所以首先把这个最大的数放到数组里去。这里用 set 来存放矩阵中的数,因为 set 有插入数据时自动排序的功能,而且我们每次要取的数都是 set 中最大的数,所以用这种数据结构很方便。取完第一个数后,要把这个数从 set 中删除,接下来的就是一个循环取最大数的过程了。循环过程:每取完一个最大数,先把这个数从set 中删除,然原创 2015-11-20 21:23:24 · 356 阅读 · 2 评论