自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JinxiSui的博客

退役ACMer

  • 博客(144)
  • 收藏
  • 关注

原创 The North American Invitational Programming Contest 2016 - Tourists ( LCA )

题意给出一棵n个点,n-1条边的树。现在计算所有标号为x到y的距离之和(满足y>x且y是x的倍数)思路关于树上任意两点距离之和,一开始想到树形dp,可树形dp,是对每条边,求所有可能的路径经过此边的次数,是求出边两端的点数,这条边被经过的次数就是两端点数的乘积。但是该题对计算的距离加了限制(y>x且y是x的倍数),显然不能用树形dp来做了。接下来想到图论部分的算法,想处理出...

2018-10-02 21:46:04 281

原创 HDU 6007 - Mr. Panda and Crystal ( 最短路+完全背包 )

题意岛上有n种宝石,有的宝石可以用魔力值合成,有的宝石不可以用魔力值合成。还有k种配方,即由几种宝石合成另一种。每一种宝石都有一个售价。现在,Panda有m的魔力值,问Panda得到的宝石最多能卖出多少钱。思路可以通过配方用消耗魔力值低的宝石去合成消耗魔力值低或者不能够用魔力值合成但是售价高的宝石,只要能够知道每个宝石最少需要多少魔力值合成,就可以将模型转化为物品重量为最低魔力值,价值为宝石...

2018-10-02 20:14:56 440

原创 HDU 6237 - A Simple Stone Game ( 分解质因数 )

题意有n堆石头, 每堆的初始数量为a1,a2,…..,an Bob每次可以从一堆里拿一块石头放到另一堆中, 问最少操作多少次能够使得每堆石头的数量能被一个数x(x>1)整除, 在这里, 我们默认0能被任何数字整除思路先分解质因数, x的取值只可能是石头总和sum的质因数 然后对每个质因数进行操作, 即使每堆石头变成0或者质因数的k(k>=1)倍 先对每堆石头进行处理,...

2018-09-12 22:00:44 286

原创 Gym 101775A - Chat Group ( 组合数 , 逆元 )

题意n个人,大于等于k个人可以建一个群,问能建成多少个不同的群。 结果对1000000007取模思路公式很简单 ans=C(n,k)+C(n,k+1)+......+C(n,n)ans=C(n,k)+C(n,k+1)+......+C(n,n)ans = C(n,k) + C(n,k+1) + ...... + C(n,n) 由于1 ≤ N ≤ 1091 ≤ N ≤ 1091 ≤...

2018-08-31 21:44:26 430

原创 HDU 2255 - 奔小康赚大钱 ( 二分图最大权匹配 , KM算法 )

题意有n户人家和n间房。现在给出每户人家对每一间房的报价,求怎样分配房子才能使政府收入最大,输出最大收入。思路带权二分图的最优匹配问题,可由KM算法解决 km算法入门 【原创】我的KM算法详解 顶标内容讲的很好:KM算法 松弛度内容讲的比较好:二分图的最佳完美匹配——KM算法 匈牙利算法和FF算法结合得到KM算法讲的很详细:二分图匹配之最佳匹配——K...

2018-08-23 10:27:06 232

原创 HDU 4185 - Oil Skimming ( 二分图匹配, 匈牙利算法 )

题意给出一个 n * n的油田,现在要撇去一些油,但是每次只能撇掉1 * 2或者2 *1的油,问最多能撇多少次。思路匹配 建图:给每个“#”标序号后,dfs找每个油田位置的上下左右是否有油田,若有则建边。跑匈牙利匹配即可。AC代码#include <iostream>#include <cstdio>#include <cstri...

2018-08-22 21:15:51 257

原创 HDU 1281 - 棋盘游戏 ( 二分图匹配 , 匈牙利算法 )

题意给出一个N*M (1 < N,M <= 100) 的棋盘,规定只有某些格子可以放“車”。要求放置的“車”不能互相攻击(不在同一行同一列) 在保证尽量多的“車”的前提下,棋盘里有些格子是可以避开的,也就是说,不在这些格子上放车,也可以保证尽量多的“車”被放下。但是某些格子若不放子,就无法保证放尽量多的“車”,这样的格子被称做重要点。求有多少个这样的重要点。 思路匈牙利...

2018-08-22 19:47:55 250

原创 HDU 6425 - Rikka with Badminton ( 组合数学,思维 )

