codeforces B. Marathon 解题报告】的更多相关文章

题目链接:http://codeforces.com/problemset/problem/404/B 题目意思:Valera 参加马拉松,马拉松的跑道是一个边长为a的正方形,要求Valera从起点(0,0)出发,每经过距离d就给他一杯drink.求出n个位置,即Valera每经过d距离的position. 一开始我是直接模拟的,每次算出一个position就记录离该边最末还剩多少距离,假设为k,然后更新初始已有的距离k,又开始加a的距离直到到达下一个点...代码复杂之余,还超时了. 比较好的作…
题目链接:http://codeforces.com/problemset/problem/31/C 题目意思:给出 n 个 lessons 你,每个lesson 有对应的 起始和结束时间.问通过删除一个lesson后能否使得所有lesson 持续的时间互不相交.注意,如果某个lesson结束的时刻恰好是另一个 lesson 的开始时刻,那么这两个lesson 也看作是不相交的. 看了题目之后,一如既往地,没什么想法= =.C题好多时候都这样,继续努力!!! 想着看Tutorial 直接学习,怎…
题目链接:http://codeforces.com/problemset/problem/499/B 题目意思:给出两种语言下 m 个单词表(word1, word2)的一一对应,以及 professor's lecture 的 n 个单词.问记下来的笔记是什么.对于professor's lecture 的某个单词,如果在单词表中找到,word1, word2 都有可能.如果 word1 的长度  <= word2 的长度,就输出word1,否则word2 考了map<string, st…
题目链接:http://codeforces.com/problemset/problem/495/C 题目意思:给出一串只有三种字符( ')','(' 和 '#')组成的字符串,每个位置的这个字符 '#'可以替换成不少于 1 个的 ')',问如何对每个'#'进行替换,使得对于字符串的任意一个位置, ')' 的数量始终不大于'(' 的数量.注意,'#'被替换成')'的总数以及原先有的')'的数量之和 == '(' 的总数. 花了两个晚上的一点时间,今天在图书馆里终于想到解决方案了,大感动 ~~~…
题目链接:http://codeforces.com/problemset/problem/490/B 题目意思:给出每个人 i 站在他前面的人的编号 ai 和后面的人的编号 bi.注意,排在第一个位置的人他前面是无人的!于是 a1 = 0.最后那个人的后面是木有人的,即 bn = 0.然后根据这些条件求出整个序列是如何排的,输出答案. 这条题卡了好久.........啊........啊........啊 首先很容易知道第二个位置的人的编号 和 倒数第二个人的位置编号.用一个aft[]数组记录…
这是本人写的第一次博客,学了半年的基础C语言,初学算法,若有错误还请指正. 题目链接:http://codeforces.com/contest/166/problem/E E. Tetrahedron                                                                           time limit per test2 seconds                                             …
题目链接:http://codeforces.com/problemset/problem/489/A 题目意思:给出一个 n 个无序的序列,问能通过两两交换,需要多少次使得整个序列最终呈现非递减形式.这个交换次数最多为 n 次.如果原来已经非递减排列好,输出次数为0:否则不但要输出次数,还需要输出每次交换的数组下标. 比赛的时候想复杂了,用了pair来记录值和坐标,还要开多一个pair类型的 b 数组来保存已排好序的序列,然后跟原序列比较......哪个复杂啊---然后校园网12:00 断网了…
题目链接:http://codeforces.com/problemset/problem/485/A 题目意思:给出 a 和 m,a 表示第一日的details,要求该日结束时要多生产 a mod m,那么再加上原来的,就总共有 a + a mod m 的details 啦,然后这个数就成了第二日开始的 details ,接着临一天结束要多生产(a + a mod m) mod m,第三日开始就变成 (a + a mod m) +  (a + a mod m) mod m .不断地重复重复重复…
题目链接:http://codeforces.com/problemset/problem/483/A 题目意思:给出一个区间 [l, r],要从中找出a, b, c,需要满足 a, b 互质,b, c 互质,但是 a, c 不互质,也就是除了 1 之后还有其他公约数.要求 1<= a < b < c <= r,也就是 a, b, c 两两不相等的.如果找不出则输出 -1. 首先很容易知道,如果 [l, r] 这个区间只有两个数,那么肯定没有答案.还有一种情况是,如果 [l, r]…
题目链接:http://codeforces.com/problemset/problem/479/C 题目意思:简单来说,就是有个人需要通过 n 门考试,每场考试他可以选择ai, bi 这其中一个时间来考,要求 n 门考试过后,他所选择的时间序列是一条非递减序列,输出最少时间. 其实那个最少时间是骗人的,感觉没什么用.直接排序,然后每门课程选择尽可能少的时间来考,但这个时间需要满足 >= 前一门课程的时间. 感觉这道题比 B 题还要简单,额...是错觉了么,不过它题目意思确实有点绕~~~~纸老…
题目链接:http://codeforces.com/problemset/problem/479/B 题目意思:有 n 座塔,第 i 座塔有 ai 个cubes在上面.规定每一次操作是从最多 cubes 的塔中取走一个cube,加去拥有最少 cubes 的塔上,那么显然,本来是最多cubes的塔的 cubes 数目会减少1,而拥有最少的 cubes 的塔的cubes数增加 1 .现在最多操作 k 次,使得最多 cubes 数 的塔的cubes数 减去 最少cubes数的塔的cubes 数最少(…
题目链接:http://codeforces.com/problemset/problem/474/D 题目意思:Marmot 吃两种类型的花(实在难以置信呀--):red 或者 white,如果要吃到white这种花,就需要吃连续 k 朵 white:而如果吃 red,就没有这种限制.给定区间[a, b],问总共的吃法有多少种. dp 题!状态转移方程不难得到.设 dp[i] 表示 长度为 i 时 的吃法种数. dp[i] = dp[i-1] + dp[i-k] 对于当前 i,或者是从第 i-…
题目链接:http://codeforces.com/problemset/problem/378/B 题目意思:有n个参赛者,他们都需要参加两场半决赛.第一场半决赛的成绩依次是a1, a2, ..., an,分别对应第1-第n个人的成绩.第二场则是b1, b2, ..., bn.其中这两个序列都是以递增方式排列的.需要从中找出有机会跻身于总决赛的人(标记为1)包括成绩排名前k人(对应成绩是a1,b1:a2,b2,...,ak,bk)和处在两场半决赛的总成绩处在n-2k排名的人.至于k是不确定的…
题目链接:http://codeforces.com/problemset/problem/363/B 题目意思:给定整数n和k,需要从n个数中找出连续的k个数之和最小,输出这连续的k个数中的第一个数的下标. 直接暴力果断TLE,于是想到之前做的那条332B - Maximum Absurdity DP题的做法,决定开多一个额外的数组b[],在输入的时候把a[i]中前i个数的和都记录到b[i]中,这样通过b[i] - b[i-k]即可得出序列h1, h2, ..., hn (1 ≤ hi ≤ 1…
题目链接:http://codeforces.com/problemset/problem/359/B 题目意思:给定n和k的值,需要构造一条长度为2n(每个元素取值范围只能是[1,2n])且元素各不相同的序列,这条序列符合等式. 首先非常感谢乌冬兄和syy的帮助!!尤其是乌冬兄. 刚开始做的时候完全没有思路,写出那条等式的展开式也没有发现规律.在他们的思维引导之下,我终于明白了这个问题其实可以简化为求一对数(假设为ai-1,ai)的差,这个差 = k 即可,但是k必须为负数!!!也就是ai-1…
题目链接:http://codeforces.com/problemset/problem/359/A 题目意思:给出一个n行m列的table,你需要选择一个good cell(假设为(x, y), 1<=x <=n,1<=y <=m)和任意的一个corner((1, 1), (n, 1), (1, m), (n, m)),此时你可以把这个good cell 和 corner所围住的区域上色,这个区域(p, q)满足 min(good cell的横坐标,corner的横坐标) ≤ …
题目链接:http://codeforces.com/problemset/problem/353/A 题目意思:通俗地说,就是当上下两半的数的总和不完全是偶数时,通过上下调换某些骨牌来使这两半的数和变成偶数,统计并输出调换多少次:如果不行,则输出-1. 其实调换的次数最多只有1次,而实行调换的操作必须符合上下对应的数满足一奇一偶的条件,否则是白做的.如果调换一次之后,也不能使得上下两半的和都为偶数,那么就没必要继续判断了,直接输出“-1”. #include <iostream> #incl…
题目链接:http://codeforces.com/problemset/problem/337/A 题意:有n个学生,m块puzzles,选出n块puzzles,但是需要满足这n块puzzles里的最大pieces(A)和最小pieces(B)之差最少,即the least possible difference. 这是一道贪心兼排序的题目,解决方法不难.首先对m块puzzles以非递减的顺序排序(可以保证每个n长度的区间difference最小),接着求出所有长度为n的区间中最大和最小的值…
呜呜周日的时候手感一直很好 代码一般都是一遍过编译一遍过样例 做CF的时候前三题也都是一遍过Pretest没想着去检查... 期间姐姐提醒说有Announcement也自信不去看 呜呜然后就FST了 呜呜然后rating-55(果然呜呜 TAT A. Cutting Banner   A large banner with word CODEFORCES was ordered for the 1000-th onsite round of Codeforcesω that takes plac…
比赛链接:http://codeforces.com/contest/462 这次比赛的时候,刚刚注冊的时候非常想好好的做一下,可是网上喝了个小酒之后.也就迷迷糊糊地看了题目,做了几题.一觉醒来发现rating掉了非常多,那个心痛啊! 只是.后来认真的读了题目,发现这次的div2并非非常难! 官方题解:http://codeforces.com/blog/entry/13568 A. Appleman and Easy Task 解析:         一个水题,推断每一个细胞周围是否都是有偶数…
题目链接:http://codeforces.com/submissions/ywindysai 题目意思:有 n 朵花,每朵花都有一定的高度(第 i 朵花对应 ai),m 天之后要把这些花送给别人.不过这 m 天里可以通过淋花来让花长得尽可能高啦(当然不希望把长得矮矮的花送给人啦),每天只能淋一次,一次覆盖的范围是连续的 w 朵,淋完水后被淋的花会在当天长高 1 个单位(one height unit).现在就问,m天之后,最矮的那朵花最高能长到多高. 首先,我对这条题目完全没有想法,四个字:…
题目链接:http://codeforces.com/problemset/problem/147/A 题目意思:给定一篇文章,需要对这篇文章进行编辑,使得:(1)两个单词之间有一个空格分开  (2)标点符号前面(, . ! ?)没有空格,即单词后面直接紧跟着这个标点  (3)标点符号后面只有一个空格. 恶心的字符串处理.特别要注意,当出现类似   wery   ,   weyriu    的形式时的处理方法.由于对于标点符号的处理,我是把该符号+空格输出,所以对于这种情况,再把空格都过滤了的情…
题目链接:http://codeforces.com/problemset/problem/402/A 题目意思:几经辛苦,终于体明题目噶意思了 = =,完全是考验一个人是否清醒的最简便方法- -! 给出4个数,分别为k,a,b和v.k:1个box最大可以分成的section:a:需要放置的nut的个数:b:divisor的数量  v:每个section的容量.有两个约束条件:(1)每个box的section数不能超过k个: (2)放置的nut的数量不能超过v个(即不能超过section的最大容…
题目链接:http://codeforces.com/problemset/problem/401/C 题目意思:给出0和1的数目(分别为n和m个),问是否能构造一条同时满足连续两个0不能再一起和连续三个1不能在一起,并且长度为n+m的序列,不能输出-1. 首先需要知道什么时候不能构造出来.假设c0代表0的数目,c1表示1的数目.那么可以构造的条件是: c0-1 <= c1 <= 2c0+2 接着构造一条以0为开头和结尾的01交错,长度为2*n-1的序列.(即0101...10).这时1的个数…
题目链接:http://codeforces.com/problemset/problem/384/B 题目意思:给出n个数组,每个数组包括m个数字,当k = 0 时,需要把n个数组都按照从小到大的顺序排列,k = 1则把n个数组里面的数字按照从大到小的顺序排列. 直接模拟即可,不过有个地方注意下是可以减少工作量的,当处理第 i 行的时候,不再需要移动前 i - 1 行的数组下标.因为前 i - 1行的数组都排好序了. Time Memory 46 ms 500 KB #include <ios…
题目链接:http://codeforces.com/problemset/problem/300/B 题目意思:给出n个students(n%3 = 0),编号依次为1-n,接下来有m行,每行有两个数:a和b(1<=a, b <= n),表示号码a的人想和号码b的人一起组队.但最终每一组的人最多只能为3个,至于组里只有2个或根本不成组的人可以通过组队变成3个人.问最后每组是否恰好为3人(包括原来不需要组队和组队后的情况),是则输出每组人的编号,否则输出-1. 一开始做的时候觉得像并查集,后来…
题目链接:http://codeforces.com/problemset/problem/300/A 题目意思:给出n个数,将它们分成三批:1.所有数相乘的结果 < 0    2.所有数相乘的结果 > 0:   3.所有数相乘的结果 = 0   还需要满足一个条件:n个数的归属只可以是其中的一批. 由于翻译的时候总是以整个短语来翻,因此一直误以为“product”是“产物”的意思,多谢乌冬兄指点迷津. 不难想到对所有数进行排序,最小的那个数绝对是负数,因此第一批数放1个即可:最大的那个数归到…
题目链接:http://codeforces.com/problemset/problem/304/B 题目意思:给出两个日期,需要算出这两个日期之间有多少日. 细心模拟就可以了.特别要注意的是,两个日期是同一年的处理.我的解决方法是,算出小的那一个日期的天数离它所处月份还有多少天,大的日期的天数加上去,还有一部分是它们之间相隔的月数总天数.另外,为了方便处理,保证了第一个处理的日期是较小的. #include <iostream> #include <cstdio> #inclu…
题目链接:http://codeforces.com/problemset/problem/440/B 题目意思:给出 n 个数,求出这 n 个数的平均值avg,问对于这 n 个数里面中的每一个数,要变为avg 至少需要向相邻的数交换多少次.每次交换只能向相邻的数取1(+1 或者 -1) 一开始想错了,以为每个数直接跟avg比较,求出它们的差值就是答案.后来关电脑在床上的时候就想到了正确的解法.因为考虑到今天有正式的比赛,所以不像那天又继续奋斗了(累---),早上一早验证,果然是对的^_^ 正确…
我是比赛地址 A:Phone Numbers $Description$:给你一串数字,问你能组成多少开头为8的11位电话号码. $Sol$:统计8的数量,与$n$%11作比较. #include<cstdio> #include<algorithm> #include<cstring> using namespace std; int n,len,cnt,ans; ]; int main() { scanf("%d",&n); scanf(…