自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xiefubao的专栏

业精于勤荒于嬉,行成于思毁于随

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

原创 CF(Strictly Positive Matrix) 强连通分量

题意:给一个矩阵A,保证Aij大于等于0,并且所有的Aii大于零。问是否存在k使得A^k中的每个元素大于0;解法:比赛时没有想到,其实就是求整个图是否是一个强连通分量。题意保证自己可到达自己,即转化为了,经过若干次相乘运算,每个点都能到达所有其他所有点。用的是tajran模版。解法:#include #include #include #include using

2014-03-17 11:04:39 681

原创 poj35798(组合中位数二分查找)

题意:给n个数,求出C(n,2)个|Ci-Cj|数中的的中位数。解法:二分枚举结果。总复杂度NlogM,M为数的大小范围。代码:/***************************************************** author:xiefubao****************************************************

2014-03-16 22:04:22 795

原创 poj3279(局部枚举定全局)

题意:黑白的板,每次选择一个十字形翻转(十字板内黑白互换,若是边界则不管),求最小翻转次数将原图变为全白的策略(有多个最小次数的话,输出字典序最小的)。解法:枚举第一行(1代码:/***************************************************** author:xiefubao***************************

2014-03-16 11:32:07 672

原创 poj2785(折半枚举)

题意:给定各有n个整数的四个数列A,B,C,D。要从每个数列中各一个数,是的四个数的和为0.求出这样的组合的个数。解法:折半,枚举A,B数列的两两组合,然后排序,再枚举C,D的两两组个,在A,B的组合中二分查找匹配数的个数。复杂度n^2logn.代码:/***************************************************** author

2014-03-16 10:39:20 714

原创 poj3320(区间追逐)

题意:一本书中有P页,第i页恰好有一个知识点ai,全书中同一个知识点有可能会被多次提到,请求出覆盖所有的知识点,要阅读的最少页数(必须是连续的书页)。解法:根据题意分析符合追逐法的性质,由于知识点ai是整数范围的,需要用一个map作为映射(hash应该也可以,不过代码会长些吧)。依然是维护一个右指针,并及时更新当前区间内的知识点数,保证等于总知识点数。代码:/***********

2014-03-14 00:39:42 507

原创 poj3061(追逐法)

题意:给定长度为n的数列整数A0,A1,A2,A3....An-1,以及整数S,求出总和不小于S的连续子序列的长度的最小值。如果接不存在输出0。解法:给出的整数都是正整数,所有以A(i+1)为左端点的合法区间右端点一定位于Ai为左端点的合法区间右端点的右侧(也有可能重合),这样就可以维护一个右端点指针进行追逐。代码:/************************************

2014-03-13 23:51:39 813

原创 hdu2444(二分图判定+二分图匹配)

题意:n个人,给出m对人表示相互认识,先问能否将所有人分成两部分,每部分之内的人想不不认识。如果可以,则求出二分图最大匹配树;解法:二分图判定+二分图最大匹配数;代码:/***************************************************** author:xiefubao************************************

2014-03-12 21:54:30 570

原创 poj3207(二分图判定)

题意:一个圆上顺时针排放n个点,给出m条线段,每条线段要么在圆内,要么在圆外,问是否可以使这m条线段不相交。解法:网上都是2sat的题解,但是二分图判定也可以做。m^2将所有的矛盾对连线。然后二分图判定来做。代码:/***************************************************** author:xiefubao*************

2014-03-12 21:41:53 646

原创 CF401D(Roman and Numbers)状压DP

题意:给一个数n和m(n (1 ≤ n 18)   m (1 ≤ m ≤ 100).)问n的各位数字重新组合(非0开头)有多少种不同的数能被m整除。当时想到了正解,但是没仔细算long long ans[1 long long ans[1还是回忆下正解吧:ans[j][k]的j转化为二进制表示n的每个位置是否被用到,k是指模m等于k的数量。转移也是暴力转的,最坏复杂度是:(1给

2014-03-11 18:05:53 901

原创 poj1018 枚举加贪心

题意:一套通讯系统由一些设备组成,每种设备由不同的供应商供应,每个供应商供应的同种设备有各自的带宽(bandwidth)和价格(prices)。通讯系统的带宽(B)指的是组成该系统的所有设备的带宽的最小值,通讯系统的价格(P)指的是组成该系统的所有设备的价格之和。求最大的 (B / P)。解法:先将每种产品的供应情况排序,按带宽从小到大,然后记录一个后缀价格的最小值。枚举所有的带宽,当

2014-03-07 22:22:31 824

原创 poj1150 (数学)

题意:求组合数A(m,n)中最后一个非零位是多少;解法: 确实是一道有意思的好题。这里有份不错的题解,讲的很详细:http://blog.csdn.net/luojinping/article/details/7555293  确实不太好想。以下是我看懂后敲的代码:#include #include using namespace std;int n,m;int tool[4

2014-03-07 18:24:16 638

原创 poj3286 数位dp

题意:求a-b之间的数0出现的总个数;解法:compute(int k)是求0-k的0出现的个数;dp[i][j][allZ][equ]表示第i位取j,allZ表示前边是否全部填充为0,equ表示前边是否与原数的高位全部相等(即决定此位的限制上界);调了好久,完全是模仿dfs的模版乱套,还是不熟练,实在欠练!代码:/*****************************

2014-03-07 00:10:20 759

原创 hdu 3555(数位dp裸题)

题意:求1-n中有多少个数含有49;解法:应该是数位dp最简单的题目了吧。学了dfs版的写法,第一次自己敲了出来,几乎是在默写,感觉还不熟练。dp[pos][pre][flag] 表示在后pos位,第pos+1位的数字为pre,前面是否出现49的标记为flag(1为出现过, 0 为未出现过)的数字个数。dfs的细节要自己体会,还要多敲多练;代码:/*****************

2014-03-07 00:04:16 642

原创 CF (400C)

先贴代码,明天写题解;代码:/***************************************************** author:xiefubao*******************************************************/#pragma comment(linker, "/STACK:102400000,102400000")#