题意有n个学生打羽毛球,其中有a个人没拍没球,b个人只有拍,c个人只有球,d个人有拍有球。 现在要求选出几个人组织一场比赛,一共有2n2n2^n种情况,组织成功的条件是至少有2个拍1个球。求有多少种情况无法组织成功。思路一开始想组织成功的,但是发现情况太多太复杂,只要有2拍1球就可以,那么可能会有2排1球,2排2球,3排1球,3排2球……不好列举。 反过来想无法组织成功的情况并不多...

2018-08-21 09:38:06 266

原创 HDU 5444 - Elven Postman ( 二叉搜索树 )

题意一些精灵住在一棵二叉搜索树上(???),给出一个序列表示这棵二叉搜索树(输入n个数的第一个数为根节点,第二个数和这个根节点比较大小,假如大于当前根节点的值,就往右边的节点走,小于往左边的节点走),现在邮递员要给他们送信,求送信每次走的方向。思路题目太长了 其实看懂了题意就能知道是个裸的二叉搜索树模板AC代码#include <iostream>#inc...

2018-08-17 10:04:31 293

原创 SGU 180 - Inversions ( 归并排序 / 树状数组 )

题意给出一个数组 求这个数组的逆序数思路分治(nlogn):将问题划分为规模更小的子问题,递归地解决划分后的子问题,再将结果合并。 考虑将数组a划分为两半得到b和c,于是a中的逆序对必然有三种情况: ①i,j都属于数列B的逆序对(i,j); ②i,j都属于数列C的逆序对(i,j); ②i属于B而j属于C的逆序对(i,j) .由于每次递归数列长度都会减半,所以递归深度为O...

2018-08-14 17:53:39 190

原创 HDU 1285 - 确定比赛名次 ( 拓扑排序 )

题意给出N个队伍标号为1-N 现给出一些队伍的胜负关系,比如 p1, p2表示 p1战胜了p2 求一个排名,要求输出时编号小的队伍在前。 数据保证不会有环思路拓扑排序:每次找入度==0的点, 将这个点和从它发射的边删掉。在常规的拓扑排序中,若找不到这样的点说明有环(故拓扑排序可以判断图中是否成环)。但这道题已经确保不会出现这样的情况。AC代码(直接求)#include...

2018-08-14 16:41:06 275

原创 HDU 1251 - 统计难题 ( Tire树 )

题意给出一些单词,再给出一些前缀,求有多少个单词包含这个前缀。思路用map统计水过。赛后意外的发现自己的代码跑了900+ms,为什么这么多人才跑了60+ms (滑稽) 更好的算法是用Tire树(字典树)操作,查询前缀出现的次数,就开一个sum[],表示位置i被访问过的次数浅谈Trie树(字典树)AC代码(Tire,60+ms)#include <iostream...

2018-08-14 15:47:54 242

原创 HDU 1166 - 敌兵布阵 ( 线段树 )

题意给出n个敌兵阵营的人数,给出一些操作命令: (1) Add i j , 第i个营地增加j个人 (2)Sub i j , 第i个营地减少j个人(j不超过30); (3)Query i j , 询问第i到第j个营地的总人数; (4)End 表示结束思路线段树模板题 /*单点覆盖,区间查询*/下面记录一下几个好用的线段树模板:/*单点覆盖,区间查询*/#incl...

2018-08-08 20:55:11 208

原创 UVA 10003 - Cutting Sticks ( 区间dp )

题意一个长为L ( L < 1000 ) 的木块, 有n个切割点 分别为c1, c2, c3, ……, cn (0 < ci < L) 每次切割的花费是被切木块的长度 求切割完木块的最小花费思路区间DP石子归并模板 分析 : 比赛的时候根本没多想,觉得切木块就是哈夫曼树,各种wr。 第一步和哈夫曼树那个题是一样的,就是要把“切割”看成“合并”倒着往回推,但是,...

2018-08-06 16:11:38 346 2

原创 HDU 5968 - 异或密码 ( 前缀异或 )

题意给出一个长为n的数组a,给出m个质询,每个质询给出一个数字,需要找到序列a中所有连续子序列的异或结果中与质询数字差的绝对值最小的一个,输出最长的这种连续子序列的长度思路异或前缀和+暴力 我们知道一个数异或自己即抵消异或效果 比如a^b^a = b , a^a^b = b 那么我们存下前缀和之后,想要求i~j的异或结果即pre[j]^pre[i-1]注意: ‘^’的优先...

