摘要:
题意:两根导线绕在一起,问能不能拉成两条平行线,只能向两端拉不能绕思路:从左至右,对+-号分别进行配对,遇到连续的两个“+”或连续的两个“-”即可消掉,最后如果全部能消掉则能拉成平行线。拿两根线绕一下就理解了,也可以一根拉成直线,另一根围着它绕,然后观察能拉成直线的条件。用栈实现就行。 1 2 3 ... 阅读全文
摘要:
题意:给若干个阻值为1的电阻,要得到阻值为a/b的电阻最少需要多少个。思路:令a=mb+n,则a/b=m+n/b=m+1/(b/n),令f(a,b)表示得到a/b的电阻的答案,由f(a,b)=f(b,a),有:f(a,b)=a/b + f(a%b,b)=a/b+f(b,a%b)(1)由于将所有的电阻... 阅读全文
摘要:
题意:S是平面内点的集合,初始为空,每次向集合里面加入一个点P(x,y),询问S内最近点对的距离的平方和思路:设当前集合的答案为D,则找到集合里面横坐标在(x-√D,x+√D)内的数,用它们来更新答案,一边更新答案一边还要更新右边界x+√D,此时的更新注意不要用浮点数开平方算具体右边界,改用判断即可... 阅读全文
摘要:
题意:给n个三角形,分别求覆盖1次~n次的总面积思路: 对每个y坐标作一条平行于x轴的直线,按直线从下往上处理,每两条直线之间为若干梯形(也可以是三角形)首尾相连的情况,从左扫到右时,用一个变量cnt记录当前区域被覆盖的次数,遇到入边cnt++,遇到出边cnt--,边扫边更新答案。入边表示这条边的右... 阅读全文
摘要:
题意:给一个长度为16的字符串,每次从里面删掉一个回文序列,求最少需要几次才能删掉所有字符思路:二进制表示每个字符的状态,那么从1个状态到另一个状态有两种转移方式,一是枚举所有合法的回文子序列,判断是否是当前状态的子状态,再转移,二是枚举当前状态的所有子状态来转移。前者最坏复杂度O(2^16*2^1... 阅读全文
摘要:
题意:给一个数n,找一个正整数x#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace s... 阅读全文
摘要:
题意:给一个长度为2000的字符串,10000次询问区间[L,R]内的不同子串的个数思路:对原串的每个前缀求一边后缀数组,询问[L,R]就变成了询问[L,n]了,即求一个后缀里面出现了多少个不同子串。于是对所有大于等于L的后缀统计一遍即可。 1 2 3 4 5 6 7 8 9 10... 阅读全文
摘要:
题意:给n个节点的树编号1-n,一个节点唯一对应一种编号,要求编完号的树满足如下性质:所有节点的儿子的编号是连续的,对一棵子树,它包含的所有节点的编号也是连续的。连续的意思是把所有数排序后是一段连续的区间。思路:由于所有子树是连续的,所以可以用区间来表示子树,设要给当前子树编号为[1,n],如果当前... 阅读全文
摘要:
题意:给一个二进制码,其中有一些位上为'?',对每个问号确定是'0'还是'1',最后以它对应的格雷码来取数,第i位为1则取第i个数,求取得的数的和的最大值。思路:二进制码B转换成格雷码G的方法是,Gi=Bi^Bi+1,Gn=Bn。所以第i位如果为'?',那么选'1'还是'0'只会影响邻位,于是用dp... 阅读全文
摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=5373思路:按题意来即可。 1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132333435363738394041424344454647... 阅读全文
摘要:
题意:在一个字符串里面找最长的[A][B][A]子串,其中[A][B]是回文串,[A]和[B]的长度相等思路:[A][B]是回文串,所以[B][A]也是回文串。先预处理出每个点的最大回文半径Ri,枚举[A][B]的对称轴位置p,那么就是要找最大的一个[B][A]的对称轴位置i,满足i#include... 阅读全文
摘要:
题意:有两种操作:(1)插入线段,第i次插入的线段左边界为Li,长度为i (2)删除线段,删除第x次插入的线段。每次插入线段之前询问有多少条线段被它覆盖。思路:由于插入的线段长度是递增的,所以第i次插入的线段的长度比以前插入的所有线段都要长,从以前插入的线段里面任取一条,考虑其与当前线段的位置关系,... 阅读全文