随笔分类 -  基本算法--------------------------

摘要:【题意】给定n棵高度初始为0的草,每天每棵草会长高a[i],m次收割,每次在d[i]天将所有>b[i]的草收割到b[i],求每次收割量。n<=500000。 【算法】线段树上二分 【题解】按照生长速度a[]排序后,容易发现数列永远单调。 在线段树上的区间维护以下值: 1.最后一棵草的高度a 2.上次 阅读全文
posted @ 2018-02-15 15:45 ONION_CYC 阅读(1208) 评论(0) 推荐(4)
摘要:【题目】C. Black Widow 【题意】给定一个表达式,形式为(...)^(...)^......^(...)=1(n个括号),括号中为1~2个值取或。有m个变量,给出表达式的值为xi或 !xi,xi只能为0或1,求变量赋值使得表达式成立的方案数。每个变量至多出现两次。n,m<=10^5。 【 阅读全文
posted @ 2018-01-16 19:07 ONION_CYC 阅读(541) 评论(0) 推荐(0)
摘要:【题意】定义f(A,B)为一个字符串,满足: 1.长度为A+B,含有A个‘A',B个'B'。 2.最长的相同字符子串最短。 3.在满足以上2条的情况下,字典序最小。 例如, f(2,3) = BABAB, and f(6,4) = AABAABAABB. Q次询问f(Ai,Bi)的子串[Ci,Di] 阅读全文
posted @ 2018-01-15 10:40 ONION_CYC 阅读(823) 评论(0) 推荐(2)
摘要:【题目】D. Too Easy Problems 【题意】给定n个问题和总时限T,每个问题给定时间ti和限制ai,当解决的问题数k<=ai时问题有效,求在时限T内选择一些问题解决的最大有效问题数。n<=2*10^5,T<=10^9。 【算法】贪心(排序+堆) 【题解】因为T太大,不能考虑背包。 容易 阅读全文
posted @ 2018-01-09 11:36 ONION_CYC 阅读(362) 评论(0) 推荐(0)
摘要:【题目】B. Robin Hood 【题意】给定n个数字的序列和k次操作,每次将序列中最大的数-1,然后将序列中最小的数+1,求最终序列极差。n<=5*10^5,0<=k<=10^9,1<=ai<=10^9。 【算法】模拟 【题解】关键在于,增加和减少可以分开操作。 将数列排序,从小到大增加前面若干 阅读全文
posted @ 2017-12-21 16:51 ONION_CYC 阅读(246) 评论(0) 推荐(0)
摘要:【题目】A. Bear and Prime 100 【题意】有一数字x,每次可询问一个数字y是否x的因子,最后输出数字x是否素数,要求询问次数<=20。 【题解】容易发现[2,100]范围内的非素数一定能分解为[2,47]范围内的素数的乘积,所以只需要询问[2,47]范围内的15个素数。 平方数需要 阅读全文
posted @ 2017-12-20 12:36 ONION_CYC 阅读(191) 评论(0) 推荐(0)
摘要:【题目】C. Weakness and Poorness 【题意】给定含n个整数的序列ai,定义新序列为ai-x,要使新序列的最大子段和绝对值最小,求实数x。n<=2*10^5。 【算法】二分||三分||计算几何(凸包) 【题解】Editorial 令正数最大子段和为A,负数最大子段和为B,绝对值是 阅读全文
posted @ 2017-12-08 14:40 ONION_CYC 阅读(246) 评论(0) 推荐(0)
摘要:【题目】D. Acyclic Organic Compounds 【题意】给定一棵带点权树,每个点有一个字符,定义一个结点的字符串数为往下延伸能得到的不重复字符串数,求min(点权+字符串数),n<=300000,time=3s。 【算法】trie合并||hash+线段树合并||dsu on tre 阅读全文
posted @ 2017-12-06 19:40 ONION_CYC 阅读(394) 评论(0) 推荐(0)
摘要:【题意】记正整数x的因数个数为g(x),当正整数x满足:g(x)>g(i)(0<i<x)时,称x为反素数,求不超过给定N的最大反素数,N<2e9。 【算法】数论,搜索 【题解】 这个问题等价于求1~N中因数最多的最小数字。 反素数有以下性质: 1.反素数的素因子一定是从2开始的连续素数。 必要性证明 阅读全文
posted @ 2017-12-05 21:01 ONION_CYC 阅读(208) 评论(0) 推荐(0)
摘要:【题目】B. Ithea Plays With Chtholly 【题意】交互题,有n格,每次给一个[1,c]的数字,回答填入的位置后再次给数字,要求在m轮内使n格填满且数列不递减。n,m>=2,1<=c<=1000,1<=n*[c/2]<=m<=1000。 【算法】贪心 【题解】对于每次的数字x, 阅读全文
posted @ 2017-12-05 19:15 ONION_CYC 阅读(362) 评论(0) 推荐(0)
摘要:【题意】给定ai,将1~n从小到大插入到第ai个数字之后,求每次插入后的LIS长度。 【算法】树状数组||平衡树 【题解】 这是树状数组的一个用法:O(n log n)寻找前缀和为k的最小位置。(当数列中只有0和1时,转化为求对应排名的数字,就是简单代替平衡树) 根据树状数组的二进制分组规律,从大到 阅读全文
posted @ 2017-11-28 14:10 ONION_CYC 阅读(875) 评论(0) 推荐(0)
摘要:【题意】n个点的树,1为根,要求删除一些点使得截断根节点和所有叶子结点的路径(不能删根,可以删叶子)。有m支军队在m个点上,每时刻所有军队可以走一步,最终走到的地方就是删除的点,求最短时间。 【算法】二分,贪心,倍增 【题解】 所有点同时走路,求最短时间,这样的询问通常考虑二分转化为判定性问题。(实 阅读全文
posted @ 2017-11-06 19:22 ONION_CYC 阅读(312) 评论(0) 推荐(1)
摘要:【题意】给定正边权有向图,车油量上限C,每个点可以花费pi加油至min(C,ci),走一条边油-1,T次询问s点出发带钱q,旅行路程至少为d的最多剩余钱数。 n<=100,m<=1000,C<=10^5,q<=n^2。 【算法】动态规划 【题解】官方题解 虽然不是DAG,但是由于q很小的特点,将q加 阅读全文
posted @ 2017-11-06 09:57 ONION_CYC 阅读(359) 评论(0) 推荐(0)
摘要:【题目链接】Universal Online Judge 【题解】本题最大的特点在于从大到小切以及切分规则一致,都是切成px和x-px。 由这两个特点很容易得到结论,后切的蚯蚓得到的px一定比先切的蚯蚓得到的px小,后切的蚯蚓得到的x-px一定比先切的蚯蚓得到的x-px小。 所以可以得到三队列做法, 阅读全文
posted @ 2017-11-02 16:56 ONION_CYC 阅读(186) 评论(0) 推荐(0)
摘要:【题意】按照斗地主出牌规则,给定手牌求出完的最少步数。 【算法】模拟+搜索 【题解】 可以发现除了顺子,其它的出牌规则都和点数无关,只与同点数的牌数有关。 所以可以先暴力枚举要出哪些顺子,然后每一个出完顺子后手牌的情况处理成b[4]表示牌数为1~4的点数有多少个,然后进行dfs。(为了方便,将A接在 阅读全文
posted @ 2017-10-31 08:32 ONION_CYC 阅读(389) 评论(0) 推荐(0)
摘要:【题意】将n*m矩阵分成两个区域,要求满足一定条件,求两区域内部极差较大值最小。n,m<=2000 【算法】二分 【题解】极差的数值满足单调性,所以考虑二分极差。 对于给定的极差,将所有数值排序后,1~a[n*m]-num-1必须选择A,a[1]+num+1~n*m必须选择B,其它不要求。(开始的时 阅读全文
posted @ 2017-10-22 11:47 ONION_CYC 阅读(288) 评论(0) 推荐(1)
摘要:【题意】公车从1开到n,有k群牛想从一个点到达另一个点,公车最多乘坐c个人,牛群可以拆散,问最多载多少牛到达目的地。 【算法】贪心+堆 【题解】线段和点的贪心,一般有按左端点排序和按右端点排序两种方法。 按左端点排序,到达了终点就下车,人数满了就贪心地删掉当前终点最远的牛。 正确性在于,在对左一致的 阅读全文
posted @ 2017-10-18 21:57 ONION_CYC 阅读(220) 评论(0) 推荐(1)
摘要:【题意】给定n*m的数字矩阵,要求横着切A-1刀,对每块再分别竖着切B-1刀,是最小子矩阵最大。 【算法】二分+贪心 【题解】还记得提高组2015跳石头吗?这道题做法一致,只不过拓展到二维而已。 二分最小子矩阵值,考虑行,对于每一刀贪心一行一行拓展到能切马上切。 对于行贪心中得到的若干行,通过列贪心 阅读全文
posted @ 2017-10-17 17:04 ONION_CYC 阅读(284) 评论(0) 推荐(0)
摘要:【题意】n个点的树,m条链,求将一条边的权值置为0使得最大链长最小。 【算法】二分+树上差分 【题解】 最大值最小化问题,先考虑二分最大链长。 对所有链长>mid的链整体+1(树上差分)。 然后扫一遍,对[在所有不满足链上]的边取最大值并check。 具体做法:对于二分的最大链长,将所有链长>mid 阅读全文
posted @ 2017-10-12 22:11 ONION_CYC 阅读(151) 评论(0) 推荐(0)
摘要:【题意】n头牛,其中最高h。给定r组关系a和b,要求满足h[b]>=h[a]且a、b之间都小于min(h[a],h[b]),求第i头牛可能的最高高度。 【算法】差分 【题解】容易发现r组关系只能包含或不相交。 先假设所有牛是最高高度。 对于一组关系(a,b)显然只需要让区间[a+1,b-1]整体-1 阅读全文
posted @ 2017-10-12 17:04 ONION_CYC 阅读(292) 评论(0) 推荐(0)