上一页 1 ··· 43 44 45 46 47 48 49 50 51 ··· 57 下一页
摘要: 题目链接:http://codeforces.com/problemset/problem/379/C题目意思:有n个users,每个user都有自己想升的rating。要解决的问题是给予每个人不同的rating,使得每个人rating不比他期望的rating小,即 安排的rating >= 他自己的希望的rating,还有一个条件就是 总rating之和要最小。 要想使得总rating最少,那么安排的rating要尽可能小。把rating从小到大排序。对最小的rating值当然就给予这个值,于是下一次安排的rating在这个值的基础下递增1(rmin+1),当下一个user期望的rat 阅读全文
posted @ 2014-02-11 15:23 windysai 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://codeforces.com/problemset/problem/388/A题目意思:有 n 个 boxes,每个box 有相同的 size 和 weight,但是strength 有可能不同。strength的数值表示该box的上面只能放strength 个 boxes,直到放不下,这样就成了一个pile。问如何叠放使得pile 的个数最少。 一开始从最底层放置考虑,于是越想越复杂..... 可以从最高层来开始,那么放在最上面的box的strength最小可以为0,但是stength为0的box在每个pile中最多只可以放一个(0代表这个box上面不能再放任何的bo 阅读全文
posted @ 2014-02-10 22:17 windysai 阅读(473) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://codeforces.com/problemset/problem/384/B题目意思:给出n个数组,每个数组包括m个数字,当k = 0 时,需要把n个数组都按照从小到大的顺序排列,k = 1则把n个数组里面的数字按照从大到小的顺序排列。 直接模拟即可,不过有个地方注意下是可以减少工作量的,当处理第 i 行的时候,不再需要移动前 i - 1 行的数组下标。因为前 i - 1行的数组都排好序了。TimeMemory46 ms500 KB 1 #include 2 #include 3 #include 4 #include 5 using namespace s... 阅读全文
posted @ 2014-02-10 16:57 windysai 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://codeforces.com/problemset/problem/289/B题目意思:给出一个 n 行 m 列的矩阵和数值 d 。通过对矩阵里面的数进行 + d 或者 - d 的操作,是否可以使矩阵上的所有数相等。可以的话输出最少的操作步数,否则输出 -1。 由于矩阵的排列对处理没什么影响,因此不需要用到二维数组存储。接着把矩阵中所有的数从小到大进行排序,要想算出最少的步数,很容易想到应该最中间的数(中位数)靠拢。最关键的是如何判断不能通过对矩阵中的数进行处理使得所有数相等。我的做法是,在将每个数向这个中位数靠拢的过程中,它们的差(绝对值)应该能被 d 除尽,一旦有一 阅读全文
posted @ 2014-02-07 21:15 windysai 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://codeforces.com/problemset/problem/300/B题目意思:给出n个students(n%3 = 0),编号依次为1~n,接下来有m行,每行有两个数:a和b(1 1人组的人数(不成组) 根据这样硬用并查集来做,代码量非一般多!!!这就是不会算法的悲剧咯~~~ 我的思路: 先用并查集来连边,保证大编号的指向最小编号的。 接着统计一人组,二人组,三人组的人数(分别为c1,c2,c3),以判断结果为-1的两种情况。 最后依次输出: 二人组 + 一人组,三人组,一人组 (除了三人组的情况其他两种都要组合)(以后学好dfs一定要写条简短的代码,呜呜呜~ 阅读全文
posted @ 2014-02-06 00:11 windysai 阅读(384) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://codeforces.com/problemset/problem/389/B题目意思:给出一个由n行n列组成的board,其中'#'表示的一片地方恰好能画满十字架,画满的意思表示:这些十字架不能够共用'#' !当然如果全部都是'.',表示不画十字架。问如果有'#'和'.'的board上,是否恰好能填满所有'#'。能就输出 'YES',否则输入'NO' 比赛的时候完全没有思路,这是赛后做出来的,参考了别人的思路。可以这样想,考虑到十字架这么特殊 阅读全文
posted @ 2014-02-04 12:41 windysai 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://codeforces.com/problemset/problem/300/A题目意思:给出n个数,将它们分成三批:1、所有数相乘的结果 0; 3、所有数相乘的结果 = 0 还需要满足一个条件:n个数的归属只可以是其中的一批。由于翻译的时候总是以整个短语来翻,因此一直误以为“product”是“产物”的意思,多谢乌冬兄指点迷津。 不难想到对所有数进行排序,最小的那个数绝对是负数,因此第一批数放1个即可;最大的那个数归到第2批(也是1个),但有个问题,有可能最大的那个数是0,此时第2批要放2两个数(负数),保证相乘是整数,其余放在第3批即可(0和任意一个数相乘都为0),. 阅读全文
posted @ 2014-02-03 12:21 windysai 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://codeforces.com/contest/387/problem/B题目意思:给出1~n个问题,以及要满足是good rounde条件下这n个问题分别需要达到的complexity,最后还有George已经准备好的关于这些问题的m个complexity。问George要come up with的问题最少有多少个。 很明显要使问题最少,那么满足每个问题的complexity为一个即可。解决这个问题的关键是要理解这句话:He can simplify any already prepared problem with complexitycto any positive 阅读全文
posted @ 2014-02-02 12:58 windysai 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://codeforces.com/problemset/problem/302/B题目意思:给出两个整数n和m,接下来n行给出n首歌分别的奏唱时间和听的次数,紧跟着给出m个时刻,需要对每个时刻输出该时刻正在弹奏哪一首歌曲。 解题关键是每个时刻v有着这样的规律vi 2 #include 3 #include 4 using namespace std; 5 6 const int maxn = 1e5 + 5; 7 __int64 song[maxn], c, t, v, cnt; 8 9 int main()10 {11 int n, m, i, j; 1... 阅读全文
posted @ 2014-01-29 16:26 windysai 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://codeforces.com/problemset/problem/304/B题目意思:给出两个日期,需要算出这两个日期之间有多少日。细心模拟就可以了。特别要注意的是,两个日期是同一年的处理。我的解决方法是,算出小的那一个日期的天数离它所处月份还有多少天,大的日期的天数加上去,还有一部分是它们之间相隔的月数总天数。另外,为了方便处理,保证了第一个处理的日期是较小的。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 static char dd[2][13] = { 8... 阅读全文
posted @ 2014-01-28 20:50 windysai 阅读(362) 评论(0) 推荐(0) 编辑
上一页 1 ··· 43 44 45 46 47 48 49 50 51 ··· 57 下一页