2018-08-05 18:01:56 352 1

原创 CodeForces 371C - Hamburgers ( 二分搜索 )

题意做汉堡 先给出一个字符串表示每个汉堡的做法(B:bread, S:sausage, C:cheese) 给出三个值表示BSC分别有多少存货 给出三个值表示商店中BSC分别多少钱一份 给出一个值表示店主现在有多少卢布 问最多能做多少汉堡思路二分搜索 但是中间有很多溢出没处理好 用的unsigned long long才水过AC代码#include <i...

2018-07-27 21:08:49 376

原创 POJ 2456 - Aggressive cows ( 二分:最大化最小值 )

题意n间屋,m头牛,使得牛跟牛之间的距离最远,防止牛打架思路类似的最大化最小值或者最小化最大值的问题,通常用二分搜索法就可以很好地解决。 solve(d): 可以安排牛的位置使得最近的两头牛距离不小于d 那么问题就变成了求满足solve(d)的最大的d 另外, 最近的间距不小于d也可以说是所有牛的间距都不小于d solve(d): 可以安排牛的位置使得任意的牛的间距都不小于d...

2018-07-27 21:05:14 203

原创 POJ 2250 - Compromise ( 最长公共子序列的DFS输出 )

题意(多组输入)给出两段文字, 输出最长公共子序列思路DFS回溯输出最长公共子序列AC代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <set&g...

2018-07-25 15:07:42 256

原创 UVA 10533 - Digit Primes ( 素数筛, 埃式筛法 )

题意求a~b内有多少个数满足本身是素数且各位相加后的结果也是素数思路1 不 是 素 数因为这个debug了两个小时WA了四次也很可以 用普通素数筛就能做, 优化一下用Eratosthenes筛法也行 先说用普通素数筛: 只需要先筛选出1-54内的素数( 最大的各位相加是999999这个数 最大54 ) 然后对1~1000000所有数字求出各位相加的结果, 如果各位相加得到...

2018-07-25 14:47:52 313

原创 POJ 3090 - Visible Lattice Points ( 欧拉函数 )

题意求从(0,0)出发有多少个点与其连线(不在同一直线上)有多少条思路看左上部分和右下部分条数相同, 中间有一条k=1/2的连线 推出 n = 2 , ans = 2*2+1 = 5 n = 3 , ans = 2*4+1 = 9 n = 3 , ans = 2*6+1 = 13 n = 3 , ans = 2*10+1 = 21其中的2, 4, 6, 10, … 正好是...

2018-07-25 12:12:48 230

原创 HDU 1286 - 找新朋友 ( 筛法 )

题意找1~n-1内有多少个数与n没有大于1的公约数思路用筛法暴力就能解 分解出n的所有因子, 扫一遍未被标记的数目就是答案 在时间范围之内AC代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include &l...

2018-07-24 21:38:11 181

原创 UVa 10689 - Yet another Number Sequence ( 矩阵快速幂 )

题意 斐波那契数列, 给出a, b ( [0, 100] ), n( [0, 1000000000] ), m ( [1, 4] ) . 求 f(n) 的后m位思路因为要求的n非常大, 直接求解是肯定超时的. 这里涉及到利用矩阵快速幂求解递推式 : 由 f(n)=f(n−1)+f(n−2)f(n)=f(n−1)+f(n−2) f(n) = f(n-1) + f(n-2) ...

2018-07-24 21:30:40 278

原创 POJ 3660 - Cow Contest ( floyed求传递闭包 )

题意公牛比赛, 给出一些等级关系, 如 A B 表示 A 能够战胜 B 求有多少只公牛的排名能够确定思路一眼看成拓扑排序, 很久没做过拓扑忘了怎么写, 又因为个人赛不能查阅资料, 就没能继续想下去. 可是题目并没有要求具体的排序顺序. 在这道题中, 所谓战胜关系是可以传递下去的, 比如 A 战胜 B , B 战胜 C, 则 A 能够战胜 C. 典型的floyed求传递闭包 讲道理,...

2018-07-23 13:52:44 261

原创 UVa247 - Calling Circles ( floyed求传递闭包 )

题意电话圈, 每行输出在一个圈内的人名思路有向图的传递闭包 该有向图中, 并不需要关心路径长度, 只需要关心两点之间是否有通路, 则可以用”1”和”0”表示”连通”和”不连通”. 这样只需要将floyed算法中的语句改为 d[i][j] = d[i][j]||(d[i][k]&&d[k][j]) 即可求得传递闭包AC代码#include <iostrea...