2014-03-06 01:39:08 607

原创 hdu4768 二分

解法:去年长春网赛的题目,当时博文巨异或暴力居然过了,正解是二分。因为奇数最多只有一个,如果是一个,那么前缀和是从偶数到奇数,就可以二分答案了。代码:/***************************************************** author:xiefubao***************************************************

2014-03-05 22:53:05 679

原创 poj3104 二分

题意:有n件衣服,每件衣服含水量为num[i],自然条件下每分钟每件衣服含水量减1,如果使用烘干机烘干一件衣服,则该件衣服每分钟含水量减k(每次只能烘干一件衣服),求最少需要多久才能将每件衣服晾干(含水量为=0)。解法:二分搜索;因为答案具有单调性,一定存在这样一个天数,大于等于此天数一定都可以,小于则都不可以。计算某一天数t满足时就贪心算每个衣服要在此天数内晾干至少需要烘干几天,然后

2014-03-05 18:25:46 628

原创 poj2418 字典树裸题

题意:求输入每种字符串出现数量的百分比;解法:建字典树对每个字符串进行插入统计,输出时dfs遍历字典树并用一个char ss[]数组记录遍历时的字符串。代码:/***************************************************** author:xiefubao*****************************************

2014-03-05 00:47:25 643

原创 poj3764 经典题 trie树+邻接表dfs

题意:有一个n个节点的树,每条边都有一个权值,一条路径的权值等于指此条路径上所有边权值的异或值。问此棵树权值最大的路径的权值是多少;解法:先算出每个点到0节点的路径的权值,(dfs一遍即可,由于n最大是5个0,所以要邻接表建图进行dfs)。以后每两个节点之间的路径权值就等于分别与0节点之间权值的异或值(用到一个公式:a^b=(a^c)^(b^c)).所以以后两两比较即可,但是n^2肯定不行,这

2014-03-05 00:42:17 714

原创 hdu3951(博弈)找规律

题意:有N个硬币围成一圈,两个人每次只能取连续的1~K个硬币。问先手有没有必胜策略。解法:当K==1:结果只与N的奇偶有关。           当K>=2:如果N                           当N>K时,先手一下子取不完,设剩余M个,如果MK,即此时M>=3且K>=2,那么后手就可以在剩下的一排里取中间留两边然后以后就对称取,就一定必胜;所有此时后手必胜;

2014-03-03 23:55:25 665

原创 poj2446 (二分图匹配模型)

题意:给一个m*n的矩形棋牌,一些格子有洞。用1*2的卡片来覆盖剩余的格子,有洞的格子不能被覆盖,每个格子只能被覆盖一次。问是否能用这种卡片将所有剩下的格子覆盖完。                                             解法:将格子分成两种,一种是(i+j)是奇数的,一种是偶数的。会发现匹配时总是奇数格子和偶数格子匹配。将两种格子标号并建图,由于是稀疏

2014-03-03 00:41:15 617

原创 hdu1730 nim博弈

题意:游戏在一个n行m列(1 ≤ n ≤ 1000且2 ≤ m ≤ 100)的棋盘上进行,每行有一个黑子(黑方)和一个白子(白方)。执黑的一方先行,每次玩家可以移动己方的任何一枚棋子到同一行的任何一个空格上,当然这过程中不许越过该行的敌方棋子。双方轮流移动,直到某一方无法行动为止,移动最后一步的玩家获胜。Tom总是先下(黑方)。

2014-03-02 23:43:55 1051

原创 hdu3595 博弈

题意:n个游戏同时进行,每个游戏有两堆石子,每次从较多堆里取走较少堆的整数倍的石子数。仍然计算先手有无必胜策略。解法:比较难想的一道博弈题,参考了爱神的博客题解,看了好久才懂,在此附上地址:http://blog.csdn.net/acm_cxlove/article/details/7840427自己的代码:/***************************************

2014-03-02 22:22:55 680

原创 cf(cards)数学题

题意:有n个‘o’,m个‘x’可以任意地排成一排,每连续的a个‘o’,ans就加上a*a,每连读的b个‘x’,ans就减掉b*b,问ans最大可以为多少,并输出此时的一种排列方式;解法:根据数的性质可以知道,为使ans最大,应尽量是‘o’聚集在一起,'x'分隔开来。结果就是n个‘o’中分离出k个(k段的‘o’,和一段的‘oo...o’(长度n-k)),此时把m个‘x’尽量平均分成了k+

2014-03-02 13:42:22 637

原创 FZUoj2035(几何)

题意:顺时针或逆时针给一个n凸多边各点的坐标,问此多边形是否是轴对称多边形。解法:当n为偶数时候,对称轴是一条边的垂直平分线或者是两个点的连线。都可以O(n)枚举,此时再判断其余点是否关于此轴对称;   当n为奇数时候,对称轴只能是一条边的垂直平分线。同样枚举。   总复杂度是O(n^2);代码:/******************************************

2014-03-01 18:50:55 688

原创 poj2239(二分图)

题意:不多写了,又是裸的二分图匹配;解法:写这道题时,第一次用邻接表建图写了匈牙利。而且还从neko那里学了一招,就是匈牙利的used函数在for循环里可以不用memset,用一个ncase代替就可以,降低了很多时间复杂度,瞬间觉得又学了的一招。代码:/***************************************************** author:xiefuba

2014-03-01 14:49:56 517

原创 poj(3962)最大团

题意:一个班级中,有G个男生,B个女生,男生之间都相互认识,女生之间都相互认识,男生与女生之间部分认识,求最多的有多少人都相互之间认识(即求最大团)。解法:      最大独立集:图中最大的两两互不相邻的顶点的集合。  二分图的最大团=补图的最大独立集(与最大团是等价的)  二分图最大独立集=顶点数—二分图最大匹配数代码:/*****************

2014-03-01 13:11:30 664

原创 poj2356(二分图匹配)

题意:有m个地洞和n只地鼠的坐标,老鹰来了以后,每个洞最多只能容纳一只地鼠,每只地鼠的移动速度是v,在s秒之内如果不能移动到一个地洞中,这只地鼠就可能被老鹰捕获,问最少会有多少只地鼠有可能被老鹰捕获。解法:二分图匹配的简单运用,匈牙利算法。代码:/***************************************************** author:xiefub

2014-03-01 01:23:25 475

原创 poj(1185)状压DP

题意:经典的好题。司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示: 如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示

2014-02-27 21:22:32 601

原创 cf(396A)(质因子分解+挡板法+快速幂)

题意:n个数的数列a,,求有多少个不同的数列是的乘积是m的。解法:将每个数分解质因子,本质就是重新分配每种质数所在的位置。挡板法取组合数。然后快速幂并取逆元。代码:/***************************************************** author:xiefubao******************************************

2014-02-27 19:47:52 816

原创 poj3468(树状数组)

题意:一道经典题,区间更新,区间查询。解法:原来用的是线段树。后来学了树状数组的做法,感觉很神奇,贴上解法网址:http://www.docin.com/p-97026988.html?qq-pf-to=pcqq.c2c代码:/***************************************************** author:xiefubao***********

2014-02-27 19:34:44 1044

原创 poj3250(单调栈)

题意:一排牛,每头牛只可以看到自己右边连续的比自己矮的牛,求所有的牛看到的牛的数量和。解法:裸的单调栈;代码:/***************************************************** author:xiefubao*******************************************************/#pragma comm

