自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(110)
  • 收藏
  • 关注

原创 Codeforces Round #259 (Div. 2) D. Little Pony and Harmony Chest (状压dp || 位运算)

题意: 给你N个数(a[1],a[2],….a[n]),让你给出N个两两互质的数,使得sum(abs(a[i]-b[i]))最小。 题解: 这道题最最重要的是要想到,求一个数和一个序列其他数是否互质可以用质因子是否重合来做,维护当前序列的质因子集合,然后要加入一个新的元素时,只需要检查该元素质因子是否与集合中质因子重合,就代表是否互质。 然后检查质因子重合,还可以用位运算来加快速度,因为

2018-01-29 09:51:27 236

原创 codeforces Hello 2018 --------- E Logical Expression

大意和题目介绍: 点击链接 ps:自己太懒了,当时也是参考大神代码才理解的。题解: 主要是对三个操作优先级的划分,然后要想要可以用dp状态来表示每个操作,这样以后就简单许多了。 还有一个就是直接输入二进制的话就是int tmp = 0b00111;代码:#includeusing namespace std;#define LL long long#define fir

2018-01-19 15:51:22 241

转载 (hdu 6078)2017 Multi-University Training Contest - Team 4 Wavel Sequence

题意: 给出一个有n(<=2000)个数字的序列 a(ai <=2000) 再给出一个有m(m<=2000)个数字的序列 b (bi<=2000) ,定义波浪序列为:x1x3#include <algorithm>#include <bitset>#include <cmath>#include <cstdio>#include <cstdlib>#include <cstring>#

2017-08-07 10:57:16 253

原创 2017 Multi-University Training Contest - Team 4 1007(hdu 6073) Matching In Multiplication

题意: 定义一个二分图的完美匹配的值是当前匹配中所有的边值相乘,而一个图的完美匹配就是所有可能的完美匹配的值的和。题解: 首先考虑入度为1的点,这样的点肯定会被每一种完美匹配算上,先用拓扑排序的方法把所有的入度为1的点相应的边值乘上,得到rans接下来需要想到的一点就是,除去入度为1的点,剩下的点都在一个环内,然后对于每个环,匹配的方案都只有两种,那么我们就只要在乘上每个环的rans = ran

2017-08-06 16:14:48 435

原创 2017 Multi-University Training Contest - Team 3 1003(hdu 6058) Kanade's sum(链表)(set)

题意: 给你一个全排列,要你求这个序列的所有区间的第k大的和题解:对于每个数字计算贡献值,对于a[i],求区间中第k大的数字是a[i]的数量。 那么我们就需要维护a[i]左边和右边的k个比a[i]大的数字的下标。 这时候需要用到set来找左右边第一个比a[i]大的数字下标,然后用链表连起来。我们从小到大遍历,那么对于当前数字只需要找一次左右边比a[i]大的数字。 ps:直接用set里面的迭代器

2017-08-02 10:48:57 281

原创 网络流模板

dinic模板:#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <stack>#include <bitset>#include <queue>#include <set>#include <map>#include <string>

2017-07-30 15:50:04 238

原创 2017 Multi-University Training Contest - Team 1 1008(hdu6040) Hints of sd0061

题意: 给你一个函数求出1e7个数字,然后对这1e7个数字有m次询问,每次问数字中第dx大的数字是多少。题解: 主要是要用到复杂度为O(n)的stl函数。 nth_element(num.start(),num.start()+n,num.end()); 可以把序列中比第n大的数小的放左边,比第n大的放右边。代码:#include <iostream>#include <cstdio>#

2017-07-26 15:56:19 327

原创 2017 Multi-University Training Contest 1003(hdu 6035) Colorful Tree

看了很多人的博客才弄懂这一道题目,感觉他们解释的还不够详细。题意: 一棵有n个点的树,树上每个点都有颜色c[i],保证每两个点之间的路径只有一条,定义每条路径的值为这条路径上经过的不同颜色数量和。求所有路径的值。题解: 主要思想就是对于每个颜色单独考虑。 先把所有的情况都算上,也就是对于n个点,一共有n*(n-1)条不同的路径。那么对于n种颜色,一共就是ans = n*n*(n-1)种情况。

2017-07-26 13:46:44 231

转载 HDU - 1255 O - 覆盖的面积 (扫描线)