2018-07-23 13:29:07 161

原创 UVa 1395 - Slim Span ( 枚举 + Kruskal最小生成树 )

题意求最苗条生成树(即最大边权值-最小边权值)最小的生成树, 若能构成最苗条生成树输出苗条度, 否则输出-1思路复健题目一个月没做题第一发就是AC 思路很简单的Kruskal算法求最小生成树 遍历枚举开始位置,当生成n-1条边时记录苗条度即可AC代码#include <iostream>#include <algorithm>#include &...

2018-07-05 18:08:35 204

原创 POJ 3723 - Conscription ( 最大权森林 / 最小生成树 )

题意挑选N个女兵,M个男兵,雇佣每个人都需要支付10000元的费用,如果男a和女b存在亲密度d,只要他们其中有一个已经被选中,那么在选另一个人需要的费用为100000-d,给定R个关系,输出一个最低费用,每个关系只能使用一次。思路最大权森林转换为负权最小生成树( MST ) 当时学最小生成树就这个博客上的图感觉非常好理解: 算法导论–最小生成树(Kruskal和Prim算法)K...

2018-05-15 11:46:59 379

原创 UVA 481 - What Goes Up ( LIS路径打印 )

题意给出一个数列, 求出一个严格上升的最长上升子序列并打印路径思路O(nlogn)打印 【LIS】O(nlogn)二分法搜索+路径输出 记住每一个元素曾经出现在最长子序列中的位置,然后我们反向查找,第一个遇到的就是真正LIS中的元素。AC代码#include <iostream>#include <algorithm>#include...

2018-05-03 22:32:01 287

原创 HDU 5247 - 找连续数 ( 思路 + RMQ )

题意一个长度为n ( n <= 10^4 )的无序数组, 找是否存在k区间使得区间内元素排序后是连续的, 求有多少个这样的k区间( k <= 1000 )思路RMQ算法预处理区间的思想实现O(n)查询 记录这个区间的最大最小值, 如果 最大值-最小值+1 == j-i+1 则 ans[j-i+1]++剪枝: 1. 如果 最大值 - 最小值>1000, b...

2018-05-03 14:45:40 160

原创 HDU 4965 - Fast Matrix Calculation ( 矩阵快速幂 )

题意给出一个 n * k 的矩阵A, 一个 k * n 的矩阵B ( 4 <= n <= 1000 ) (2 <= k<= 6) 进行以下操作 : 1. 计算n * n的矩阵C = A * B 2. 计算矩阵 M = Cn∗nCn∗nC^{n*n} 3. 矩阵M中每个元素模6得到M’ 4. 计算M’中每个元素的和思路比赛期间没想到矩阵M的计算可以这样...

2018-05-01 19:06:34 171

原创 CodeForces 445B - DZY Loves Chemistry ( 并查集 )

题意DZY做化学实验, 有n种试剂, 其中m对能够发生化学反应, 试管初始危险系数为1, 当放入一种试剂与试管中已有试剂能够发生反应, 则危险系数*2, 求最大的危险系数思路并查集 将所有能发生化学反应的试剂放在一个集合里, 一个集合中的试剂按照一定顺序加入就一定可以保证每次加入都发生反应。最大危险系数 = 2^(n-集合数量)AC代码#include <i...

2018-04-27 22:20:53 184

原创 HDU 5835 - Danganronpa ( 贪心 )

题意给学生发礼物, 学生的桌子排成一行, 要求每个学生发两个礼物, 一种普通礼物, 一种特殊礼物(随意), 要求相邻的普通礼物不能相同思路每个学生准备两个礼物, 记礼物总数为sum, 则至多能分给sum/2个学生. 贪心 : 为保证相邻的普通礼物不同, 故尽可能多的放数量多的礼物, 中间插空放数量少的礼物, 当只剩一种礼物且上一次放的就是这个礼物的时候, 不能再继续放礼物, 贪心...

2018-04-27 22:15:10 156

原创 CodeForces 731C - Socks ( 并查集 + 贪心 )

