- 博客(22)
- 资源 (3)
- 收藏
- 关注
原创 POJ - 2926 Requirements
题意:多维的曼哈顿最远距离思路:做了1,2,3维的,其实就是枚举所有绝对值的可能的表达式#include #include #include #include using namespace std;const int MAXN = 100005;const int M = 5;const double inf = 1e200;struct node{ double x
2014-04-30 22:02:54 750
原创 HDU - 4135 Co-prime
题意:求[a,b]与n互质的个数思路:容斥原理的运用,提取n的素因子,先算出不与n互素的个数,容斥原理奇加偶减#include #include #include #include #define ll long long using namespace std;const int MAXN = 70;ll prime[MAXN];ll a,b,n;ll make(l
2014-04-29 16:59:17 732
原创 HDU - 4497 GCD and LCM
题意:给出三个数的gcd,lcm,求这三个数的所有的可能思路 :设x,y,z的gcd为d,那么设x=d*a,y=d*b,z=d*c,a,b,c肯定是互质的,那么lcm=d*a*b*c,所以我们可以得到a*b*c=lcm/gcd=ans,将ans分解因数后,那么每次都要分配每个因数的个数,假设某个因数的个数为n,一定要有两个分配到n,0,所以是6种#include #include #i
2014-04-25 19:49:10 1082
转载 数据结构的选择与算法效率
数据结构的选择与算法效率——从IOI98试题PICTURE谈起 福建师大附中 陈宏 【关键字】数据结构的选择 线性结构 树形结构 【摘要】算法 + 数据结构=程序。设计算法与选择合适的数据结构是程序设计中相辅相成的两方面,缺一不可。数据结构的选择一直是程序设计中的重点、难点,正确地应用数据结构,往往能带来意想不到的效果。反之,如果忽视了数据
2014-04-17 22:27:56 3159
原创 HDU - 1542 Atlantis (线段树)
题意:给出每个矩形的左下角,右上角,求所有矩形的并面积,就是不重复计算重复的部分思路:线段树的一个应用,还是太年轻,看了别人的方法点击打开链接#include #include #include #include using namespace std;const int MAXN = 110;struct Line{ double x,y_down,y_up; int
2014-04-16 21:39:58 707
原创 HDU - 2642 Stars
题意:就是求每个矩形内的亮的星星的个数思路:二维的树状数组,相当于优化了的矩阵求和的题目#include #include #include #include using namespace std;const int MAXN = 1005;int arr[MAXN][MAXN];int vis[MAXN][MAXN];int lowbit(int x){ retu
2014-04-14 22:44:49 752
原创 HDU - 1541 Stars
题意:每颗星的左下角的星星的个数就是它的等级,求所有等级的星星个数思路:因为已经按y坐标排序了,所以只要线段树x坐标就行了#include #include #include #include using namespace std;const int MAXN = 32005;int tree[MAXN],level[MAXN];int n;int lowbit(in
2014-04-14 18:08:03 779
原创 HDU - 3465 Life is a Line
题意:求在[L,R]范围内直线交点的对数思路:首先如果两条直线相交的话,那么(xl1-xl2)*(yl1-yl2)#include #include #include #include #define ll long longusing namespace std;const int MAXN = 50010;struct node{ double x,y; int i
2014-04-14 16:02:23 998
原创 HDU - 3450 Counting Sequences
题意:求个数大于等于2的序列,要求每相邻的两个的大于d,求满足的个数思路:同样是树状数组的应用,跟前面两题类似,求每次加入的a[i],先求范围在[a[i]-d,a[i]+d]的个数,再加到a[i]上,加一加的是本身,还有要注意的是,要减去1个的情况,跟前面两题不一样,#include #include #include #include using namespace std;c
2014-04-13 23:39:12 886
原创 HDU - 2227 Find the nondecreasing subsequences
题意:求不递减的子序列的个数思路:跟昨天那题HDU-3030不同的是,昨天的是严格的递增的子序列数,稍微修改一下就行了#include #include #include #include #define ll long longusing namespace std;const int MOD = 1000000007;const int MAXN = 100010;ll
2014-04-13 15:34:31 772
原创 HDU - 3030 Increasing Speed Limits
题意:求有长为m的序列生成的长度为n的序列的上升子序列的个数思路:生成完长为n的序列后,首先我们想到(nlogn)的求上升序列的方法,然后再这个基础上改进,每插入一个的时候,我们可以得到左边的小于它的个数,然后我们就可以得新增加的上升子序列是sum(id-1)+1,然后更新树状数组#include #include #include #include #define ll long
2014-04-12 15:55:52 1251
原创 HDU - 1829 A Bug's Life (并查集应用)
题意:判断有没有同性恋的一道题,其实也可以看成是:在一颗二叉树上是否有环思路:在并查集的基础上,有区别的一步是:当是新的两个树合并的时候,除了将一个根设为另一颗树的根的父亲外,还要加上不同性别的一层关系,我们开新的数组,vis[i]=j表示i和j是异性,还要的是将i的根的异性伙伴与j的根合并#include #include #include #include using name
2014-04-09 23:00:43 893
原创 HDU - 1422 重温世界杯
Description世界杯结束了,意大利人连本带利的收回了法国人6年前欠他们的债,捧起了大力神杯,成就了4星意大利.世界杯虽然结束了,但是这界世界杯给我们还是留下许多值得回忆的东西.比如我们听到了黄名嘴的3分钟激情解说,我们懂得了原来可以向同一个人出示3张黄牌,我们还看到了齐达内的头不仅能顶球还能顶人…………介于有这么多的精彩,xhd决定重温德国世界杯,当然只是去各个承办
2014-04-07 21:13:02 946
原创 HDU - 3015 Disharmony Trees
题意:给你n棵树的坐标x,高度h,让你分别按坐标,高度排序后,得到一新的序列,也可以理解为一颗组合成的新树,这棵树的坐标,高度都是排序来的,看了别人的解释,还是理解了老半天,然后就是求花费了,每任意两颗树的花费为min(h[i],h[j])*abs(x[i]-x[j]),求所有组合的花费思路:经过排序的处理后,就是仿着POJ-1990 的思想来做 了,也可以简化成:按高度排序后,然后按每棵
2014-04-07 12:49:29 968
原创 POJ - 1990 MooFest
题意:一排牛,每头牛(坐标pos,听力v),如果牛i和牛j交流的话,需要max{v[i],v[j]}*abs(pos[i]-pos[j]),求两两交流的总和。思路:还是求逆序数对的思想,按坐标排序后,求当前小于它听力的牛们的总花费,然后倒序后再求一遍就是结果了,#include #include #include #include using namespace std;const
2014-04-05 15:42:16 1268
原创 HDU - 2838 Cow Sorting (树状数组)
题意:求排列成升序的花费,每次只能交换相邻的两个数,且话费为两个数字的和,求最小的话费思路:先设想一下,每个数字会被交换的可能,一个是当前面有大于它的数字,一个是当后面有小于它的数字两种情况,这样我们就可以联想到树状数组了,每次看看该数面有多少小于它的,就可以求出多少大于它的了,然后倒着求小于它的情况,起初一直挖,改着改着就A了,还有太大的数组一定要定义成全局变量#include #in
2014-04-05 10:25:24 777
原创 HDU - 1142 A Walk Through the Forest
题意:英语着急的题目,看了别人的解释,给个图,让你求最短路,然后找出满足下列条件的个数:假设 A 和 B 是相连的,当前在 A 处,如果 A 到终点的距离大于 B 到终点的距离,则可以从 A 通往 B 处,问满足这种的条件的路径条数。思路:再用最短路处理完后,就是求满足条件的个数,这里用到了记忆化搜索减少搜索用dp[i]来表示i开始的满足条件的个数#include #includ
2014-04-03 22:03:43 698
原创 HDU - 2870 Largest Submatrix
题意:求最大的子矩阵,要求矩阵的字母都是一样的思路:首先枚举所有的可能,也就是a,b,c,,然后就是类似于HDU1505,1506两道题目了#include #include #include #include using namespace std;const int MAXN = 1010;char map[MAXN][MAXN];int n,m;int num[MA
2014-04-03 12:03:29 799 1
原创 HDU - 1505 City Game
题意:简单的说就是求最大的面积,F表示可取,R表示不可取思路:跟1506的思路是一样的,就是变成了二维的了#include #include #include #include using namespace std;const int MAXN = 1005;int l[MAXN],r[MAXN];int a[MAXN];int n,m,ans;int main()
2014-04-02 22:26:27 714
原创 HDU - 1506 Largest Rectangle in a Histogram
题意:求最大的矩形面积思路:单纯的搜索每个点能拓展的最大的矩形会超时,所以预处理,每个点的,到最左/右的最远的下标,那么矩形的面积就能求出来了,然后找最大值#include #include #include #include using namespace std;const int MAXN = 100010;long long a[MAXN],l[MAXN],r
2014-04-02 18:58:38 657
原创 HDU - 2688 Rotate
题意:很容易理解,求每次序列的顺序数思路:要用到线段数,不然会超时,第一次处理的时候,用线段树每次来查询树的相对的位置的前几个的个数,之后交换的时候,判断用第一个交换数的大小就可以计算个数了 ,注意输出,用cout过的#include #include #include #include using namespace std;const int MAXN = 3000005;
2014-04-01 22:20:54 915
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人