10 2018 档案
摘要:看90,956这样的串,在比较完之前,就确定大小的,必定选大的放在前。而x=98,y=980;这样的,比较x+y和y+x的大小。如果x+y更小,y就放前。
阅读全文
摘要:喷水装置的圆心和半径确定,就能确定左端和右端。开始时pos=0,选取左端小于pos,右端最大的更新pos。 重复。
阅读全文
摘要:先取正的和负的绝对值较小者为开头 。然后交替从正负数中取绝对值最小但比上一个大的。 证明: 1.开头选正负数中绝对值较小的:否则能再多放1个。 2.交替选的时候选最小的符合条件的:如果大的符合,换小的仍符合。
阅读全文
摘要:观察样例得知就是和离'_'左边最近的'w'交换位置,然后和离'_'右边最近的'b'交换位置,轮流进行。
阅读全文
摘要:如果单单只安排过程1的时间最短,很容易算出来。用优先队列取最小,加上增量后再放回就行。对过程2也进行这样的操作。将过程1第一个完成的在过程2最后一个完成。以样例来说,过程1:1,1,2,2,3,过程2:1,2,3,3,4。那么小的和大的组合用时最少。
阅读全文
摘要:将余数记录下来,如果余数相同,那么商的下一位也相同。
阅读全文
摘要:#include #include #include #include #include #include #include #include #include #include #include #include #include #define mkp make_pair using namespace std; const double EPS=1e-8; typ...
阅读全文
摘要:用dp[i][j]记录i个点,组成深度恰好为j的方案数。arr[i][j]记录i个点,深度<=j的方案数。那么dp[i][j]只有i为奇数时不为0。而arr[i][j]等于dp[i][j]的前缀和(i相同时)。而dp[i][j],i为奇数有值,等于左子树分奇数个,右子树分奇数个的所有情况,并且左子
阅读全文
摘要:原本就想到dp,可是是我的思路是在串的各个位置都遍历一次set,看dp[i-st[k]]是否为1且前length(st[k])是st[k]。这样200000*200*10会超时。更好的办法是在i位取前len<=10个看dp[]和set中是否存在。只要200000*55*log200。
阅读全文
摘要:就是模拟。同一个开关按2下相当于没按,那么,如果一共按0下,就是没按,按1下就是4个开关的1个,按2下可能相当于实际按了0下或按2下,按3下实际按了1下或3下,之后如果是奇数,相当于按1或3下,偶数相当于按0,2,4下。再看一下是否符合。数据太小根本不会超时。
阅读全文
摘要:用这个函数转成罗马数字统计就行了。 string intToRoman(int num) { string c[4][10]={ {"","I","II","III","IV","V","VI","VII","VIII","IX"}, {"","X","XX","XXX","XL","L&
阅读全文
摘要:如果将1和3都放到正确的位置,2自然也在正确的位置。那么统计1,2,3的数量num1,num2,num3。再看前num1个数有几个(设x个)不是1,那么x个1肯定要移。设前num1个数有y个3,最后num3个数有z个1,那么这个过程中,最多能将min(y,z)个3移到正确位置。剩下num3-min(
阅读全文
摘要:原图找最大的房间及房间数很容易。然后从左下到右上找拆的位置。拆掉再bfs一次找面积。
阅读全文
摘要:深搜,添加数字后如果仍为质数,继续递归。
阅读全文
摘要:1.回文质数的数量很少 2.除了11以外的回文质数都是偶数。 3.1-1亿内的回文数不到30000个。 4.1-10000的质数约1000个。 这样深搜找出所有的回文数,再判断是否质数。
阅读全文
摘要:一开始没用数组,没成功。后来确定用深搜后,用数组。出现一个不同的abc状态就记录下来,以免重复。一开始要倒的肯定是c杯,之后出现新状态要递归dfs3次。另外发现algorithm里的copy是原数组在前,输出数组在后的。
阅读全文
摘要:用优先队列存放不连续的断点及断的位置。优先取间距大的,在断点断开。
阅读全文
摘要:题意:最均衡地分配硬币。 先分配给所有人的数量向下取整,然后取不公程度最大的几个人加1。因为向下取整丢失了小数,而一个数向下取整时小时丢得最多,向上取整获得就越少。
阅读全文
摘要:题意:给出字符出现的次数,问替换成哈夫曼编码后的文本长度。 实际上观察发现就等于树的所有节点的和。用nlogn超时。用O(n),用两个队列,一个放原始数组,一个放新生成的节点。
阅读全文
摘要:题意:铺马路,不出现2*2的同颜色的方格的方案数。 由于m很小,因此一行最多有32种涂法。而一行的涂法是从上一行转移过来的。比如: m=2时,0表示白砖,1黑砖。 A:00,B:10,C:01,D:11 A B C D A 0 1 1 1 B 1 1 1 1 C 1 1 1 1 D 1 1 1 0
阅读全文
摘要:题意:给出的图连成矩阵,问转置矩阵和原矩阵乘积后的元素和。 随便拿个矩阵模拟一下会发现,结果就是各点度的平方和。
阅读全文
摘要:题意:1号开始,一次加k再%n运算,再到1时已经经过了所有的点,问最大的K(k>=n/2)。 1.如果n是奇数,n与n/2互质。 (1)如果n是质数,结论显然成立 (2)否则,n分解为质数乘积。假设n%3==0,那么n=3,9,15,21......(因为前提是奇数),n/2=1,4,7,10。观察
阅读全文
摘要:题意:开始只有某一展台(设为A),有2种操作。1.A展台上放B产品(或者B展台放A产品)。2.A展台左边1位放B展台,左边2位放A产品。给出最终产品的排列,问能否实现。 考虑最后一个用2操作的展台,因为是最后一个用2操作的展台,它的左边2个一定是对方的。比如A展台最后要放B产品,而它左边2位都放A产
阅读全文
摘要:题意:给出递推式问第k项。 因为最多模1000,因此结果不超过1000,又由于当前项唯一决定下一项,因此1000以内必循环。用map记录循环起点和周期。
阅读全文
摘要:题意:逆序对组数。 用树状数组或归并排序,经典问题。注意结果long long。
阅读全文
摘要:题意:假设'('<')',给出一个匹配的串,问下一个匹配的串。 看标程输出的结果很久才发现转换机制。 从右边开始,忽略长度为2的()子串。 1.如果右边有'()'子串:找到第一个(,换成')' (1).如果新产生了单独的'()',和后面的合并成(((((())))))这样的。 (2)如果没有,就将后
阅读全文
摘要:题意:已知在原串的位置,问在编码串的位置。 写个递归函数。水平够的话一下就能写出来。
阅读全文
摘要:题意:在第几条线时已有的线组成了封闭图形。 并查集在当前直线将2点检查是否已经连起来了。已经连起来就输出,否则连起来。
阅读全文
摘要:题意:分配一种方案,让入围的人权重和最大。 尽量让权重大的先加入,在可选的中选要求最高的。如果一个都不行,就给他分配给要求最高的(开始实现的时候忘了应选map最靠后的)。
阅读全文
摘要:题意:一个串变为另一个串要移动的次数。 串中相对位置相同的移过去就行。
阅读全文
摘要:题意:n和n+1同时被数位乘积整除的k位数个数。 假如a是237,b是238。由于个位以前的数一样。那么对于2,如果a%2==0,b%2就!=0,如果a%3==0,b%3就!=0。因此个位以前的数只能是1.再列举个位的情况。
阅读全文
摘要:题意:矩阵中式子的值。 找规律发现res[i][j]就是取对角线和x=i的围的面积的右下角。那么要么最小在第j列产生,要么在j+1列以上产生。j+1列以上产生时就等于res[i-1][j+1],看面积就知道。i-1<1时就找1.
阅读全文
摘要:给出n,m。从n个数中选几个相乘,再%m。能取到的最大值和取法。 用dp[i][j]记录前i行能否取到j这个结果。那么dp[i][j]至少等于dp[i-1][j],还能等于所有的dp[i-1][j]*arr[i]%m。要输出方案,那么如果在记录的过程中,j*arr[i]%m在i-1没出现说明是新得出
阅读全文
摘要:首先,证明结果一定是取某些整行,再加上一个多余的一行的前几个。 假如: x1<=x2<=x3<=x4<=x5 y1<=y2<=y3<=y4<=y5 取6个,最优解是取x3,x4,x5,y3,y4,y5。那么: (1)如果y3>=x2,那么y3+y4>=x1+x2。就取掉y3,y4取x1,x2更优。
阅读全文
摘要:Factorial 题意:能否找到一个数,它的阶乘后面0的个数为n? 数越大,阶乘后的0越多。用二分找。对于一个数x,它的阶乘,将小于等于它的数分解质因数。其中2的个数一定大于5的个数。因此计5的个数就是结果末尾0的个数。比它小的数有x/5个5的倍数,x/25个25的倍数。那么5的数量就是x/5+x
阅读全文
摘要:题意:一个人在环形跑道上跑,最后距离原点多远? 注意转为long long 时要加0.5,否则会少1.
阅读全文
摘要:题意:两人在x,y两时刻之间出现,先到的最多等z分钟就离开。问相遇机率。 画坐标轴,横轴表示x出现的时间点,纵轴表示y出现的时间点。过原点斜率为1的直线表示恰好相遇。上下平移z就是能相遇。
阅读全文
摘要:模拟就行。注意int arr[][]二维数组在定义时是二维数组,而函数传参时是指针。这意味着memset()的不同。传参时只能当作一维逐个memset。
阅读全文
摘要:用扫描线记录最长线段长度,扫左端时表示有线段,如果num为0就是一个区间的开始,个数++num;扫右端时--num,如果为0,是区间的结束。记录最值。
阅读全文
摘要:题意:16数码是否有解? 先计算展开成一维后逆序对。如果0在最后一行,那么逆序偶时有解。4*4时(n为偶)0的位置上升一行,逆序对+3或-1(奇偶性变化)。(n为奇时+2或+0,不变)
阅读全文
摘要:题意:给出所有人比的场数,设计一种方案。赢的人必须连续打下一轮。 能得知2个结论:1:不会有人的场数超过场数和的一半,否则他的对手会有自己。2:要打赢一个人的人至少会打2场,因为他打赢算1场,然后还必须参加下一场。打2场以上的人打的场数和>=所有人的场数和的一半。 这样的话,就用场数多的当胜者,他打
阅读全文
摘要:题意:画n条线最多将平面分成多少块? 画线的时候,尽量与原有的先相交,且不经过原先的交点,这样能新生成最多块。如果原先有a条线,这样切能产生a+1块。最开始有1块,线有0条。找规律发现一条在0条基础上+1,2条在1条基础上+2,3条在2条基础上+3.n条就是1+一个等差n项和。
阅读全文
摘要:题意:完全被其它区间包括在内的区间有几个? 类似将前面元素放入优先队列的方法。先将元素按pair排序。因为数据中所有的左右端点(记为[x,y])都不同。因此循环到第i个元素时,x比它小的都在它左边,因此它只能被左边的元素包括,用maxv记录它左边元素最大的右端点,如果maxv>第i个元素的y,就能。
阅读全文
摘要:题意:2k个点两两相连(共k条线),将圆分成最少的块的方案数? 卡特兰数经典问题。一开始没想到第一条线能与所有偶数编号的点相连,以至于认为是2^(k-1)。用catalan(n)=catalan(n-1)*(4*n-2)/(n+1)先记录。
阅读全文
摘要:题意:较大的容量减较小的容量,较小的容量翻倍。问操作几回其中一个空。 开始用set判重,重复就不可行。不过状态最多有2e18种。不仅爆内存,还超时。然后找规律。发现只有比例为1:1,1:3,1:7,3:5,1:15,3:13,5:11,7:9......这样才行。也就是化简以后相加是2^k。 超内存
阅读全文
摘要:题意:构造方格。 用dfs从左到右,上到下填。填一个就看左边和上边(如果有)的还能不能。左边的进行可行性检测,就是计算周围大于自己的数量,没填的算大于自己,然后看能不能>条件。而对上方的元素进行确定性检测,就是是否严格等于。注意最后一行对左边要确定性检测,而要对最后一个元素单独进行一次确定性检测。
阅读全文
摘要:题意:算式中结果的数字根。 先取两数的数字根再乘起来,和先乘起来再取数字根结果一样。因此化简式子。
阅读全文
摘要:题意:用最少的super-prime组成n; 找出所有的super-prime数,只有202个。用完全背包记录能取到n值的最少数量。再找出7要哪些元素。
阅读全文
摘要:题意:略。 奇数的话,只要留下中心。只要2轮,先将除中心的奇数编号去掉。再将偶数编号去掉。行动奇数距离。 偶数的话逐层去,先去最外层,去掉与1,1的曼哈顿距离为偶数且在最外层的,再去掉曼哈顿距离为奇数且在最外层的。类推。
阅读全文
摘要:题意:这样的数有几个? 模仿筛法就能解出,但是内存不够。这就需要重复利用数组,用100大小的数组,所有的数对100取模。对于一个数,比如71,就在arr[78]=71记录下来。到78时,检查78-71<90。说明近期有数能产生78。而178对100取模也是78,如果后来(比178小90以内的数)没有
阅读全文
摘要:题意:略。 先用dfs找出9位数中平方末尾是987654321的个数。具体来说,设乘数a8a7a6a5a4a3a2a1a0,平方。那么,a0只能是1或是9。如果是9将进位8(记为c)递归给十位。十位是(a1*a0+a0*a1+c)%10,检查如果是2,再递归(a1*a0+a0*a1+c)%10给下一
阅读全文
摘要:题意:给出式子,问x,y在范围内的解的个数。 1:如果a==0&&b==0,c==0有解,否则无解。 2.否则(本题没有a==0或者b==0的数据) a!=0&&b!=0。用ex_gcd得出,abs(a)x+abs(b)y==gcd(abs(a),abs(b)),时x,y的特解,记d=gcd(abs
阅读全文
摘要:题意:第2朵花放的花瓶编号要比第1朵花放的编号大。给出各花放各花瓶的价值,要价值和最大。 dp[i][j]表示第I朵花必须放在第j瓶中的前i朵花最大收益和。那么就等于dp[i-1][j]中的最大+当前花的价值。复杂度n^3。 看了别人的,还能用dp[i][j]表示第i朵花放第j瓶以内的最大收益和。那
阅读全文
摘要:题意:乘法 要用nlogn的fft乘法。
阅读全文
摘要:题意:给出名字和地方,地方会重定向,最后再给出名字,问现在属于哪里? 用并查集。
阅读全文
摘要:题意:比给出的数大的最小回文数。 先用前n/2长对称到后面,如果没变大,在中间加1,进位,再对称。
阅读全文
摘要:题意:判断ll-rr范围内的质数。 一个个用miller-rabin算法判断
阅读全文
摘要:题意:给出几个词语,问能不能接龙。 一开始猜只要所有字母连通,并且只有一个字母出现在开头次数为奇,一个字母末尾为奇,其它偶,就行。后来发现全为偶也行。而且条件也不对,比如ac,ac,ac就不行。实际上是一个字母在开头的次数比在末尾的次数多1,一个少1.
阅读全文
摘要:题意:到一个城市得钱,离开要花钱。开始时有现金。城市是环形的,问从哪个开始,能在途中任意时刻金钱>=0; 一个开始指针i,一个结尾指针j。指示一个区间。如果符合条件++j,并将收益加入sum中(收益可能是负数)。不符合就++i,并从sum中退掉收益直到sum>=0;区间长度为n时i的位置就是结果。
阅读全文
摘要:题意:每个人出场时获得等待时间*值的unhappy值。有个栈换出场顺序。问怎样最小? 一开始的时候觉得在中间取断点,dp[i][j]表示区间全出场后的最小值。那么dp[i][j]=dp[i][k]+dp[k+1][j],但这样是不行的。因为有可能最优解是[i][k]只出场部分,剩一些在栈里,然后再出
阅读全文
摘要:题意:有一刷子,能将区间内涂成同一字母。给出src,dst串,问最少涂几次? 用dp[i][j]表示区间[i,j]内最少涂的次数。len=1,2时很明显。len=3时,dp[i][j]要么就在dp[i][j-1]的基础上多涂一次,要么和[i,j-1]中某个和它同字母的一起涂。设第k个和j一样,那么就
阅读全文
摘要:题意:给出要n个时间穿的服装。服装脱下就不能再穿。问最少要准备多少? dp[i][j]表示i到j之间最少花费。如果n=1(n指长度),肯定结果为1,n=2时,也很好算。然后n=3的时候dp[i][j],到前面找和它相同的k,因为只有和它相同的才能在n=3的时候利用上。dp[i][k]的结果k肯定在最
阅读全文
浙公网安备 33010602011771号