自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (1)
  • 收藏
  • 关注

原创 DP方程——Coloring Trees ( Codeforces Round #369 (Div. 2) C )

题目链接: http://codeforces.com/contest/711/problem/C分析: 给出n棵树和m种颜色以及beauty值k,再给出n棵树的初始颜色,0就是没有涂色。再给出给第i棵树涂上第j种颜色需要的花费。beauty值的计算为树颜色集合的数目,比如给出7棵树颜色为2, 1, 1, 1, 3, 2, 2, 3, 1, 3,那么它的连续集合为{2}, {1, 1, 1},

2016-08-31 20:07:06 259

原创 最短路(SPFA+建图)——HDU 4725

题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=4725分析: 给出N个点,每个点属于某一层,层数不大于N,相邻两层的距离为C,相邻两层的点可以随意抵达,再给出M条边:u-v权重为w。求点1到点N的最短路。题解: 我们可以把层简化为一个点,从该层建单向边到所有属于该层的点,边的权重为0;相邻的层之间建双向边(必须保证这两层都有点)

2016-08-29 21:41:12 497

原创 最短路Floyd——POJ 1125

题目链接: http://poj.org/problem?id=1125分析: 给出N个点,接下来给出N行:该行有num对关系,每对关系给出两个数a,b表示i点到a点的边权重为b。求出一点:从该点出发到达距离它最远的点的距离是最小的。题解: 最多100个点,所以直接Floyd,然后遍历一遍即可。AC代码: /****************************************

2016-08-28 19:18:43 467

原创 最短路SPFA——Big Christmas Tree ( POJ 3013 )

题目链接: http://poj.org/problem?id=3013分析: 给出N个点和M条边,每个点有它的权值,每条边也有它的权值,建造这条边的花费等于这条边的权值*另一端端点的子树所包含的点的权值和。求连接所有点以点1为根节点构造出一颗树的最小花费。题解: 通过计算可以推断出,每个点的权值会被计算多次,但是只有从根节点到该点的边才会乘以该点的权值,所以我们可以把问题转换为求根节点1

2016-08-28 17:42:40 653

原创 费用流+建图——Teamwork ( HDU 4494 )

题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=4494分析: 给出n个仓库和m种工人,每个仓库有一个坐标和开始建造的时间与建造所需要的时间,并且建造每个工厂对m种工人的需求量是不一样的。时间从0开始,要求每到达一个工厂的开始建造时间,工厂必须开始建造,工人从一个工厂到另外一个工厂的时间花费等于两个工厂间的直线距离,最开始从原点(0,

2016-08-28 10:24:56 993

原创 区间DP——Dire Wolf ( HDU 5115 )

题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=5115参考链接: http://blog.csdn.net/hurmishine/article/details/50198967分析: 给出N头狼的攻击力和辅助攻击力,每头狼的攻击力等于它本身的攻击力加上它左右的狼的辅助攻击力,求出如何移走狼才能使得受到最小的攻击。题解:区间D

2016-08-25 21:34:08 447

原创 枚举+状态压缩——2013 杭州区域赛A ( UVA 6454 )

题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4465参考链接: http://blog.csdn.net/min_lala/article/details/15500613分析: 给出一个N×M的网格,其中’#’表示不

2016-08-25 20:49:37 420

原创 搜索(DFS+BFS)——UVA Live 6455

题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=&problem=4466&mosmsg=Submission+received+with+ID+2027289分析: 给出一个N×M的方格,方格由不可走的 ‘#’ 和可以通过

2016-08-20 20:32:32 416

原创 二分+贪心——HDU 5855

题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=5855参考博客: http://blog.csdn.net/queuelovestack/article/details/52222085分析:给出N个工厂,每个工厂给出建造时间和费用,给出M个商店,每个商店给出收益和需要哪些工厂供货才能盈利,求获得L盈利的最小时间(盈利 = 商店的

2016-08-17 13:39:02 393

原创 贪心——Playing with numbers ( Gym 101061 E )

题目链接: http://codeforces.com/gym/101061/problem/E分析: 给出一个长度最大为100000位的数字,求从中剔除掉N个数字后得到到最大数和最小数。题解: 非常简单的一道贪心: 若是找最小数,那么维持原来的数字单调递增,若递减,则把前面的数字删去直到递增,遍历一遍后如果没删够,则从后面删。 若是找最大数,那么维持原来的数字单调递减,若递增,则把

2016-08-16 10:55:34 614

转载 高斯消元法 (模板)

/* 用于求整数解得方程组. */#include <iostream>#include <string>#include <cmath>using namespace std;const int maxn = 105; //矩阵大小int equ, var; // 有equ个方程,var个变元。增广阵行数为equ, 分别为0到equ - 1,列数为var + 1,分别为0到var.

2016-08-15 14:35:07 1108

原创 预处理找到前N个质数

较快的方法预处理找到前N个质数,质数最大不超过Max。int prime[N];void getPrime() //预处理找出前几个质数{ for(int i=2;i<=Max;i++) { if(!prime[i])prime[++cnt]=i; //第cnt个质数 for(int j=1;j<=cnt&&prime[j]<=Ma

2016-08-15 14:03:15 767

原创 高斯消元法——HDU 5833

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5833分析: 给出n个数,从中取一个数或者取多个数相乘得到完全平方数,问有多少种取法。题解: 因为每个数的大小为[0,1018][0, 10^{18}],每个数的质因子大小不超过2000,又2000以内的质数只有303个,所以我们可以先预处理一遍:把每个数质因子分解存进数组,若含有同一个质因子

2016-08-15 13:04:29 403

原创 大数取模 (模板)——HDU 5832

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5832分析: 给出一个长度最大为10000000的数字,判断它模137和模73是否都余0。题解: 直接套用大数取模: 针对数字位数超过最大整数范围限制的数进行取模操作,每次对一位取模 根据 (ab)%mod=(a%mod)*(b%mod);把大数换为字符串处理,之后对每一位数字进行取模大数

2016-08-15 10:43:45 580

原创 最短路 ( SPFA )——Ramzi ( Gym 101061 C )

题目链接: http://codeforces.com/gym/101061/problem/C分析: 给出N个点和M条路,M条路有步行路有乘车路,给出每条路的种类和花费的时间,最后给出起点x和终点y,求从x到y的最短路(要求步行时间最小,步行时间相同时,要求总的时间最小)题解: 很明显这是一道最短路,不过判断的标准从一个变成了两个,但是主要标准还是步行时间,我们就求步行时间的最短路,当步

2016-08-14 09:50:00 424

原创 矩阵快速幂——RGB plants (Gym 101061 B)

题目链接: http://codeforces.com/gym/101061/problem/B分析: 叨逼叨:(又是死在数学题上,这次一来就把式子合并去算递推公式去了,真是分分钟切腹自尽的节奏,又废了3个小时,下次看到数学题还是先从最初始的公式开始推,一个方向不行就换个方向,不要死磕一种方法!!!!) 题意: 种下1朵红花,1朵绿花,1朵蓝花; 一朵红花一晚上后变成1朵红花,2朵绿花,

2016-08-13 19:53:48 523

原创 贪心——HDU 1009

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1009分析: 给你M份猫粮,和N个房间,每个房间有J[i]份JB,并且需要F[i]份猫粮,如果你给出房间需求猫粮的a%,也将会获得房间内JB的a%,问,怎样才能获得最大份量的JB。题解: 虽然是一道很水的贪心,不过还是有几个坑点:首先我们都会想到用 J/F 得到每个房间的投入和产出比排序来选房

2016-08-13 10:55:25 335

原创 网络流 (邻接矩阵)——HDU 2516

题目链接: http://poj.org/problem?id=2516分析: 给出N个商店,M个厂家,K种货物,然后给出N个商店对于K种货物的需求量,和M个厂家对于K种货物的供给量,最后给出没种货物的每一份分别从N个商店运输到M个厂家的花费。求能不能满足着N个商店的需求,若能够输出最小花费,若不能,输出-1/。 一看便是一道网络流的题,辛苦建完边后发现超时了,结果是因为邻接矩阵查询超时的,

2016-08-12 21:48:02 1170

原创 最小费用最大流 (建图)——POJ 2135

题目链接: http://poj.org/problem?id=2135分析: 给出N个点和M条路,每条路有一个长度,而且从一个点到另外一个点可能不止一条路,要求从1走到N再走回去,并且同一条路只能走一次,求最短路径的长度。题解:建图:首先,因为有重边的情况存在,所以需要用邻接链表来存储边,然后因为是无向边,所以每条边需要正着建一次,反着建一次。 因为走过去又走回来且不能走相同的路,就相当

2016-08-12 15:45:14 507

原创 贪心 ( HDU 5821 )——2016 Multi-University Training Contest 8 1001

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5821分析: 比赛的时候已经把球的最终位置按顺序标号再按球的初始位置排进数组里。。。不过区间操作采取的是把区间内标号清0,(一觉睡醒没时间了,胡乱想的。。。),当时多想一会应该能想到是区间内排序操作。。题解: 因为如果初始状态能排成最终状态,那么每一个位置是0还是1还是2都没关系,我们只需要在

2016-08-12 10:40:55 395

原创 网络流 (费用流+拆边)——Transportation ( HDU 3667 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3667分析: 给出N个城市,M条路,K个货物,每条路的费用系数aia_i和最大运送数量C,求把K个货物从城市1运送到N需要的最小费用,每条路的费用为一个系数aia_i乘以在这条路上运送的货物数量的平方。一看便是一个最大流最小费用,不过费用为动态的,所以我们可以采用拆边的方法,把动态的费用变成静态的

2016-08-10 21:48:32 585

原创 二分图匹配 ( 多重匹配&&Hungarian)——Escape ( HDU 3605 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3605分析: 有n个人和m个星球,给出n个人对于m个星球的态度(0为不适合居住,1为适合),再给出m个星球最大能居住多少人,要求判断这n个人能否都居住到自己喜欢的星球。 这是一道多重匹配的二分图,改改匈牙利算法就能过。(开始直接上了网络流ISAP,结果直接TLE,T ^ T)多重匹配匈牙利算法

2016-08-10 15:06:53 484

原创 贪心——HDU 5813 ( 2016 Multi-University Training Contest 7 1005 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5813分析: N代表N个城市,每个城市要求只与AiA_i个城市相连接,且最后的路不能成环。若满足就输出Yes和每条路否则输出NO题解: 先把给出的要求连接城市数排序,然后遍历一遍,若AiA_i大于i-1那么不成立,再遍历一遍,每个城市只连接它前面的城市参考代码:#include <iost

2016-08-09 21:21:40 303

原创 数据结构 ( 优先队列&&栈 )——HDU 5818 ( 2016 Multi-University Training Contest 7 1010 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5818分析:对栈做三种操作: push A x 把x元素压入A中 pop B 删除B中最上面的元素并输出该元素 merge B A合并A到B中,合并后B中的元素顺序和之前压入的顺序一样(就是从头开始把之前的压入操作都只对B执行一遍)题解: 用一个数据结构存储值和序号,使用三个优先队列,按

2016-08-09 20:18:39 432

原创 第七场多校总结

团队之间没有一点合作,都在分开做题,结果三人都卡住了:下回坚定一块怼题的战略方针。对于数学题不要总想着化简或推导公式,首先先高清考察的数学知识,然后记住打表题特征: 数据范围非常大,然后公式相对很复杂,或者情况很复杂,无法从中得出什么能化简的东西,这种题就是打表!!!!!!!无论是手动打表还是编个程模拟打表都可以!!!!!!!!!比赛时不要死磕!!!!!!!!!!

2016-08-09 18:20:07 275

原创 打表 ( 教训!!! )——HDU 5810 ( 2016 Multi-University Training Contest 7 1002 )

题目链接: http://acm.hdu.edu.cn/contests/contest_show.php?cid=710分析: 这就是一道打表水题啊啊啊!!!!!!!!!!!!!!!!!!! 看完题,队友告诉我是stirling数,我拿取研究了3个小时没有化简出公式来。后来发现就是一道打表题。题解: n个不同的球放进m个不同的箱子里,然后求下面这个式子的期望 V=∑mi=1(Xi−X

2016-08-09 18:02:02 555

原创 状压DP (Floyd+状态压缩 )——Hie with the Pie( POJ 3311 )

题目链接: http://poj.org/problem?id=3311分析: 给出n个点,标号从1到n,再给出一个(n+1)*(n+1)大小的矩阵,表示从i到j的花费时间,0代表出发点,从0出发,最后需要回到0,每个点必须都去过,可以重复走,求最短时间。题解: 1.先Floyd求一遍两点间最短路:void Floyd(){ for(int k=0;k<=n;k++)

2016-08-08 20:28:23 365

原创 状压DP ( 预处理减少状态 )——炮兵阵地 (POJ 1185)

题目链接: http://poj.org/problem?id=1185分析: 这道题和POJ 3254很相似,不过因为它的条件改成上下左右的两块地方不能放置炮兵,又因为一行最多10格,所以需要先预处理一下每一行全是平地时候能放置炮兵的所有情况。 (之前直接开1<<10的二维数组,跑一下结果把ubuntu系统卡得都快没反应了)题解: 1.预处理一行放置炮兵的情况:int con[66]

2016-08-08 16:20:12 314

原创 状压DP——Travelling ( HDU 3001 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3001分析:1.因为每个城市最多访问2次,所以用状态0,1,2记录某个城市被访问的次数,把1~N个城市的访问状态连在一起可以用一个三进制数记录。2.定义DP[i][j]中i为一个三进制数表示N个城市的访问情况,然后j表示目前访问到的城市序号,那么我们可以得出状态转移方程: dp[i+3v

2016-08-07 16:21:36 311

转载 状压DP——Corn Fields ( POJ 3254 )

题目链接: http://poj.org/problem?id=3254分析: 给出M行,N列的土地,1代表肥沃,0代表贫瘠,只能再肥沃的土地上种玉米并且不能相邻着种,问有多少中种植的方法。题解:1.这是一道状压DP的入门题,我们首先用一个一维数组记录每一个行肥沃徒弟的状态,把它记录为一个二进制数for(int i=1;i<=n;i++){ Map[i] = 0; for

2016-08-07 16:10:02 356

原创 博弈论 (Nim 博弈)—— HDU 1907 && HDU 2509

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1907分析: 这是一道非常经典的Nim博弈,我们需要特殊判断一下每一堆石子都为1的情况,然后对于其它情况,只需要将每一堆石子的数量异或在一起,最终为1就是先手先拿完,为0就是后手先拿完。AC代码:#include<iostream>const int MAX=5000;using names

2016-08-07 10:54:57 472

原创 博弈论 (简单博弈分析)——Coin Game ( HDU 3951 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3951分析: 给出N个硬币围成一个圈,每次最多取K个连续的硬币(若两个硬币间有空缺,则不连续),给出N和K的值,求是先手赢还是后手赢。题解: 读完题后看起来觉得情况比较复杂,甚至还想过用SG值来异或每一次被断开的两条链,不过仔细分析一下发现很简单。若N≤K,肯定先手赢若N>K,那么先手取完后

2016-08-06 16:15:07 456

原创 博弈论 ( 斐波那契博弈 )——取石子游戏 ( HDU 2516 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2516分析: 游戏规则: ① 先手不能一次取完所有石子 ② 之和每次可以取得的石子数在1~上次对方取的石子数的两倍之间(闭区间) ③先取完的获胜题解: 通过数学归纳法找规律,得出必败数。 过程:2块石头:先手败3块石头:先手败4块石头:先手赢(先取1,后者怎么取,先手都能赢)5块

2016-08-06 14:28:07 1483

原创 博弈论 ( Nim游戏+SG模板)——S-Nim ( HDU 1536 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1536分析: 给出K种拿石子的方法,然后给出I堆石子让你判断当前位置是必胜点还是必败点。题解: 对于每次给出的K种拿法,先用SG函数预处理一遍,然后直接异或每一堆石子的数量就能得到其最终结果SG函数模板:const int MAX = 10005;//总的石子数int f[105], sg

2016-08-06 11:18:16 543

原创 数学 ( 排列组合 )——HDU 5194

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5194分析: 给出n个黑球,和m个白球,随机取球,求上一次拿出白球,这一次拿出黑球的次数的期望。题解: 这是一道非常简单的二项分布,我们可以计算出在i位置出现白球后再i+1位置出现黑球的概率为mm+n×nm+n−1\frac{m}{m+n}×\frac{n}{m+n-1},每组数据可能有m+n

2016-08-05 13:58:51 479

原创 数学 ( 容斥原理&&求区间内互质数的个数)——Co-prime ( HDU 4135 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4135分析: 给出区间[A, B],求其中与m互质的数的个数。题解: 利用容斥定理选出[1, X]区间内和m互质的数的个数。代码:LL Find(LL num, LL m)//找出[1, num]与m互质的数的个数{ LL ans=0,tmp, flag; for(LL i

2016-08-04 21:39:58 2643

转载 贪心——Windows10 ( HDU 5802 ) ( 2016 Multi-University Training Contest 6 1010 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5802分析: 比赛的时候没考虑到可以用上升替代停顿的情况。。。。题解: 直接的做法是比较 往下降,然后升回来和往下降然后停顿或者上升一些后再开始下降的取值,于是可以化成一个自问题,不断递归DFS即可。 PS:需要记录停顿的次数,然后需要向上的时候就可以用停顿不上去。标程:#include

2016-08-04 20:19:43 300

原创 数学 ( 鸽巢原理 )——Halloween treats ( POJ 3370 )

题目链接: http://poj.org/problem?id=3370分析&&题解:题意就是给出一个数列,问有没有一个子序列能被c整除。组合数学中由如下结论: 设a1,a2,...,ama_1,a_2,...,a_m是正整数序列,则至少存在整数 kk 和 ll,0≤k<l≤m0≤k<l≤m,使得m|(ak+1+ak+2+...+al)m|(a_{k+1}+a_{k+2}+...+a_l)。

2016-08-04 09:48:13 448

原创 DP ( 滚动数组 )——Max Sum Plus Plus ( HDU 1024 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1024给出n个数,要求从中分出m段不重叠的子段,使得所有的子段和加起来最大。分析: 因为n的范围很大,最大为1,000,000,而m的范围未知,所以我们如果开二维数组来进行动态规划,很可能会爆内存,所以,我们采用一维滚动数组的方式,只记录需要记录的值即可。题解: 使用dp[j]记录分为i组,

2016-08-03 20:08:16 421

转载 数学 ( 卡特兰数 大数打表模板 )——Train Problem II ( HDU )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1023卡特兰数打表模板://*******************************//打表卡特兰数//第 n个 卡特兰数存在a[n]中,a[n][0]表示长度;//注意数是倒着存的,个位是 a[n][1] 输出时注意倒过来。//***************************

2016-08-03 17:07:30 393

二分图判断【染色法】

怎么判定一个图是否为二分图 ? 从其中一个定点开始,将跟它邻接的点染成与其不同的颜色,最后如果邻接的点有相同颜色,则说明不是二分图,每次用bfs遍历即可。

2019-03-25

空空如也

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

TA关注的人

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