CodeChef August Lunchtime 2014 题解】的更多相关文章

A题 给一个由a和b两种类型的字符组成的字符串,每次可以从中选取任意长度的回文子序列(不一定连续)并删除.问最少需要几次能将整个字符串为空. 思路:如果本身是个回文串,那么只需要一次,否则需要两次(第一次选全部的a,第二次全部选b). Accepted Code: def is_palidrome(s): n = len(s); for i in xrange(n / 2): if s[i] != s[n - i - 1]: return False; return True; if __nam…
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-23.4 Draft Report Errors and Issues at: https://bugs.ecmascript.org Product: Draft for 6th Edition Component: choose an appropriate one Version: Rev 27, August 24, 2014 Draft Ecma/TC39/2014/0xx…
「Codechef April Lunchtime 2015」Palindromeness 解题思路 : 考虑对于回文子串 \(s\) 贡献的定义: \[ value_s = [\ s[1,\lfloor \frac{|s|}{2}\rfloor]\text{ is palindrome}]\times value_{s[1,\lfloor \frac{|s|}{2}\rfloor]} + 1 \] 也就是说对于每一个回文子串,只需要判断其前一半的字符是不是回文串并得到贡献即可. 于是建出回文树…
题目地址https://www.codechef.com/LTIME44 Nothing in Common 签到题,随便写个求暴力交集就行了 Sealing up 完全背包算出得到长度≥x的最小花费,然后对每条边的长度向上取整分别算一下.本来也是签到题的结果我调了1h+.. Segment Queries 定义连续段为被激活的极长子串,一条线段被激活当且仅当它的两个端点在同一个连续段,用set和并查集维护连续段内的询问,修改时当前点成为新的连续段,并和两侧连续段(如果有)启发式合并一下,O(n…
题目链接:http://www.codechef.com/JAN14/problems/SEAGRP [题意] 给n个点,m条边的无向图,判断是否有一种删边方案使得每个点的度恰好为1. [分析] 从结论入手,每个点的度恰好为1,那么就意味着每个点只能连接一个点,这样问题就转化为图中的点能否刚好两两配对. 对于奇数个点肯定是不行的,因为一定存在一个点不存在与之配对的点.    如果点是偶数,那么就要求这个图的最大匹配,看匹配树是否为点数的一半. 求匹配的方法和二分图类似,不断找增广路更新匹配数就好…
找出一个数组中的三个数,三个数不能组成三角形. 三个数不能组成三角形的条件是:a + b < c 两边和小于第三边. 这个问题属于三个数的组合问题了.暴力法可解,可是时间效率就是O(n*n*n)了,非常慢. 只是既然是组合问题就必然能够使用排序后处理的方法减少时间效率的. 这里减少时间效率的方法是: 选一个最大的数c.然后选两个小数a和b,当中a < b,假设符合条件,那么两个数中间的数必然都能够作为b符合条件a + b < c 这样能够把时间效率降到O(n*n). 这个规律也不好找啊.…
The Street Problem Code: STREETTA https://www.codechef.com/problems/STREETTA Submit Tweet All submissions for this problem are available. Read problems statements in Mandarin Chineseand Russian. The String street is known as the busiest street in Cod…
传送门 \(CHNUM\) 显然正数一组,负数一组 for(int T=read();T;--T){ n=read(),c=d=0; fp(i,1,n)x=read(),x>0?++c:++d; if(!c)c=d;if(!d)d=c; if(c<d)c^=d^=c^=d; printf("%d %d\n",c,d); } \(CHDIGER\) 从原来的数列中选出字典序最小的上升子序列,往后面加\(d\)就行了 //minamoto #include<bits/st…
地址https://www.codechef.com/LTIME58B?order=desc&sortBy=successful_submissions 简单做了一下,前三题比较水,第四题应该算是经典题 AChef and Friends 直接暴力枚举即可 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; , INF = 1e9 + ; inline int r…
https://www.codechef.com/problems/FNCS [题意] [思路] 把n个函数分成√n块,预处理出每块中各个点(n个)被块中函数(√n个)覆盖的次数 查询时求前缀和,对于整块的分块求和,剩下右边不构成完整的一个块的树状数组求和 预处理:计算每个块中,序列中的第i个点被块中函数覆盖的次数,求出每个块内前缀的和(O(n√n)):对于每个点,更新树状数组(nlogn) 单点修改:对于块状数组,因为已经知道了每个点被覆盖的次数,所以维护很简单(O(√n));对于树状数组,直…