题意: 给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. ps:之前自己看的一个模板,覆盖一次的是挺简单的,但是求两次以上就要改,索性贴个别人的比较方便的代码。模板:#include<iostream> #include<string> #include<cstdio> #include<cstring> #include<queue> #include<map>

2017-07-19 15:36:53 265

原创 Codeforces Round #423 Div. 2 F. Best Edge Weight (倍增法lca)(最小生成树mst)

ps:还是第一次做cf的f题,感觉算法不难,但是要想到做法,并结合算法还是要一定水平。很吃力的啃这道题,最后还是看着代码才搞懂,但至少还是跨出那一步了吧,加油。题意: 给你n个点,m条边,接下来m行,每行三个数字,u,v,va。va是边值,u,v是连接边的两个点。 对于每条边单独考虑。问你在其他边边值不变的情况下,当前边的边值最大可以是多少,使得这条边必然在最小生成树内。 题解

2017-07-14 13:42:36 675

原创 线段树复习--[kuangbin带你飞] 线段树

温故知新,现在代码水平好了一些,重新刷kuangbin的专题也不那么费劲了。争取理解的透彻一些吧。区间更新模板:LL num[maxn],sum[maxn<<2],mark[maxn<<2];void push_up(int root) { sum[root] = sum[root<<1]+sum[root<<1|1];}void push_down(int root,int cl,in

2017-07-11 12:51:19 507

原创 Educational Codeforces Round 23 E. Choosing The Commander (字典树)

题目大意: 总共有q次询问,对于每次询问有三种不同的操作; p = 1,增加一个数字 p = 2,去掉一个数字 p = 3,对于当前存在的数字,有x,s,问有多少 num[i]^x < s?题解: 用字典树存所有的数字的二进制形式,sum存每种类型的个数,对于每次询问的复杂度都是log(n)。具体看代码。代码:#include <iostream>#include <cstdio>#i

2017-07-10 13:35:59 245

原创 HDU - 4635 Strongly connected(求树的直径)(边双连通分量-有重边)

HDU - 4635 Strongly connected 题目大意: 给你一个无向的连通图,存在重边,然后问你加一条之后,最少的桥的边数。 先求出桥,然后再对重边特判后重新缩点构图,最后获得一棵树,求出直径,把边数减去直径就是答案。代码#include <iostream> #include <cstdio> #include <cstdlib> #include <cstri

2017-07-07 19:58:28 295

转载 双联通分量---点双联通,边双联通 (模板)

转载自@vufw_795定义:对于一个连通图,如果任意两点至少存在两条点不重复路径,则称这个图为点双连通的(简称双连通);如果任意两点至少存在两条边不重复路径,则称该图为边双连通的。点双连通图的定义等价于任意两条边都同在一个简单环中,而边双连通图的定义等价于任意一条边至少在一个简单环中。对一个无向图,点双连通的极大子图称为点双连通分量(简称双连通分量),边双连通的极大子图称为边双连通分量。这篇博客就

2017-07-07 10:47:27 2495

原创 2017杭电ACM集训队单人排位赛 - 2 -1002 地狱飞龙 (辛普森公式求积分)(模板)

题干: 最近clover迷上了皇室战争,他抽到了一种地狱飞龙,很开心。假设地域飞龙会对距离为d的敌人每秒造成k/d2k/d^2伤害。假设地域飞龙位于坐标轴原点,以每秒v1的速度向y轴正方向移动,敌人在(x,0)的位置,以每秒v2的速度向x轴负方向移动。问,敌人至少有多少血量永远才不会被地狱飞龙喷死。(伤害是连续造成的,不是一秒一秒间断的)题解: 我们根据题意,设时间为t,x1为飞龙距离x轴的距离

2017-07-07 09:00:14 799 1

原创 2017杭电ACM集训队单人排位赛 - 2 -1006 Hmz 的女装

problem 1006 最近cf打多了,做什么都往找规律或者暴力贪心上想,其实这道题是一个很简单的dp。 题干: Hmz为了女装,想给自己做一个长度为n的花环。现在有k种花可以选取,且花环上相邻花的种类不能相同。 Hmz想知道,如果他要求第l朵花和第r朵花颜色相同,做花环的方案数是多少。这个答案可能会很大,你只要输出答案对109+7取模的结果即可。这样的话,我们只要把花环分成两段,对于每一

2017-07-06 14:07:37 350

原创 图论---求割点,求桥(tarjan) (模板)

无向图求桥和求割点用的是同一个做法。 具体的原理可以看大白书和 @泳裤王子,无向连通图的割点、桥 下面是代码:#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <stack> #include <bitset> #i

2017-07-04 15:32:32 940

原创 Codeforces Round #421 (Div. 2) D. Mister B and PR Shifts

这学期暑假集训的第一次博客。 ps:貌似某人好久没有写博客了吧 Codeforces Round #421 (Div. 2)/D 题意: 有n个数,从1到n乱序排列,定义这n个数的秩序值为∑(a[i]-i) (1<=i<=n), 你每次将这个数组向右循环移位p次, 问p等于多少时,这n个数的秩序值最小?暴力的方法很好想,n*n遍历一下,因为n = 1e6,这时候就要换成 nlog[n]或者

2017-07-04 11:18:59 270

原创 [kuangbin带你飞]专题九 连通图 A - Network of Schools (强连通分量)(模板)

强连通分量的模板题,设 a 为出度为1的点个数,设 b 为入度为1 的点个数,要求的是a和max(a,b)。 把处于一个强连通分量的点染色,再求出度和入度即可。 这里的模板是两个dfs,一个原图,一个逆图,两遍dfs即可求得结果,比较好理解。#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#inc

2017-07-03 16:16:30 302

原创 CodeForces - 375B (dp)(数据结构)

给你一个矩阵只包含1和0,在可以重新排列行的情况下,问你最大的全为1的矩阵的面积(n*m)

2017-02-04 14:43:40 496

原创 CodeForces - 295B D - Greg and Graph(floyd算法)

这道题主要是看对floyd算法的理解程度,还有就是正面不好推,就反过来推。

2017-02-04 13:54:21 363

原创 HDU - 3033 D - I love sneakers!

Orz dp一道不是很难的dp,分组背包。给你k个球鞋的牌子,每种又包含一些不同种类的球鞋,要求每种牌子的球鞋都要包含,给出每种球鞋的price和value,以及又多少钱,问你value最大可以是多少。

2017-01-18 18:45:59 193

原创 Codeforces Beta Round #95 (Div. 2) C The World is a Theatre(组合数)

这道题学会了求组合数的技巧~~

2017-01-16 13:50:09 395 2

原创 [kuangbin带你飞]专题十四 数论基础 F - Goldbach`s Conjecture (线性素数筛)

这道题题目很简单,要用到线性的素数筛;但是有几个坑点。

2017-01-14 23:40:45 274

原创 [kuangbin带你飞]专题十四 数论基础 (数论)(fmod)

这道题学会了两个函数的用法——

2017-01-14 23:00:01 614

原创 [kuangbin带你飞]专题十四 数论基础 C - Aladdin and the Flying Carpet (线性素数筛,分解质因数)

这道题需要分解n的质因数,然后用排列组合算个数,最后减去质因数中小于b的个数就可以了

2017-01-13 19:45:13 276

原创 [kuangbin带你飞]专题十 匹配问题 L - Cat VS Dog (二分图最大独立集)

独立集、极大独立集独立集即一个点集,集合中任两个结点不相邻,则称V为独立集。或者说是导出的子图是零图(没有边)的点集。极大独立集(maximal independent set):本身为独立集,再加入任何点都不是。最大独立集(maximum independent set):点最多的独立集。独立数(independent number):最大独立集的点。二分图最大独立集=定点数-二分图最大匹配

2016-12-22 11:41:19 409

原创 [kuangbin带你飞]专题十 匹配问题 K - Treasure Exploration(最小边覆盖)(二分图匹配)

最小路径覆盖 最小路径覆盖(path covering):是“路径” 覆盖“点”,即用尽量少的不相交简单路径覆盖有向无环图G的所有顶点,即每个顶点严格属于一条路径。路径的长度可能为0(单个点)。最小路径覆盖数=G的点数-最小路径覆盖中的边数。应该使得最小路径覆盖中的边数尽量多,但是又不能让两条边在同一个顶点相交。拆点:将每一个顶点i拆成两个顶点Xi和Yi。然后根据原图中边的信息,从X部往Y部引边。所有边的方向都是由X部到Y部。因此,所转化出的二分图的最大匹配数则是原图G中最小路径覆盖上的边数。因此由最小

2016-12-22 10:57:16 365

原创 [kuangbin带你飞]专题十 匹配问题 F - Rain on your Parade(二分图匹配)(HKmatch)

还是二分图匹配,但是需要用到HKmatch优化。HKmatch,多点同时开始找广增路,在稀疏图的时候提高了效率。

2016-12-22 09:17:50 284

原创 Codeforces Round #388 (Div. 2) D. Leaving Auction

这道题主要是运用stl和二分,主要是set的运用可以练一下std。先用vector存每个人的出价,再用一个数组和set存每个人的最高价,最后对于每一个q,把不在的人从set 里面erase掉,结束后再加进去。erase掉不在的人后,取出出价最高的两个人(set里面的最后两个人),找出价第二高的在最高的人的位置+1,就是出价最高的。

2016-12-22 09:11:16 371

转载 poj 2342 Anniversary party (树形dp入门)

题意:某公司要举办一次晚会,但是为了使得晚会的气氛更加活跃,每个参加晚会的人都不希望在晚会中见到他的直接上司,现在已知每个人的活跃指数和上司关系(当然不可能存在环),求邀请哪些人(多少人)来能使得晚会的总活跃指数最大。

2016-12-15 10:31:00 287

原创 [kuangbin带你飞]专题十 匹配问题 (二分图最大匹配)(二分图染色)(模板)

二分图的最佳完美匹配,用到的是KM算法(匈牙利算法),下面贴出模板

2016-12-01 23:24:14 647

原创 [kuangbin带你飞]专题九 连通图 I - Caocao's Bridges(无向图求桥(割边))(并查集)(坑题)

这道题巨坑无比!!!!!主要由三个坑点:1.如果桥(x,y)上的守卫为0人,输出为1 ,因为需要一个人去扛炸药! 2.包含重边 3.所给的图可能不是连通图!微笑所以输出为0时ans++,再对重边跳过,因为只有一个炸弹不可能炸两个桥,最后用并查集判断是不是连通图,不是就输出0跳过;

2016-11-28 22:13:07 386

原创 Codeforces Round #381 (Div. 2) D. Alyona and a tree

主要是运用树状数组快速区间求和,还有dfs求距离,记录点的顺序,该点的子树最远的叶子;

2016-11-25 17:22:42 343

原创 [kuangbin带你飞]专题九 连通图 B - Network 割点

无向图的割点,这具体可以百度,又是一个连通图的知识点,具体的用tarjan三大算法之一来求这。

2016-11-22 23:38:26 437

原创 [kuangbin带你飞]专题六 最小生成树 (prim)(kruskal)(模板)

今天刚学了最小生成树的算法,发现prim的算法和dijkstra算法几乎差不多,就是更新的时候是更新边权,不是起点到当前点的值,还有一个按边权排序再遍历加建树的kruskal算法。

2016-11-08 22:47:02 430

原创 [kuangbin带你飞]专题十五 数位DP K - Balanced Numbers (数位dp)(进制转换)

这道题大意是当一个数每一位奇数的个数为偶数,每一位偶数的个数为奇数的时候,称这个数为 balanced number,所以对于 1~9 的数字,要保存三个状态:个数为0,个数为偶数,个数为奇数。这里就可以用3进制来保存,3^10大概不超过60000,所以用dp[20][60000]来保存状态;

2016-11-07 22:38:09 367

原创 HDU 4507 吉哥系列故事――恨7不成妻 (数位dp)(模板)(输出平方和)

这道题本来是一道很简单的数位dp,但是要求输出的是符合条件的数字平方和,这样就难了不少,主要还是利用简单的数学知识

2016-11-07 17:11:36 333

原创 2016ACM/ICPC亚洲区大连站 1006 Detachment 1004 A Simple Math Problem(求逆元)(数论)

这次差不多有6道是我现在可以做的,还有一道博弈论加大数的以后再补吧,还是要多积累啊。现在先补充两个题目的吧

2016-11-06 22:19:52 132147

原创 2016年中国大学生程序设计竞赛(合肥) 题解小结 1001.传递 1003.朋友 1005.扫雷

开始听说这场比赛还比较难,但是做了以后感觉其实并不难,只不过是自己太菜了~基本上都是用不到什么算法的题目前面两道水题还卡了一会,还是室友找到了错误。总结了一下就是能不优化就不优化,没必要的优化就可能会错。无脑暴力就好了。

2016-11-06 10:31:30 538

空空如也

空空如也

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

TA关注的人

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