自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

@you!

天道酬勤

  • 博客(50)
  • 资源 (2)
  • 收藏
  • 关注

原创 Ultra-QuickSort (poj 2299 归并排序 || 树状数组 求逆序对)

题意:求n个数的逆序对。

2015-03-31 23:02:52 664

原创 Inversion (hdu 4911 树状数组 || 归并排序 求逆序对)

题意:求n个数的逆序对数,可以交换k次相邻的,所以求出原序列的逆序对后减去k即可。思路:求逆序对有两种方法,归并排序和树状数组。逆序对的几种求法

2015-03-31 20:52:18 711

原创 Evil Straw Warts Live (Uva10716 回文串+贪心)

题意:判断一个串能否通过临近的两个字符多次交换变成回文串,不能输出“Impossible”,能的话输出最少的交换次数。思路:预处理每个字母出现的次数,若有>=2个字母出现的次数是奇数则不可能。然后从两边向中间贪心,每次先固定前端,然后从后端向中间逐步找,直到找到第一个与前端相同字母时break,将找到的字母向后移,加上移动的次数(不知道为什么可以这么做,网上说这样做 和 每次找最优 最后结果是一样的,暂时还没有证明出来)。若碰到个数为奇数的字母时,将它往后顺移,最后它就会在中央位置了。

2015-03-31 12:38:08 775

原创 B. Mr. Kitayuta's Colorful Graph (CF #286 (Div. 2) 并查集)

题意:现有n个点m条边的无向图,每条边都有一种颜色,然后有q次询问,x y询问点x到点y共有几种颜色的边将他们连起来(不同颜色的边不能混在一起,要分开看)思路:二维并查集,每种颜色维护一个并查集,查询时看某一种颜色下两个点是否有共同的father。

2015-03-29 16:16:31 752

