上一页 1 2 3 4 5 6 7 8 9 ··· 21 下一页
摘要: 题意:给你一颗树,每个结点的儿子数不超过2。每个结点有一个权值,一个结点的代价被定义为将其子树中所有结点的权值放入数组排序后,每个权值乘以其下标的和。让你计算所有结点的代价。 二叉树的条件没有用到。 每个结点开一个Splay,从叶子往上启发式合并上去,可以先bfs一遍确定合并顺序。每一次将Splay 阅读全文
posted @ 2017-08-17 22:55 AutSky_JadeK 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 给你10个箱子,有长宽高,每个箱子你可以决定哪个面朝上摆。把它们摞在一起,边必须平行,上面的不能突出来,问你最多摆几个箱子。 3^10枚举箱子用哪个面。然后按长为第一关键字,宽为第二关键字,从大到小排序。 如果前面的宽大于等于后面的宽,就连接一条边。 形成一张DAG,拓扑排序后跑最长路即可。 阅读全文
posted @ 2017-08-17 01:26 AutSky_JadeK 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 两个等长字符串A,B的距离被定义为 给你一个字符串,问你对于所有长度相等的不相交子串对,其距离不超过m的前提下,最长的长度是多少。 枚举对称轴,两侧先贪心地扩展到最长,超过m之后,再缩短靠近对称轴的端点,如此反复进行,每次更新答案的时候,都用的是当前“近对称轴端点”固定时的最长值。 复杂度O(n^2 阅读全文
posted @ 2017-08-17 00:00 AutSky_JadeK 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 一开始有n个杯子,每个杯子里有一些豆子,两个人轮流操作,每次只能将一个豆子移动到其所在杯子之前的某个杯子里,不过可以移动到的范围只有一段区间。问你是否先手必胜。 一个杯子里的豆子全都等价的,因为sg函数是异或起来的值,所以一个杯子里如果有偶数个豆子,就没有意义。 用sg(i)表示i杯子中的豆子的sg 阅读全文
posted @ 2017-08-16 23:52 AutSky_JadeK 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 这份代码可以作为找割边的模板。割边分割出来的部分是无向图的 边-双连通分量。 平面上2*n+1个点,在同一横坐标上的点之间可以任意两两匹配。同一纵坐标上的点之间也可以。问你对于所有的点i,输出i被移除之后,剩余的点能否完美匹配。 把x坐标当一列点,y坐标当一列点,原本的点当做边,建出来一个二分图。 阅读全文
posted @ 2017-08-16 23:45 AutSky_JadeK 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 一个矩阵,每个位置有一个非负整数,一个人从左上走到右下,不能走重复的格子,问得到的最大权值。 当长宽不都为偶数时,必然能走遍所有格子,横着从左到右,从右到左(或是竖着走)走完即可。 当长宽都是偶数时,必然只有一个格子走不到,黑白染色后,就是白色格子中的最小值走不到,别的全都可以走得到。 两行两行地走 阅读全文
posted @ 2017-08-16 23:35 AutSky_JadeK 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 平面上n个点,每个点带权,任意两点间都有连线,连线的权值为两端点权值之积。没有两点连线过原点。让你画一条过原点直线,把平面分成两部分,使得直线穿过的连线的权值和最大。 就把点极角排序后,扫过去,一侧的点会跨过直线与另一侧的所有点形成连线。此时的答案为两侧的权值和之积,尝试用此更新最终答案。 阅读全文
posted @ 2017-08-16 23:29 AutSky_JadeK 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 给你n,K,让你构造出一颗n个结点的完全K叉树,求所有结点子树大小的异或和。 先把n号结点到根的路径提取出来单独计算。然后这条路径把每一层分成了左右两部分,每一层的左侧和其上一层的右侧的结点的子树大小相同。 就可以容易计算每种大小的子树个数了。 当K等于1时,要单独讨论,答案为1 xor 2 xor 阅读全文
posted @ 2017-08-16 23:25 AutSky_JadeK 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 给你一个序列,让你对于所有gcd不为1的子序列,计算它们的gcd*其元素个数之和。 设sum(i)为i的倍数的数的个数,可以通过容斥算出来。 具体看这个吧:http://blog.csdn.net/jaihk662/article/details/77161436。 注意1*C(n,1)+2*C(n 阅读全文
posted @ 2017-08-16 23:13 AutSky_JadeK 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 给你一个中心在原点的圆,再给你俩在圆内且到原点距离相等的点P,Q,让你在圆上求一点D,最小化DP+DQ。 http://blog.csdn.net/qq_34845082/article/details/77099332 附:过反演中心的圆反演后变成一条和该圆正交的直线。 不过反演中心的圆反演后是一 阅读全文
posted @ 2017-08-16 22:04 AutSky_JadeK 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 给你数列a,问你对它作m次求前缀异或和之后的新数列是什么。 考虑a1对最终生成的数列的每一位的贡献,仅仅考虑奇偶性, 当m为2的幂次的时候,恰好是这样的 2^0 1 1 1 1 1 ... 2^1 1 0 1 0 1... 2^2 1 3个0 1 3个0 ... 2^3 1 7个0 1 7个0 .. 阅读全文
posted @ 2017-08-16 21:06 AutSky_JadeK 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 存板子。O(nlogn)预处理,O(1)查询。空间O(nlogn)。 阅读全文
posted @ 2017-08-09 19:59 AutSky_JadeK 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 有一些草,一开始高度都是0,它们的生长速率不同。 给你一些单增的日期,在这些日期要将>b的草的部分都割掉,问你每次割掉的部分有多少。 将草的生长速率从大到小排序,这样每次割掉的是一个后缀,而且不会影响它们生长速率的递增性。 就是三种操作,一种对一个后缀赋值,一种对整个数组作 + 另一个数组(d(i) 阅读全文
posted @ 2017-08-09 19:57 AutSky_JadeK 阅读(402) 评论(0) 推荐(0) 编辑
摘要: 平面上给你n(不超过2000)个点,问你能构成多少个面积在[A,B]之间的Rt三角形。 枚举每个点作为直角顶点,对其他点极角排序,同方向的按长度排序,然后依次枚举每个向量,与其对应的另一条直角边是单调的,可以用一个pointer做出来,然后可以得出那些同方向的向量的区间(这个代码好像有点问题,可能会 阅读全文
posted @ 2017-08-09 19:51 AutSky_JadeK 阅读(324) 评论(0) 推荐(0) 编辑
摘要: f(n)定义为n的十进制表示下所有位的平方和。 问你方程K*f(n)=n在a<=n<=b中的解的个数。 发现f(n)最大不超过2000,可以直接枚举f(n),然后判断K*f(n)的位的平方和是否恰好为f(n)。 阅读全文
posted @ 2017-08-09 19:45 AutSky_JadeK 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 给你n个点,让你连m条边,使得任意两两点对之间的最短路的和最小(两点若不可达,最短路记作n)。 初始时ans=n*n*(n-1)。 先尽量连成菊花图,每连一次让答案减小2*((n-2)*(i-1)+(n-1)),i为当前菊花图中的点数。 连完后剩下的边,每连一次让答案减小2。 如果已经用了n*(n- 阅读全文
posted @ 2017-08-08 23:53 AutSky_JadeK 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 给你m个01串,问你有多少个长度为2L的01串,满足前半段倒置取反后等于后半段,并且包含所有的m个01串。 考虑单词完全在中线前面或者后面的情况,直接将单词及其倒置取反插入AC自动机,AC自动机每个结点用个tag压位记录单词集合。 对于跨越中线的情况,比如说110010是一个单词,枚举一个中线, 1 阅读全文
posted @ 2017-08-08 23:49 AutSky_JadeK 阅读(467) 评论(0) 推荐(0) 编辑
摘要: 给你数组A和B,A B中的元素大小都不超过5w,且两两不同。 q次询问,每次给你个k,问你有多少对(i,j),满足A(i)%B(j)==k。 如题目所言模拟bitset的过程,实质上是个分块,每块的大小定为63。 一个小技巧是对于最终的那个数组w,分块后记63个w数组,每个数组最前面一块是零散的部分 阅读全文
posted @ 2017-08-08 20:56 AutSky_JadeK 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 存个求树上每种长度(长度定义为路径上点数)的路径条数的模板:num数组中除了长度为1的以外,都算了2次。 不造为啥FFT数组要开八倍。 阅读全文
posted @ 2017-08-07 20:40 AutSky_JadeK 阅读(451) 评论(0) 推荐(0) 编辑
摘要: 平面上n个红点,m个黑点,问你多少个黑点至少在一个红三角形内。 对红点求凸包后,转化为询问有多少个黑点在凸包内。 点在凸多边形内部判定,选定一个凸包上的点作原点,对凸包三角剖分,将其他的点极角排序之后,使用二分法就可以判定点在哪个剖分出来的三角形的夹角内,然后用叉积即可判定其在凸包内还是外,O(lo 阅读全文
posted @ 2017-08-07 01:15 AutSky_JadeK 阅读(301) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/lxy767087094/article/details/68942422 阅读全文
posted @ 2017-08-07 01:09 AutSky_JadeK 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 一些画布,每块有其大小,一开始都是白的,你任意将它们排序,然后一次操作可以选择一段连续的相同颜色的画布,从中任选一个位置,左侧涂上任意一种颜色,右侧涂上另一种。消耗是这一段画布的总的大小。问你要将所有画布着上不同的颜色的最小花费。 从后向前考虑,其实相当于是将一些一开始不同的画布两两合并,代价是两者 阅读全文
posted @ 2017-08-07 01:07 AutSky_JadeK 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 有26张牌(A~Z),其中三张被拿走了。其余23张被分发给了两个人。给你m次调查结果,一次调查结果是对其中一个人询问一对牌,他会告诉你他有这对牌的几张(0~2)。问你有多少种被拿走的牌的组合。 三重循环枚举被拿走的牌。 然后对于一次调查,我们发现可能的十二种情况中({这两张牌都被拿走,都不被,其中一 阅读全文
posted @ 2017-08-07 01:03 AutSky_JadeK 阅读(500) 评论(0) 推荐(1) 编辑
摘要: 给你一张DAG,若选择u点,则必须先选择所有能到达其的点。问你在选择A个点的情况下,哪些点必选;选择B个点的情况下,哪些点必选;选择B个点的情况下,哪些点一定不选。 选择A个点的情况,必选的点是那些其所能到达的点数>n-A的点。 选B个点,必选的点与前者类似。 一定不选的点,是能到达它的点数>B的点 阅读全文
posted @ 2017-08-07 00:57 AutSky_JadeK 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 给你一个1~n的排列p,n是偶数,每次从中任选一对相邻的数出来,插到排列q的开头,如此循环,问你所能得到的字典序最小的排列q。 我们先确定q开头的两个数q1,q2,q1一定是p的奇数位的最小的数,而q2一定是q1后面最小的偶数位的数,这很显然。 然后记q1,q2在p中的位置分别是L,R,把p分成三段 阅读全文
posted @ 2017-08-07 00:48 AutSky_JadeK 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 给你一个网格(n<=2000,m<=2000),有一些炸弹,你可以选择一个空的位置,再放一个炸弹并将其引爆,一个炸弹爆炸后,其所在行和列的所有炸弹都会爆炸,连锁反应。 问你所能引爆的最多炸弹数。 转化成: 将行列当成点,炸弹当成边,然后你可以给这个二分图加1条边,问你最大的连通块的边的数量。 可以通 阅读全文
posted @ 2017-08-04 21:16 AutSky_JadeK 阅读(456) 评论(0) 推荐(0) 编辑
摘要: 有两辆车,容量都为K,有n(10w)个人被划分成m(2k)组,依次上车,每个人上车花一秒。每一组的人都要上同一辆车,一辆车的等待时间是其停留时间*其载的人数,问最小的两辆车的总等待时间。 是f(i,j)表示前i组,j个人是否可行。w(i)表示第i组的人数。 if f(i,j)==1 then f(i 阅读全文
posted @ 2017-08-04 20:57 AutSky_JadeK 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 给你n个字符串,问你最小的长度的前缀,使得每个字符串任意循环滑动之后,这些前缀都两两不同。 二分答案mid之后,将每个字符串长度为mid的循环子串都哈希出来,相当于对每个字符串,找一个与其他字符串所选定的子串不同的子串,是个二分图最大匹配的模型,可以匈牙利或者Dinic跑最大流看是否满流。 一个小优 阅读全文
posted @ 2017-08-04 20:35 AutSky_JadeK 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 给你一个n*m的字符矩阵,将横向(或纵向)全部裂开,然后以任意顺序首尾相接,然后再从中间任意位置切开,问你能构成的字典序最大的字符串。 以横向切开为例,纵向类似。 将所有横排从大到小排序,枚举最后切开的位置在哪一横排,将这一排提到排序后的字符串数组最前面,求个“最大表示法”,如果最大表示法的位置恰好 阅读全文
posted @ 2017-08-04 20:29 AutSky_JadeK 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 给你n,K,问你要选出最少几个长度为2的K进制数,才能让所有的n位K进制数删除n-2个元素后,所剩余的长度为2的子序列至少有一个是你所选定的。 如果n>K,那么根据抽屉原理,对于所有n位K进制数,必然会至少有1个数字出现2次或以上,所以00,11,...,K-1 K-1这样的数对是必选的。 对于其他 阅读全文
posted @ 2017-08-04 20:19 AutSky_JadeK 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 给你一行房间,有的是隐身药水,有的是守卫,有的是金币。 你可以任选起点,向右走,每经过一个药水或金币就拿走,每经过一个守卫必须消耗1个药水,问你最多得几个金币。 药水看成左括号,守卫看成右括号, 就从每个位置贪心地向右走,如果在 r 遇到不匹配,则把下一次的左端点置成r+1,接着走。 O(n)即可。 阅读全文
posted @ 2017-08-04 20:11 AutSky_JadeK 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 假设一个数有n个质因子a1,a2,..,an,那么n'=Σ(a1*a2*...*an)/ai。 打个表出来,发现一个数x,如果x'=Kx,那么x一定由K个“基础因子”组成。 这些基础因子是2^2,3^3,5^5,7^7,11^11,13^13。只有6个,K不超过30,于是可以dfs。 要注意搜索顺序 阅读全文
posted @ 2017-08-04 20:07 AutSky_JadeK 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 给你n个数,让你任选K个,使得它们乘起来以后结尾的0最多。 将每个数的因子2和因子5的数量求出来,记作a[i]和b[i]。 答案就是max{ min{Σa[i],Σb[i]} }(a[i],b[i]是选择的那些数)。 暴力dp是f(i,j,k)表示前i个数,选j个,其中包含k个5的情况下,最多能包含 阅读全文
posted @ 2017-08-04 01:35 AutSky_JadeK 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 给你一个4个点的环,问你从2号点出发, 再回到2号点,长度>=K的最短路是多少。环上的边长度不超过30000。 跑出来所有dis(2,j)以后,然后for一遍j,根据dis(2,j)+t*2*w>=K,解出来对于每个j而言最小的t,然后尝试更新答案即可。如果dis(2,j)已经大于等于K了,那直接用 阅读全文
posted @ 2017-08-03 23:03 AutSky_JadeK 阅读(139) 评论(0) 推荐(0) 编辑
摘要: size(l,r)表示区间l,r权值的种类数,让你求min{size(l,r)/(r-l+1)}(1<=l<=r<=n)。 last[r]表示a[r]上一次出现的位置, 就是二分验证mid的时候,先把线段树的每个位置i置成mid*i,然后再枚举右端点r,对[last[r]+1,r]作区间+1,然后c 阅读全文
posted @ 2017-08-03 21:33 AutSky_JadeK 阅读(162) 评论(0) 推荐(0) 编辑
摘要: d(x)表示x的约数个数,让你求(l,r<=10^12,r-l<=10^6,k<=10^7) 阅读全文
posted @ 2017-08-03 21:10 AutSky_JadeK 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 1000w的数组,一开始都是2^31-1,然后经过5*10^7次随机位置的随机修改,问你每次的全局最小值。 有效的随机修改的期望次数很少,只有当修改到的位置恰好是当前最小值的位置时才需要扫一下更新最小值。 分个块或者直接暴力都可以。 阅读全文
posted @ 2017-08-02 19:47 AutSky_JadeK 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 划分出来的每个区间的答案,其实就是连续两个的lca的最小值。 即5 2 3 4 这个区间的答案是min(dep(lca(5,2)),dep(lca(2,3),dep(lca(3,4))))。 于是dp即可,f(i,j)表示前i个数,划分成j段的最优值。 只有三种决策,要么不取,继承f(i-1,j), 阅读全文
posted @ 2017-08-01 22:49 AutSky_JadeK 阅读(392) 评论(4) 推荐(0) 编辑
摘要: f(l,r,K)表示区间l,r里面的K大值,问你所有连续子区间的f之和。 l(i)表示i左侧第一个比它大的数的位置,r(i)表示i右侧第一个比它大的数的位置。可以用set处理出来。 把数从大到小排序,依次插入。然后更新l(i),r(i),形成链形结构。 然后对于一个i,向左跳最多K次,将这些位置记录 阅读全文
posted @ 2017-08-01 22:24 AutSky_JadeK 阅读(600) 评论(0) 推荐(0) 编辑
摘要: 给你一个序列,让你划分成K段,每段的价值是其内部权值的种类数,让你最大化所有段的价值之和。 裸dp f(i,j)=max{f(k,j-1)+w(k+1,i)}(0<=k<i) 先枚举j,然后枚举i的时候,用线段树进行优化,对a(i)上一次出现的位置到i之间的f(k,j-1)的答案进行+1,然后求个i 阅读全文
posted @ 2017-07-31 02:27 AutSky_JadeK 阅读(321) 评论(2) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 21 下一页
TVアニメ「Charlotte(シャーロット)」公式サイト TVアニメ「Charlotte(シャーロット)」公式サイト