05 2017 档案
摘要:题目链接:http://poj.org/problem?id=2104 题意:略 最近想学一下分块,搜到了这道题。结果在《挑战》上另外看到了另外的用线段树做的算法。后来才知道,这种记录归并排序过程的树叫归并树。利用STL,非常好实现。 思路就是首先二分答案,拿着这个答案在归并树上找对应区间比这个数小
阅读全文
摘要:把1、2和3、4的藏钱地方的钱的和的可能枚举出来,原始的O(n^2)会tle,用fft。 然后暴力枚举query的值,拆成两半,把两部分的和乘起来。
阅读全文
摘要:题目链接:http://codeforces.com/contest/762/problem/C 题意:两个字符串a、b。希望在a中删掉连续的字符串,使得b是a的子序列。 希望删掉的是连续的字符串,那么可以预处理两个数组pre和suf。 pre(i)表示b[0,i]为a的子序列,a的最短长度。 su
阅读全文
摘要:题目链接:http://codeforces.com/contest/798/problem/D 题意:两个数列a、b,分别有n个数。希望选出下标相同的尽可能少的数字,使得它们分别的和为两个数列中数字分别总和的一半,尽可能少指的是≤ 。只要在这个范围内,都算符合条件。 不妨就认为题目是要选个数字,使
阅读全文
摘要:题目链接:http://codeforces.com/contest/798/problem/C 题意:给n个数,和一种操作:把a(i)和a(i+1)变成a(i)-a(i+1)和a(i)+a(i+1)。问能不能把整个数列变成gcd>1,能的话输出最少步骤。 贪心地认为假如需要这种操作,那么gcd为2
阅读全文
摘要:题面: 这题的O(n^2) dp很容易想出来,由于我没有数据,也没法提交测试。所以就拿这个dp来简单对拍了。 这道题的n非常大,显然这个O(n^2)的dp是非常不给力的,考虑转移状态:dp(i)一定由之前的dp(j)转移过来,并且这个dp(j)一定是a(j)符合条件并且dp(j)是最大的。可以用线段
阅读全文
摘要:题目链接:http://codeforces.com/contest/798/problem/B 题意:n个字符串,第一个字符可以放到最后,问最少移动步骤。 直接暴力O(n*n*len*len)。
阅读全文
摘要:题目链接:http://codeforces.com/contest/798/problem/A 题意:必须修改一个字符,问能不能形成回文串。 trick有两个:必须修改一个字符,以及奇数字符的时候,即使原本没修改也可以修改中间那个字符。
阅读全文
摘要:题目链接:http://202.197.224.59/OnlineJudge2/index.php/Problem/index/p/14/ D.模拟,按照原图每一个字符变成一个a*b的矩阵构造新矩阵。 E.由于选取的区间点l,r都是不重复的,那么可以将整个问题描述为前缀和取2*m个点,每个点都不重复
阅读全文
摘要:题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1103 这题一脸组合数学鸽笼原理例题的样子。 这个问题自己其实YY过很久了,结果今天看到又给忘了。大概是因为没有手写过,希望下次不再忘了。 求前缀和,再对n取模。
阅读全文
摘要:题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1420 由于最少的袋鼠数量也就是n/2取上整,那么可以排序,然后从[1,n/2] [n/2+1,n]两个部分中匹配。
阅读全文
摘要:题目链接:http://codeforces.com/contest/808/problem/A 题意:找一个数后面的仅有一位不是0的数,不包括当前这个数。 随便搞。
阅读全文
摘要:题目链接:http://codeforces.com/contest/808/problem/B 题意:n个数,求其中每k个数的和的平均值。 鬼知道我怎么会石乐志上来就用了树状数组。 直接用前缀和维护搞。
阅读全文
摘要:题目链接:http://codeforces.com/contest/808/problem/C 题意:n个茶杯,每个茶杯有容量。现在给一壶茶,总量为w。希望倒茶满足条件:每杯茶要超过容量的一半,并且w被倒光,茶杯内的茶水为整数,容量大的杯子内的茶不允许比容量小的杯子内的茶水少。 特判不满足情况,然
阅读全文
摘要:题目链接:http://codeforces.com/contest/808/problem/D 题意:给n个数,现在允许一个数交换到另外一个地方。希望这n个数分成两部分的和相等,问这个数列满足不满足条件。 可以认为两个部分是两个集合,那么从左到右地扫,每扫到一个值认为这个值为一个pivot,那么就
阅读全文
摘要:题目链接:http://codeforces.com/contest/808/problem/E 题意:就是01背包,但是物品的重量只有1 2 3三种,背包容量会超大。 三种重量按照价值从大到小排序,dp数组记录当前1、2重量的使用状态以及当前价值。更新完dp后,维护重量为3的物品的前缀和,再扫一遍
阅读全文
摘要:题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1524 题意:略。 这个题相当于是找出现最长的整除链。 dp记下输入中每个数出现的次数,枚举1~1e6所有数,再枚举每个数的倍数,假如出现了,直接更新dp数组。
阅读全文
摘要:题目链接:http://codeforces.com/contest/805/problem/E 题意:一棵树有n个点,每一个点相当于一个有si个点的完全图。现在希望给每一个点染色,并且整个图上相邻两个不同类型的冰淇淋颜色不一样,同时,假如确定了一个颜色,那么整棵树上的同类型冰淇淋都是一个颜色。问一
阅读全文
摘要:题目链接:http://codeforces.com/contest/805/problem/B 题意:给三个字符abc,希望用尽量少的c,构造不含有长度为3的回文串的字符串。 不含有不是超过,读错题卡了一小会。构造aabb输出就行了。
阅读全文
摘要:题目链接:http://codeforces.com/contest/805/problem/D 题意:给一个字符串只有a、b,给一个操作ab->bba,现在希望让字符串不包含ab。问多少次操作? 手动模拟下发现倒着来会得到最优解,每次ab->bba 操作会让b多一个,这会影响前面的a。考察最靠右的
阅读全文
摘要:题目链接:http://codeforces.com/contest/805/problem/C 题意:n个数,从i到j的花费为(i+j)%(n+1),问n个数都要走一遍,求最小花费。 希望尽可能地让i+j是n+1的倍数,所以构造:从1开始,那么下一个点必为n,因为(1+n)%(1+n)=0为最小花
阅读全文
摘要:题目链接:http://codeforces.com/contest/797/problem/E 题意:给n个数,q次询问。 每次询问给两个数p k,操作是p=ap+k,问多少次可以让p>n。 直接暴力会TLE,设计dp(i,j)为当p为i时,k为j时的最少步骤,可以这样更新来:dp(i+a(i)+
阅读全文
摘要:比赛链接:http://acm.ecnu.edu.cn/contest/11/ E.水题,手工模拟下就会发现这就是在做求gcd的步骤,所以用lcm除以x就行了。 A.很烦人,因为unicode的问题,python写起来很轻松。 F.按照r排序,贪心从每一个需要安放灯的r到l开始放就行,这样能保证当前
阅读全文
摘要:题目链接:http://codeforces.com/contest/797/problem/C 题意:给个字符串,求字典序最小的出栈顺序。 一开始想用优先队列记录全局最小的字符,然后每次入栈的时候检查当前字符是不是最小的,如果是那么同时pop。这样做的话,假如不是,那么栈里面的最小就找不到了。 所
阅读全文
摘要:题目链接:http://codeforces.com/contest/797/problem/B 题意:n个数,求选出一些数,使这些数的和为奇数且最大。 把所有偶数>0的加起来,再把奇数统计出来。这样暂时的和为偶数且最大。 加上一个最大的奇数则一定是奇数和。接下来在奇数里扫2个相邻的数,假如和>=0
阅读全文
摘要:题目链接:http://codeforces.com/contest/797/problem/A 题意:给一个n,一个k。问用k个不是1的数的乘积表示n,能不能表示,能的话输出解。 把n分解质因数,看看一共有多少质因数。输出前k-1个因数,最后一个数用这个数去除以之前的乘积。
阅读全文
摘要:题目链接:http://codeforces.com/contest/803/problem/F 题意:n个数,统计所有满足gcd为1的子序列的个数。 统计各个数字出现的次数,然后容斥。 从10000扫到1,枚举所有倍数,把x的倍数出现的次数和统计出来,然后再统计x的倍数出现的次数和-1(减掉空集)
阅读全文
摘要:题目链接:http://codeforces.com/contest/803/problem/C 题意:k个单增的数和为n,求这k个数gcd最大。 很好特判的一点是∑i,i from 1 to k如果大于n的话,很明显是不能构造的。所以特判一发,结果k*(k+1)/2爆LONG LONG TLE了一
阅读全文
摘要:题目链接:http://codeforces.com/contest/803/problem/E 题意:看比赛,W是赢,L是输,D是平,?不知道。现在一个人希望输和赢的数量差的绝对值为k,且比赛期间输赢数小于k,问可行方案。 dp(i,j)代表比赛i场W比L多j的数量,W的时候从dp(i-1,j-1
阅读全文
摘要:题目链接:http://codeforces.com/contest/803/problem/D 题意:字符串希望拆分成不大于k段,问如何拆分,使得每一行的字符串最短。其中有两个条件:空格或者连字符“-”允许换行。 二分每行最短的长度,检查的时候扫描i的字符串,固定两头,从右往左扫直到能换行,这样找
阅读全文
摘要:题目链接:http://codeforces.com/contest/803/problem/A 题意:n*n的矩阵,可以写k个1,问字典序最大的对称阵。 直接从左上到右下插,遇到对角线则k--,否则都是k-=2,注意-=2的时候判断k是否>=2。
阅读全文
摘要:题目链接:http://codeforces.com/contest/803/problem/B 题意:给n个数,问每个数和最近的0的位置的最短距离。 正着来一遍,倒着来一遍。
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5869 题意:n个数,q次询问,问区间内gcd不同值的个数。 和dquery那道题一样,也是离线的做法。按照查询的r从小到大排序,每插入一个数字ai,则更新一次gcd,总是把gcd出现向后移动,这样可以满
阅读全文
摘要:题目链接:https://vjudge.net/problem/SPOJ-DQUERY 题意:给定数列,q次询问,问区间内不同数字的个数。 可以用主席树,但是还有更好写的办法。 离线存下所有的询问,按照询问右端点从小到大排序。 用树状数组标记“某个值在区间[1,r]中出现的最后的位置”。这样可以将r
阅读全文
摘要:题目链接:http://codeforces.com/contest/193/problem/B 题意:一个数列有两种操作,问操作u次后最大是权值和是多少。 操作1:ai ^ bi 操作2:ai = api + r 这题爆搜会TLE,但是有一个很明显的剪枝就是同时异或的话值是一样的。所以用一个pre
阅读全文
摘要:题目链接:https://www.oj.swust.edu.cn/problem/show/1741 此题同上,但是多一个问:x1和xn能用多次。 解法一样,只不过这两个点相关的边都是inf就行了。这样可以表示能无限用。
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3998 给数字,问LIS以及每一个数字只取一次,最多能取多少个LIS。 LIS直接O(n^2) dp即可。 关键是怎么在统计最多能取多少个不相交的LIS: 每个数作为一个点,假如dp(i)=1,则说明这个
阅读全文
摘要:题目链接:https://www.oj.swust.edu.cn/problem/show/1745 这题比较抽象,信息量也比较大。但是仔细想一下就会发现,按照天来作为节点,可以有三种操作: 当天使用的毛巾可以:1买,2从前几天中的洗完获得,洗有两种,快洗和慢洗。 当天使用完的毛巾可以:1留到后一天
阅读全文
摘要:题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1208 题意:也是矩形框点问题,不过每个点有权值,希望权值最大。 直接把出入的event中的sign变成对应权值,更新到线段树上就行了。
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5534 题意:给n个点,希望用这n个点构成一棵树,然后每一个度有一个价值,希望价值总和最大。问最大价值。 知道一棵树的度和为2*n-2,并且每一个点必然有1的度,在每个点持有1度的情况下,相当于给n个点分
阅读全文
摘要:题目链接:http://poj.org/problem?id=3250 题意:求i位置起右边比它小的连续的数字的个数。 复习单调栈,倒着扫,栈顶维护扫到i点处右边恰好比i大的最近的数字,然后栈内元素-1就是比当前值小的数的总数,注意空栈的情况,所以用下标换算一下就行了。
阅读全文
摘要:题目链接:https://vjudge.net/problem/UVALive-7263 题意:给两个字符串a,b,只包含1~6的数字,现在允许两种操作:1、修改某一位数字,2、修改整个串的某个数字,变成另外一个数字。问从b到a的最少操作。 首先2操作修改的比较多,假如都能打到最优解的情况下,尽可能
阅读全文
摘要:题目链接:http://hihocoder.com/problemset/problem/1259 式子可以化简,并且找到一个f的递推式,递推过程如下: 列出来后手动枚举几个f的值,会发现函数值其实就是把二进制的自变量当成三进制来算一次。 答案求的是异或和,要求将所有余数相同的和异或起来,可以考虑用
阅读全文
摘要:题目链接:https://vjudge.net/problem/UVALive-7264 题意:点技能点,每个技能点有前置技能点,也可能没有。每点一个技能点需要一个花费,还可以通过氪金跳过某点的前置技能点,直接点这个技能。问点到期望的一个技能点的总花费最小是多少。 假如只将这个点与超级汇相连,那就是
阅读全文
摘要:题目链接:https://vjudge.net/problem/UVALive-7261 题意略 三个步骤: 1.二分满足左边绿洲面积大于等于右边绿洲面积,并且使左边面积尽可能大的分割线位置。 2.判断这个分割线是否包含于任何一个绿洲中,如果包含,那么直接输出结果就行,否则: 3.从此坐标向右扫描,
阅读全文
摘要:比赛链接:http://acm.hdu.edu.cn/contests/contest_show.php?cid=772 昨天嘴巴了5题,结果今天错了2个。真弱啊。。 1001.水 1002. f(i,j)代表1~i个教室,并且在i上建了一共j个shop的最小花费,更新从f(i-1,j)更新来,在j
阅读全文
摘要:题目链接:http://poj.org/problem?id=3667 题意:有一个hotel有n间房子,现在有2种操作: 1 a,check in,表示入住。需要a间连续的房子。返回尽量靠左的房间编号并更新。 2 a b,check out,从a开始退房,一共退到a+b-1。 seg数组l表示从左
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3308 题意:给定n个数,两个操作: U A B:将位置A的数值改成B Q A B:查询[A,B]内最长连续上升子序列的长度。 我认为当时的代码风格和现在的不一样(因为喜欢在Seg里存l和r的下标,然而根
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5091 题意:给个W*H的矩形和n个点,问这个矩形最多能框住多少个点。 将每一个点(x,y)扩展为(x,y)、(x+W,y+H)的矩形跑扫描线。 变成了一个区间累加更新,查询最值的问题。 这个画画图就能想
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1255 题意:求矩形面积交 上信安的时候撕烤了很久如何求交,发现只需要在线段树里额外维护一个tlen,代表覆盖两次以上的长度,在pushup的时候分情况更新就行了。 一直调不出来,最后发现是pushup的
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1828 题意:求矩形并的周长。 很好发现一个规律,那就是扫描到当前状态,update之后的线段树中线段的长度减去update之前的长度差的绝对值恰好是当前段并后的水平或者垂直的线段长度。 那么。。存两棵线
阅读全文
摘要:题目链接:https://vjudge.net/problem/HDU-5536 题意:一个数列中寻找三个不同的数ai,aj,ak,使得(ai+aj) xor ak值最大,求这个最大的值。 预处理sum(i,j)=ai+aj,之后把ai所有的数拆成二进制丢进字典树里,枚举sum,并且在字典树里把对应
阅读全文
摘要:HDOJ1542 Atlantis 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1542 题意:求平面中矩形面积并。 这张图阴影和空白交替标出了并的面积。 我是习惯从下向上扫描的。 根据之前的一道CF EducationalRound的题,可以知道O
阅读全文
摘要:题目链接:https://www.oj.swust.edu.cn/problem/show/1752 搞法如图:
阅读全文
摘要:题目链接:https://www.oj.swust.edu.cn/problem/show/1753 由于每一个人只能做一件工作,所以要在源汇点处设置容量为1费用为0,在二分图中间设置容量为inf。 而不是源点到人处设置容量为inf。 其实就是最优匹配问题,费用流,这样建图之后权值正负各跑一遍就行了
阅读全文
摘要:题目链接:http://codeforces.com/contest/612/problem/D 题意:给n条线段,问覆盖至少k次的区间有几个。 扫描线的思想,首先想到的是从左到右扫一遍,遇到出现被覆盖k次的端点,则开始计数,直到覆盖次数小于k为止。 其实可以用线段树做这道题,但是还有更巧妙的办法:
阅读全文
摘要:题目链接:http://poj.org/problem?id=1195 题意:四种操作: 0:初始化一个S*S的零矩阵 1:点(x,y)是值+A 2:查询一个子矩阵里所有数的和 3:退出 线段树由于不能在两棵树之间传递标记,所以这种求和的操作非常难处理。 改学了一下而为树状数组,发现可是比二维线段树
阅读全文
摘要:题目链接:https://www.oj.swust.edu.cn/problem/show/1740 看了讨论才发现不能多组输入,真坑。 源点到n个单位,容量是每个单位的人数。 每个单位到每个桌子有1条边,容量为1。代表每个单位只能有一个人可以在那一张桌子。 桌子到汇点建边,容量为桌子最多坐的人数。
阅读全文
摘要:题目链接:https://www.oj.swust.edu.cn/problem/show/1759 和方格取数一样建模就行了。
阅读全文
摘要:题目链接:https://www.oj.swust.edu.cn/problem/show/1744 希望取到的点都是不相邻的(相邻:四连通),那么可以用二分图表示相连关系,然后求最大独立集。 最大独立集就是取的点均不相连,并且权值最大。 给两部分的点从1到n*n标号,源汇点分别连点的容量是对应点的
阅读全文
摘要:题目链接:https://www.oj.swust.edu.cn/problem/show/1738 把每一个数拆成两个点,建图跑最大流,结论是满足最小路径覆盖的路径数=总点数-最小割,即总点数-最大流。 打印路径dfs一下,非递归的时候PE了,但是这个OJ会报WA,哎。
阅读全文
摘要:题目链接:https://www.oj.swust.edu.cn/problem/show/1742 多重匹配问题,判断有无解可以通过最大流是否等于选的题目类型数量总和。 如下建图:
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5676 题意:输入一个正整数n(n <=10^18),求不小于n的只有4和7组成的数,且4和7数量相同 枚举2~18位偶数位的4、7的组合,01分别代表4或7。存下来后排序,二分查询。 trick就是LL
阅读全文
摘要:题目链接:https://www.oj.swust.edu.cn/problem/show/1739 从1开始枚举球的个数,每次从残余网络更新总流量,最小路径覆盖刚好大于n时ret-1便是最多球。 之后根据容量为0的边找回匹配边即可。 用x << 1和x << 1 | 1拆点 比较方便。
阅读全文
摘要:题目链接:https://www.oj.swust.edu.cn/problem/show/1736 很裸的二分图,但是不知道咋回事。匈牙利跑不出解路径。没办法上了最大流。 输出解很简单,因为容量是1,所以只能满流。跑完最大流后查看残余网络,找剩余容量为0的边,输出出点和入点值就行了。
阅读全文
摘要:题目链接:http://poj.org/problem?id=2117 题意:求去掉割点后的最大连通分支个数。 kuangbin的板子。
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4596 题意就是给n个xi,yi,zi,找出2组数,使得存在一个整数A,yi<=A%xi<=zi且yj<=A%xj<=zj。 yi<=a<=zi yj<=b<=zj 那么yi-zj<=a-b<=zi-yj
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4588 题意:从a加到b,每次结果加到a上,看在二进制下一共发生了多少次进位。 把0到n的所有数二进制下下来,可以发现规律:第一位循环节为2,每次循环01。第二位循环节是4,每次循环0011。以此类推。
阅读全文

浙公网安备 33010602011771号