原创 E. Anya and Cubes (CF #297 (Div. 2) 折半搜索)

题意:给你n个数,k个魔法棒,s为所求的数,然后让你找有多少种方法,能够使的这n个数之和为s,其中一个魔法棒可以使的一个数变成他的阶乘。思路:采用折半搜索,自己太渣。。请看这位大神详解~

2015-03-29 11:36:13 987

原创 DZY Loves Topological Sorting (BC #35 hdu 5195 topsort+优先队列)

题意:n个点m条有向边组成的有向无环图,可以最多删除k条边让他的拓扑序最大。输出最大的拓扑序。思路:在以前的topsort中是入读为零的点入队列,这里有k次机会可以删除边,那么我就把所有入度<=k的点全入队列,用优先队列维护最大的点序列号,去掉点最大序列号的所有入边,将它加入到拓扑序中,这样贪心是最优的。

2015-03-29 09:50:31 1586

原创 D. Drazil and Tiles (CF 515D bfs搜索)

题意:n*m的图,‘.’表示空格,现在要用1*2的砖去把它填满,可以横向(‘<’,'>')填和竖向('^','v')填。找出基本元素块,(i,j)和它相邻的四个点看成一个基本元素块,如果(i,j)周围的‘.’只有一个那么这个(i,j)处的填法就是固定的,填完(i,j)后看它周围是否有其他点因为填完(i,j)后填法变的唯一,有就入队, 就这样一步一步找到固定填法的(i,j),更新周围的点。

2015-03-28 16:31:24 678

原创 D. Arthur and Walls (CF 525 D 搜索bfs)

题意:给出一个n*m的地图,由‘*’和‘.’号组成,现在要将一些'.'改成'*'号使得所有局部的'.'号都能组成一个矩形,要保证修改的次数最少,最后输出改变后的矩形。思路:最开始的思路是搜联通块,将联通块里面的'*'全部改成‘.’,但是题目范围较大,结果超时了。然后看到别人的是找一个基本元素块,n*m的矩形由这些元素块组成。发现:如果在一个2*2的方格内只有一个是‘*’那么就必须要将这个‘*’改成‘.’,这样bfs搜一遍即可。

2015-03-28 10:24:35 1236

原创 Fibonacci (poj 3070 矩阵快速幂)

题意:求非波拉契数列第n项mod10000思路:数据太大,用到矩阵快速幂。

2015-03-27 22:45:27 740

原创 K-th Number (poj 2104 线段树+二分)

题意:给定一个数组a1,a2,a3.....an和m个三元组表示的查询。对于每个查询(i,j,k),输出ai,ai+1,.....,aj的升序排列中第k个数。思路:和以前做的线段树有点不同,这次每个点保存了一个数组。建立线段树的过程和归并排序类似,而每个节点的数列就是其两个儿子节点的数列合并后的结果。

2015-03-26 22:53:00 707

原创 Stars (poj 2352 树状数组)

题意:有n个星星的坐标,如果某个星星坐标为(x, y), 它的左下位置为:(x0,y0),x0<=x 且y0<=y。如果左下位置有a个星星,就表示这个星星属于level x按照y递增,如果y相同则x递增的顺序给出n个星星,求出所有level水平的数量。思路:最典型的树状数组,第一次做。。

2015-03-26 20:56:40 759

原创 X-factor Chains (poj 3421 数学排列组合)

题意:给出一个数X,现在定义1 = X0, X1, X2, …, Xm = X,其中Xi能被Xi-1整除,问满足该定义的最大m和满足最大的个数有多少。思路:质因子们的排列组合——∏(质因子个数的阶乘)/(每个质因子的个数的阶乘)。

2015-03-25 21:30:29 930

原创 Seven Puzzle (AOJ 0121 bfs)

题意:给出0~7的序列(2*4),只能0和周围数字交换,问最少交换多少次可以是给出的序列变成0 1 2 3 4 5 6 7思路:先搜一遍把所有答案保存下来。大哭因为一句话位置写错了当时没做出来。。

2015-03-22 22:51:26 1153

原创 Out of Hay (poj 2395 最小生成树)

题意:求最小生成树的最大边。复习了prim算法和kruskal算法。

2015-03-22 15:19:36 731

原创 Wormholes (poj 3259 SPFA || Bellman_Ford 判负环)

题意:John的农场里field块地,path条路连接两块地,hole个虫洞,虫洞是一条单向路,不但会把你传送到目的地,而且时间会倒退Ts。我们的任务是知道会不会在从某块地出发后又回来,看到了离开之前的自己。很久之前做的最短路,今天又写了一遍,复习了一下SPFA和Bellma_Ford,判断负权值回路。

2015-03-22 10:53:23 2026

原创 Six Degrees of Cowvin Bacon (poj 2139 最短路Floyd)

题意:英语太差,读题就读了半小时快哭了 n头牛,m行关系,每一行先输入头数num,紧接着num头牛,这num头牛两两之间距离为1,最后问哪一头牛到其他所有牛距离的平均值最小,ans=到其他所有牛的最短距离之和*100/(n-1)。

2015-03-22 09:31:42 1318

原创 Building Blocks (hdu 5191)

题意:有n堆由1*1小木块堆起来的积木,现在要你移动若干次使其中连续的长度为w的高度都为h,一次只能移动一个,而且可以在两边增加新堆(只能在两边,不能在中间插入),问最少得移动多少次。思路:因为可以在两边增加堆,所以我先在数组两边各加上w长度,Move数组存 每个地方变成h要移进来或者移出去的步数,a数组记录i位子是要移进来还是移出去。然后维护一个长度为w的连续区间(i-w+1 ~ i),计算出这个区间总共得移进来的数目z和移出去的数目和f,那么要使这个区间满足条件就要移动m=z+f-min(z,f),(

2015-03-21 22:24:20 948

原创 Marked Ancestor (AOJ 2170 并查集)

题意:给出包含n个节点的树,初始时节点1的父节点为1并被标记,再给出其他n-1个节点的父节点,Q次询问,M x表示把节点x标记;Q x表示找出离x最近的被标记的父节点的编号,最后输出所有标号之和。思路:基础的并查集了,只不过这里要注意的是:寻找父节点时不要压缩路径。还要使用long long 。

2015-03-21 17:29:32 781

原创 Wireless Network (poj 2236 并查集)

题意:有n台电脑损坏了,现在要将它们修复通讯,给出了这n台电脑的坐标位置,两台电脑i和j能够通讯的条件是:i和j都已经被修好的并且i,j之间的距离dis[i][j]<=d。有两种操作:1. O x 表示修好电脑x;2. S x y 表示检查电脑x和y是否联通,若联通输出SUCCESS,否则FALL。思路:先把n台电脑之间的距离求出来,然后进行并查集操作,当修复电脑x时,检查其他电脑是否有已经修好的并且距离小于d的,有的话就将x和这台连起来。询问时之间看两个的father是否一样。

2015-03-21 16:21:20 671

原创 Moo University - Financial Aid (poj 2010 优先队列 或者 二分)

题意:从C有奶牛中选N头,给出它们的分数scores和资助aid,要是这N头牛的总资助不超过F,同时它们中分数的中位数最大。求这个最大的中位数。思路:按照分数排序,枚举每头牛作为中位数,计算牛i前面N/2头牛的最小资助和后面N/2牛的最小资助(用到优先队列)。最后从后往前找第一个满足l[i]+r[i]+cow[i].second<=F的即为答案。

2015-03-21 15:42:53 1031

原创 Sunscreen (poj 3614 贪心+优先队列)

题意:有c头牛晒太阳,每头牛都有一个能承受辐射的范围(min~max),现在有 l 种防晒霜,每种防晒霜都能将辐射值固定在spf,每种防晒霜都有一定的数量num。每头牛用最多一种防晒霜,问能满足多少斗牛。思路:贪心,首先防晒霜按照spf从小到大排序,牛也按照能承受的最小值从小到大排序。然后对于每种防晒霜 将牛的最小值 小于等于 该种防晒霜spf值的牛入队列(只如它承受范围的最大值),然后较小者先出队列。

2015-03-19 23:01:43 1928

原创 Ant Counting (poj 3046 分组背包)

题意:给出T个数字,编号1~T,每个数字有N[i]个。用这些数字组成一个序列,最后问长度在S~B之间的不同序列有多少种。思路:分组背包。每个蚂蚁家族为一个分组,在每个分组里的选择有N[i]种(选1~N[i])。背包九讲

2015-03-19 20:22:02 670

原创 FatMouse and Cheese (hdu 1078 记忆化搜索)

题意:给出n*n的数字矩阵,从(0,0)出发,走的下一步格子上的数要大于当前格子上的数,并且每次可以沿直线前进最多k个位置,也就是每次有4*k个选择,问最后所有数之和的最大值。思路:记忆化搜索。

2015-03-19 11:49:56 548

原创 Largest Rectangle in a Histogram (poj 2559 && hdu 1506 矩形系列 迭代法)

题意:给出n个矩形的高,问它们能组成的最大矩形的面积是多少。思路:定义两个数组 l[i] 和 r[i] ,分别记录从 i 点能向左向右扩展的最大位置。若a[i]<=a[ l[i] - 1 ],则 l[i] = l[ l[i] - 1](如果i可以扩展到l[i]-1处,那么在计算i之前l[i]-1处的l[l[i]-1]已经计算出来了,就可以直接令l[i]=l[l[i]-1]了);同理,若 a[i]<=a[ r[i] - 1 ],则 r[i] = r[ r[i] - 1]。这样做充分利用了之前已经计算出来的数

2015-03-19 11:37:48 604

原创 C. Glass Carving (CF Round #296 (Div. 2) STL--set的运用 && 并查集方法)

题意:一个w*h的玻璃,现在水平或竖直切n次(“H”表示水平切,“V”表示竖直切),每一次切后输出当前切成的块中的最大面积。思路:用set记录切割的位置(要用两个set,分别来记录长和宽),multiset记录某一条边被切后 所得到的 小段的长度(也要两个,分别记录长和宽的)。那么每次切后就从multiset中取出最大的长和宽,相乘即得面积。

2015-03-18 17:03:34 828

原创 B. Error Correct System (CF Round #296 (Div. 2))

题意:给两个长度为n的字符串s1和s2,交换s1或s2中的两个字符使它们尽量相等。先用一个cnt[i][j]数组记录不相等时的位置。

2015-03-18 14:10:37 913

原创 Raising Modulo Numbers (poj 1995 快速幂水题)

题意:裸快速幂,求h对(a,n)的快速幂之和模m。int足矣

2015-03-17 23:17:09 613

原创 I NEED A OFFER! (hdu 1203 01背包)

题意:手里有n万元,这里有m所学校,想用n万元报学校拿到offer,m个学校都有一个申请费用和能得到offer的概率,问至少得到一个offer的最大概率是多少。思路:首先解释一下样例:共10万元,3所学校(这里编号1,2,3),得到offer概率最大的的情况是:报学校2和3,只拿到学校1的offer,只拿到学校3的offer,两个学校的offer都拿到,和=0.2*(1-0.3)+(1-0.2)*0.3+0.2*0.3=0.44.但是如果这样求的话很麻烦,我们可以转化成求一个offer都拿不到的最小概率,

2015-03-17 16:21:35 669

原创 Max Sum (hdu 1003 简单DP水过)

题意:给出n个数的序列,求出最大的子串和,并输出起点和终点。思路:dp[i]表示以i为结尾的最大子串和。

2015-03-17 10:19:44 853

原创 免费馅饼 (hdu 1176 简单DP)

题意:有0~10共11个坐标位置,现在有n个馅饼掉在这11个位置,告诉每个馅饼落下的时刻t和坐标x,且位于x出的人只能接住x-1,x,x+1这三个位置的馅饼,问最多能接住多少馅饼。思路:dp[i][j]表示 i 时刻在 x 处能接住的最多馅饼数。dp初始化为0,先计算出i时刻j位置有多少馅饼,这样感觉就转化成数塔问题了,可以倒着时间DP,最后答案就是dp[0][5];也可以正着,最后答案是dp[T][0~10]中的最大值(T是最大时间),正着时要注意控制起点要从5开始。

2015-03-17 09:10:47 1392

原创 Negative and Positive (NP) (hdu 5183 set+输入外挂)

题意:问有没有数对(i,j)(0<=i<=j<n),使得a[i]-a[i+1]+...+(-1)^(j-i)a[j]为K.思路:先计算出前缀和sum,然后枚举起点,从后往前枚举起点i,若i为奇数,则看set里面有没有sum[i-1]+k;若i为偶数,则看set里面有没有sum[i-1]-k。要用到输入外挂,不知道为什么,我的代码用G++交有时能过,有时却TLE,难道还要看OJ的心情吗=。=

2015-03-16 17:52:39 554

原创 zhx's contest (hdu 5187 快速幂+快速乘法)

题意:数字1~n,按某种顺序排列,且满足下列某一个条件:(1)a1~ai递增,ai~an递减(2)a1~ai递减,ai~an递增。问有多少种不同的排列。思路:首先是全部递减或全部递增各一种;另外就是满足上列两个条件的情况了,要想满足条件(1)那就只能把最大的n放在i位置,共有C(1,n-1)+C(2,n-1)+。。。+C(n-2,n-1)即2^(n-1)-2;条件(2)与(1)相同,所以共有(2^(n-1)-2)*2+2=2^n-2.

2015-03-14 23:15:39 691

原创 Coins (poj 1742 && hdu 2844 DP)

题意:给n张不同面值的钱,每种面值的钱都有一定数量,问用这些钱能够凑出多少种不同的面值,并且面值要在1~m内。输出种数。思路:dp[i]表示i面值的钱是否能够凑出来(0或1)。

2015-03-14 10:47:19 965

原创 Cheapest Palindrome (poj 3280 区间DP)

题意:长度为M的字符串,可以增加或删除字符,使其构成回文,增加或删除不同的字符有不同的花费,求最小花费。这位大神讲的很详细,看后收获很大~

2015-03-10 20:01:07 572

原创 Search for a Hiding-Place (URAL 1762)

题意:n*m的空白方格,从四个角落中的某一个进入,斜着45度角移动,所经过的方块涂成黑色,碰到墙壁转90度接着移动直到走到某一个角落出去,途中若遇到前面已经涂黑的方格要再次把它涂白。问最后出去后一共有多少方格是黑色的。思路:首先n和m自减,再求出n和m自减后的最小公倍数a(当走出去的时候走的总步数=a+1),接下来就是求有多少方格重复走了。

2015-03-10 15:54:37 699

原创 Milking Time (poj 3616 简单DP)

题意:给个时间长度n,m个工作时间段和每个时间段能完成的工作量,一次只能做一个工作并且一旦开始做就要把它做完,要求选择的两个工作时间段之间至少相差r时间(中间需要休息嘛)求选择那些工作n时间内能完成的最大工作量。输出最大值。思路:先按工作的结束时间从小到大排序,再动态规划。dp[i]表示从头开始取到第i段所获得的最大值。二重循环,如果第i段之前的某个段的结束时间加上r小于等于第i段的开始时间,则更新dp[i]。

2015-03-10 12:22:09 2570

原创 Stock (zoj 2921 贪心经典)

题意:有n张股票,给出每天股票的买进数量,当天的股票价格和当天最大抛出量,第i天得到的股票当天可以不抛,可以留到以后抛。问这n天最多能卖多少钱?思路:贪心,从后往前贪心,最后一天的股票当然只能在最后一天卖出,第i天的可以在第i天及以后卖出,那么就可以维护一个优先队列来存放第i天及以后的天数中抛出量不为零的日期(价格高的优先),那抛出第i天时先从优先队列中取出价格最高的。

2015-03-10 10:17:41 888

原创 D. Block Tower (CF 327D 搜索)

题意:在‘-’处建房子,蓝色的可容纳100人,红色的可容纳200人(建红色房子时旁边必须要有蓝色房子),要求输出人口最大的方案,任一一解即可。思路:现在空地上全部建蓝色的,找出独立块(被‘#’隔断互不联通),一个独立块只需要建一个蓝色房子那么其他的都可以摧毁再建红色房子。

2015-03-09 20:40:29 671

原创 E. Mishap in Club (CF 245E)

题意:‘+’表示有一个人进咖啡厅,‘-’表示有一个人离开咖啡厅。同一个人可以可以多次进出咖啡厅,问咖啡厅最少流动了多少不同的人。

2015-03-09 20:15:27 934

原创 River Hopscotch (poj 3258 二分搜索)

题意:一条河长度为 L,河两岸的距离就是L。河中有n块石头,每块石头到S都有唯一的距离。问现在要移除河中间m块石头,每次移除的是与当前最短距离相关联的石头,要求移除m块石头后,使得那时的最短距离尽可能大,输出那个最短距离。

2015-03-09 17:26:15 544

数据结构课程设计通讯录管理系统

实验要求: 1、设计合适的数据结构存储朋友、分组信息,将以上文件内容导入其中(如果你觉得以上文件中的信息不合适,可以自行处理,删除某列、增加属性、规范化数据均可,如果你认为有必要,甚至去掉“编号”都可以)。 2、进行插入、删除、修改和查询操作。 考查点: 插入时注意编号的处理,可以不填吗?是否重复?是否可以自动编号?其他数据是否可以不填或乱填?如何控制? 删除时一要防止误操作,二要考虑分组信息的删除,如何处理? 修改时同样要考虑各数据项的性质。 查询操作包括按姓名查找、按拼音查找、按电话查找等。 3、为了便于查询,可以考虑采用索引表、散列,参考教材第一章绪论中的第一个例子:书目检索问题,也可以考虑将课堂所学的第9章查找、第10章排序加入到系统中。 4、综合查询 综合查询要求可以实现多条件查询,例如查询所有在北京的高中同学、在武汉的男性朋友等, 类似于筛选,越灵活越好,发挥你们的想象,自行设计。 5、最后把系统中的数据(包括主文件和索引表等)保存回相应的文件中。

2015-09-11

数值计算实验代码

包含了数值计算课程内的部分算法的源代码,包括Crout分解,Doolittle分解,Lagrange插值法,Newton插值法,Romberg算法,二分,复化梯形积分法,顺序高斯消元,列选主元高斯消元,全选主元高斯消元,数据拟合的最小二乘法,正定矩阵分解。

2015-09-11

空空如也

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

TA关注的人

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