题意Arseniy的所有袜子按照1-n编号, 每个袜子的颜色标记为c[i], 现在给出n个袜子和m天的穿袜子方案, 至多有k种颜色( 感觉是无用条件 ), 现在要求她每天穿着方案的两只袜子同色, Arseniy可以将其涂色改变颜色, 求最少的涂色数量思路比较容易想到并查集 将每天穿着方案中的两只袜子合并到同一个根节点下, 同一个集合中的袜子必须涂成同一种颜色, 这里用非常简单的贪心思...

2018-04-27 12:27:46 304

原创 HDU 5783 - Divide the Sequence ( 贪心 + 思路 )

题意给出一个数列, 求最多可以分割成多少个子序列使得子序列的前缀和都>=0思路倒序扫一遍, 若为正则划分为一个序列, 若为负则将该数加到数列中前一个数里(加到和>=0为止).AC代码#include <iostream>#include <algorithm>#include <cstdio>#include <c...

2018-04-26 20:48:21 170

原创 CodeForces 660D - Number of Parallelograms ( 模拟 )

题意给出n个点, 输入保证没有重复点, 且不会有三点共线, 求这些点能够构成的平行四边形的个数思路最后B题还有半个来小时没考虑全瞎瘠薄写没过 赛后补B题发现人家全用向量做的 我居然用的长度和斜率跑了2000+ms真的是太傻逼了大概就是用n*n跑一遍点, 枚举出所有可能组成的边(以向量形式存储), 若有两个向量完全相同则他们能构成一个平行四边形. 自己写的时候傻逼了, 用的...

2018-04-26 20:36:53 178

原创 POJ 1631 - Bridging signals ( LIS )

题意 有p条线路,它们有可能相交。现在让你去掉一些线路,使得剩下的线不相交且线最多 ( p < 40000 )思路为使得连线不相交, 必须选择一个上升的连接序列, 而求剩下的线不相交且最多就是求LIS ( 最长上升子序列 ) 由于p最大达40000, 1000 ms 肯定不能用复杂度为O(n*n)的朴素动态规划,会超时。这时考虑用O(nlogn)的 二分+贪心 建一个...

2018-04-25 21:38:41 228

原创 HDU 6112 - 今夕何夕 ( 基姆拉尔森公式 )

题意给出一个年月日, 求接下来最近哪一年的该月改日和这一天的星期相同思路基姆拉尔森公式求星期即可, 特别注意2月29日的特判 ! 关于基姆拉尔森公式 :基姆拉尔森公式模板int weekday(int y, int m, int d){ if(m==1||m==2){ m+=12; y--; } int w...

2018-04-24 18:50:00 219

原创 HDU 5860 - Death Sequence ( 递推+约瑟夫环 )

题意给出编号为1–n的n个人, 每隔k个杀一个人, 询问m次, 问第x个杀掉的是谁思路比赛的时候推递推式没推出来, 只好用vector的erase试试, 当然是超时了 比较像约瑟夫环, 但这个题目是不成环的 赛后还是查了查正解, 发现确实是有递推关系的 将编号改成从0开始。如果i%k==0, 那么i第一轮就被杀死。如果i%k!=0,否则在下轮中编号为i-i/k-1AC...

2018-04-24 15:42:39 161

原创 HDU 5857 - Median ( 查询模拟 + 思路 )

题意给出一个长度为n的递增数组A, 给出m个查找, 查找方式 : 给出l1, r1, l2, r2, 使得数组A中的A[l1], A[l1+1], ……, A[r1-1], A[r1] 和 A[l2], A[l2+1], ……, A[r2-1], A[r2]组成新的数组, 求这个新数组的中位数For 90% of the data, n, m <= 100 For 10% of...

2018-04-23 22:04:50 177

原创 HDU 5867 - Water problem ( 模拟 )

题意one:3个字母,two:3个字母,three:5个字母…..求到n<=1000,1—1000所有单词字母数量的和 For example, 342 (three hundred and forty-two) contains 23 letters and 115 (one hundred and fifteen) contains 20 letters. The use o...

2018-04-23 09:21:32 109

原创 HDU 4925 - Apple Tree ( 贪心 + 规律 )

题意一个n*m大小的苹果园,现在可以在某几块地上施肥。施肥作用效果是使得上下左右的四个区域内结的苹果数量翻倍,但是施过肥的地就不能放果树了。求最多能收获多少苹果。思路贪心 + 规律 从第一排第一个开始施肥,每隔一个位置施肥。 第二排从第二个位置开始施肥,…… 第三排从第一个位置开始施肥,…… ……AC代码#include <iostream>#...

2018-04-21 19:25:07 184

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除