11 2013 档案
摘要:题目链接: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/363/C题目意思:纠正两种类型的typos。第一种为同一个字母连续出现3次以上(包括3次);另一种为两个不同的字母各出现2次。需要把使用最少次数而纠正好的word输出来。 为了方便操作,这里我都是通过删去后一个字母来纠正typo的,即如果是wwaattyy,假设看成两组:wwaa和ttyy,那么纠正完的分别是:wwa和tty。至于第一种类型的typo比第二种简便,只需要把同一个字母删除到只剩下2个即可。 注意,这里的删去并不是真的删去,而是通过向应该删去的元素赋值,这里以字符'0'来处
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/365/B题目意思:简单来说,就是要找出最长的斐波纳契长度。解决的方法不难,但是要注意更新左区间和右区间的值,而且需要把当前求出的斐波纳契长度和之前求出的斐波纳契长度进行对比,以便更新得出的最长的斐波纳契长度。 特别注意的是,序列只有一个、两个或者没有斐波纳契长度的处理。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int maxn = 1e5 + 5; 7 int a[maxn]; 8 9 int mai...
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/349/B题目意思:给定v升的颜料和9个需要花费ad 升的颜料,花费ad 升的颜料意味着得到第d个数字,现在要求在所有的花费不超过v升的情况下,使得这些数字组合起来是最大的。一开始直接从最小花费的颜料着手,如果花费的颜料是相同的,就转到从d(也就是位数)最大贪心。这样测试9就开始卡住了。 受到乌冬兄的指点迷津,终于有了思路,陆陆续续改了很多次,终于过了。以下摘自他的语录,白话文,大家请谅解: 稳用颜料最少,最大的数字,先保证位数最长,然后再将剩余颜料从大数字开始贪心 因为要数最大,所以根据“数”的比较顺
阅读全文
摘要:题目链接: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/315/A题目意思:有n个soda bottles,随后给出这n个soda bottles的信息。已知第 i 个bottle来自品牌ai,你可以用这个品牌 ai 来开所有属于品牌bi 的bottles。注意,other特别用黑色粗体来强调,表明该行的除外,也就是说,假如i = 1(隐含的),ai = 1,bi = 1,这个bottle 1 是不能被打开的。需要找出无论用什么方式都不能打开的bottle的总个数。 另外,有可能同一个bottle可以被多个不同的ai 打开,所以要增加一个额外的vis数组来防
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/361/B题目意思:有n个数,这些数的范围是[1,n],并且每个数都是不相同的。你需要构造一个排列,使得这个排列上的数与它所在位置的序号的最大公约数满足 > 1,并且这些数的个数恰好满足k个,输出这样的一个排...
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/363/B题目意思:给定整数n和k,需要从n个数中找出连续的k个数之和最小,输出这连续的k个数中的第一个数的下标。 直接暴力果断TLE,于是想到之前做的那条332B - Maximum AbsurdityDP题的做法,决定开多一个额外的数组b[],在输入的时候把a[i]中前i个数的和都记录到b[i]中,这样通过b[i] - b[i-k]即可得出序列h1, h2, ..., hn(1 ≤ hi ≤ 100) 所有连续的k个数之和。特别要注意,当i-k >= 0的时候才能进行相减的操作,防止数组下标越
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/359/B题目意思:给定n和k的值,需要构造一条长度为2n(每个元素取值范围只能是[1,2n])且元素各不相同的序列,这条序列符合等式。 首先非常感谢乌冬兄和syy的帮助!!尤其是乌冬兄。 刚开始做的时候完全没有思路,写出那条等式的展开式也没有发现规律。在他们的思维引导之下,我终于明白了这个问题其实可以简化为求一对数(假设为ai-1,ai)的差,这个差 = k 即可,但是k必须为负数!!!也就是ai-1 aj 即可。 为什么可以这样做?注意这条等式。除了那一对数的差之外,其他对数是可以消去的,前提是..
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/358/B题目意思:给出n个单词(假设为word1,word2、word3...wordn)和一句test message,需要判断的是,这个 test message在去除一系列随机插入的英文字符后,是否满足 2 #include 3 #include 4 #include 5 using namespace std; 6 7 const int maxin = 1e5 + 10; 8 const int maxsave = 1e6 + 10; 9 char a[maxin], b[maxin...
阅读全文
摘要:题目链接: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/359/A题目意思:给出一个n行m列的table,你需要选择一个good cell(假设为(x, y), 1 2 #include 3 #include 4 using namespace std; 5 6 int main() 7 { 8 int i, j, n, m, t, f2, f; 9 while (scanf("%d%d", &n, &m) != EOF)10 {11 // freopen("in.txt", "r"
阅读全文