2014-02-25 23:35:03 704

原创 Deleting Sequence(LIS)

题意:给一个数列,删除其中任意多个数后数列中的一些数的值等于其下标(从1开始计算),那么得到的数列最多能有多少个这样的数。题目链接:http://acm.ustc.edu.cn/ustcoj/status.php?from=10&contest=46解法:另原数列为a[],b[i]=i+2-a[i].将b[i]>0的排序,然后求a[]的最长递增序列即可(nlogn的复杂度)。 代码:#

2014-02-25 22:38:15 580

原创 nyist504

题意:给一个200行10列的整数矩阵(每个数0~1000),要求从每行选一个数,让最大数和最小数的差最小.解法:由于每个数大小0~1000,二分答案,二分时枚举区间(判断n行是不是每行都有数在枚举的区间里)。还跟neko学了类似于追逐法的解法,应该是正解:先将每行都排序,开始取每行最小的数,算出一个ans,然后删除n个数中最小的,替换为那一行下一个,不断进行直到替换的是第m列为止。以下代码

2014-02-23 23:35:13 528

原创 poj3301(三分-坐标旋转)

题意:给出最多30个点的坐标,求覆盖所有点的最小正方形面积。解法:没有证明正确性,网上对于此法的正确性有争议。反正是用三分过的,也许数据弱了。就是在0-90度的旋转范围内三分角度(所有点旋转的角度)。正方形的边总是平行于坐标轴的,那么每次正方形的边长总是最大x坐标之差和最大y坐标之差中更大那个。      点旋转A后的坐标公式                         

