随笔分类 - 模拟题
摘要:题目链接:http://codeforces.com/problemset/problem/140/B题目意思:给出 Alexander 和他的 n 个朋友的 preference lists:数字 1~n 的排列。现在Alexander 需要遵循两条rules向他的 朋友发送贺卡。1、他不会sen...
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/460/A题目意思:有一个人有 n 对袜子,每天早上会穿一对,然后当天的晚上就会扔掉,不过他会在 m 的倍数所代表的天数(1m,2m,3m...)会购入一双袜子,不过是在那一天的晚上买。问他拥有的袜子够他穿几...
阅读全文
摘要:题目链接:http://codeforces.com/contest/436/problem/A题目意思:给出 n 颗只有两种类型:fruit 和 caramel的candies,这些candies是挂在屋子上的,对于第 i 颗candy,它离地面为 hi 厘米,质量为 mi;有只叫Om Nom的怪...
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/437/A题目意思:给出四个选项A、B、C、D选项的内容描述,要求选出符合以下条件的一项。 (1)如果某个选项描述(排除前缀X.)的长度至少两倍短于其他选项,即 2*某个选项的长度 2 #include ...
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/430/B题目意思:给出用不多于k种颜色对n个球的染色情况,以及手中的唯一一个球的颜色。初始时,连续的相同颜色的球不多于两个。问用这个手中的球射向同种颜色且不少于两个时,能够destroy的球的数量的最多情况...
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/420/B题目意思:给出一段连续的消息记录:记录着哪些人上线或者下线。问通过给出的序列,找出可能为leader的人的编号。符合leader的条件是:至少有一个人上线的时候,绝对要有该人(leader)的存在。...
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/400/C题目意思:给出一个n行m列的矩阵,问经过 x 次clockwise,y 次 horizontal rotate 和z次counterclockwise 之后,原来在n行m列的矩阵的坐标去到哪个位置。 题目意思很容易看懂。易知,对于clockwise,counterclockwise的次数,mod 4 == 0 相当于没有改变!而对于 horizontal rotate,mod 2 == 0 也是没有改变的! 假设问的坐标是(i, j),那么经过一次clockwise的转变,坐标变为(j, n.
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1106 这个题目一开始以为是水题,就想着用来轻松轻松,谁知道改得我想吐!! 除了discuss 中的数据外,还加上这两组,一般就能过了:001568970056 5551235555789 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int maxn = 1000 + 10; 7 char s[maxn], t[maxn]; 8 int a[maxn]; 9 10 int main()11 {12 ...
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/279/A题目意思:给出一个坐标点(x, y),问当从(0, 0) 开始到达该点转过的拐角有多少个。(拐角是这样的:(0, 0) -> (1, 0) -> (1, 1) -> (-1, 1) -> (-1, -1) -> (2, -1) -> (2, 2) ->...),总的来说,对于每一圈可以想成它是从坐标系的第四象限开始的(x > 0 && y 2 #include 3 #include 4 #include 5 using names
阅读全文
摘要:题目链接: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...
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/289/B题目意思:给出一个 n 行 m 列的矩阵和数值 d 。通过对矩阵里面的数进行 + d 或者 - d 的操作,是否可以使矩阵上的所有数相等。可以的话输出最少的操作步数,否则输出 -1。 由于矩阵的排列对处理没什么影响,因此不需要用到二维数组存储。接着把矩阵中所有的数从小到大进行排序,要想算出最少的步数,很容易想到应该最中间的数(中位数)靠拢。最关键的是如何判断不能通过对矩阵中的数进行处理使得所有数相等。我的做法是,在将每个数向这个中位数靠拢的过程中,它们的差(绝对值)应该能被 d 除尽,一旦有一
阅读全文
摘要:题目链接: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...
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/313/B题目意思:给出一个只有 "." 和 "#" 组成的序列s,问当给定一个区间 [li, ri] 时,si = si + 1(".." 或者 "##")的个数。(li ≤ i 2 #include 3 #include 4 #include 5 using namespace std; 6 7 const int maxn = 1e5 + 10; 8 int cnt[maxn]; 9 10 int main()11 {
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/382/C题目意思:给定一个序列,问是否可以通过只插入一个数来使得整个序列成为等差数列,求出总共有多少可能的情况,并输出这些数。 n = 1、 n = 2 和 整个序列是常数列 的情况比较容易判断。不过要注意n = 2的时候,也需要判断两个数之间是否也可以通过插入一个数来构成等差数列。 关键是讨论n>=3的情况。预处理:把整个输入序列从小到大排序。之后,得到公差是第一要务!如果可以从中插入一个数(这时一定不是两端,也就是说这两种情况是互斥的),那么两个相邻的数之差 = 公差的次数会是最多的!只要找
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/379/A题目意思:给定a支蜡烛(每支蜡烛可以燃烧1小时),可以在燃尽的a支蜡烛中看能组成多少组b支蜡烛,每组可以换取一支新的蜡烛。接着换取后的蜡烛燃尽之后数量又可能是b的倍数(记得总数量还应包括余数),问这些蜡烛总共可以燃烧多少个小时。 一开始有多少组b支蜡烛,实质是a/b。由于可以除不尽,要检验a%b。那么目前的蜡烛就总共有a/b + a % b。不断地把 a/b相加,直到a 2 #include 3 #include 4 using namespace std; 5 6 int main(...
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/369/B题目意思:给出6个整数,n, k, l, r, sall, sk ,需要找出一个满足下列条件的序列:1、 l 2 #include 3 #include 4 using namespace std; 5 6 int n, k, l, r, sum, sumk, cnt, res1, res2; //cnt的使用是为了区别第一次的调用和第二次的调用 7 8 void solve(int p, int n) 9 {10 int i, j, p1, p2, p3, p4, p5...
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/362/B题目意思:给出整数n和m,表示有n级楼梯和m级dirty的楼梯,接下来m个数表示对应是哪一个数字的楼梯是dirty的楼梯,不一定是按小到大给定的,需要判断的是,在只可以走一级、二级或三级的情况,是否可以把所有的非dirty楼梯走完。当然,如果dirty的楼梯中包含第一级(初始位置)或者最后一级(最终位置),那么默认是不能走完非dirty楼梯的。 由于给定的dirty楼梯的数字是任意无序的,所以先要排序再处理。接着判断,一旦如果dirty楼梯是连续的三个数字,那么就不能把所有的非dirty楼梯走
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/358/A题目意思:在横坐标上给出n个不同的点,需要把前一个点跟后一个点(这两个点的顺序是紧挨着的)用一个半圆弧来连接。现在要判断的是这些符合条件的点连接以后,圆弧之间是否相交了。是则输出yes,否则输出no。 假设序列是x1,x2,x3,x4.....xn。相交其实只有两种情况,第一种就是样例已经给出了的:即 x1 2 #include 3 #include 4 using namespace std; 5 6 const int maxn = 1000 + 10; 7 int a[maxn]...
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/357/A题目意思:将一堆人分成两组:beginners 和 intermediate coders 。每一个人都有一个point,给出每一个point里的总人数(Ci 个人有分数 i )和 x,y,需要找出划分为两组后,每一个组的人数(假设为a,b)符合 x = x时,就验证(总人数 - 这个从前往后依次累加的人数)是否也满足 2 #include 3 #include 4 using namespace std; 5 6 const int maxn = 1e4 + 10; 7 8 str...
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/355/A题目意思:找出某个经过最多四次dr(n)操作等于d的k位数。 千万不要想得太复杂,想得越简单越好。由于它允许dr(n)的操作最多只能是四次,那么操作一次肯定是符合条件的。也就是经过一次dr(n)操作就能得出直接结果d的数(有k位)。 由于这个数不能有前导0,非常简便的一个方法是,这个k位数是这样的:d000...00(0的个数等于k-1)。要特别注意,什么时候应该输出“No solution”。答案是 k >= 2 并且 d = 0。000这样的数,你不会认为是符合合法数字的标准吧? 1
阅读全文

浙公网安备 33010602011771号