2014-01-27 00:51:51 908

原创 FZU 2103(Bin & Jing in wonderland)组合数学

题意:n种礼物,每种都有无限多个。每次随机选一种,第i种每次被选中的概率Pi。共选K次,然后从中选出序号最大的r个。问这种情况的概率有多大。解法:枚举r中最小序号A的个数,把比r小的看做一个整体。求A每一种情况下的整体概率,然后相加。代码:/***************************************************** author:xiefu

2014-01-26 22:20:33 1022

原创 poj1651 (区间dp)

题意:n个数中,每次选一个数和左右相邻数相乘,并且从中删除。最右边和最左边的数不能选,选数的顺序随意,最后n-2个乘积之和最小是多少.解法:区间dp,记忆化搜索,水题。以此题开始,以后代码风格会变一些,开始尝试使用一些简化代码的预定义了,希望能够提高一点编码速度。代码:/***************************************************** a

2014-01-25 14:14:39 668

原创 CF385C-(Bear and Prime Numbers)线性筛素数

题意:给出n个数n (1 ≤ n ≤ 106): x1, x2, ..., xn (2 ≤ xi ≤ 107).            然后m (1 ≤ m ≤ 50000)次查询, [Li, Ri] ;输出每次Li与Ri之间所有素数的P值之和。每个素数的p值的定义是这样的:P(x)表示在给出的n个数里面有多少个数是x的整数倍数。解法:在线性筛素数的时候,把每个素数的P值可以直

2014-01-25 12:15:27 906

原创 NYoj737 石子合并(区间dp)

题意: 有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆。求出总的代价最小值。解法:动态规划的思想。先求出所有区间长度为2的合并代价,然后再算出长度为3的、4的。。。。n的。复杂度是N^3,貌似楼教的一道同样问题有更快的算法,会尽快去膜拜,。,。,。

2014-01-24 14:00:08 712

原创 FOJ 2141(随机子图)

题意:给一个n个点,m条无向边,将图的点分成两部分,两部分之间的边数大于等于输出m/2。解法:随机,居然可以过,不懂是不是正解;将图中的点不断地随机分成两部分直到满足要求,然后输出。代码:#include #include #include #include #include using namespace std;int n,m;bool graph[110

2014-01-24 00:14:52 630

原创 FOJ 2148(求凸四边形数量)

题意:给n个点,求图中凸四边形的数量。解法:n代码:#include #include using namespace std;struct point{ int x,y;} points[40];int abs(int k){if(k<0) return -k;return k;}int mult(point a,point b,point c){

2014-01-23 23:30:05 839

空空如也

空空如也

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

TA关注的人

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