- 博客(17)
- 问答 (1)
- 收藏
- 关注
原创 hdu 4760
题目大意: 3种操作 E i n,对应n个区间,每个区间加一个标记i; D i ,抹去前面的标记i; F s t.如果点s和点t的标记有交集则输出"F",否则输出"D': 想法: 我悔过,比赛时,感觉题目太复杂,没管它,赛后来看了看,没想到暴力能水过. 先把数
2013-09-29 22:00:19 888
原创 hdu 3664
题目大意:有一个包含1~n的序列S,f(S)表示S中s[i]>i的个数,现知道f(S),求S 的个数想法:用dp[i][j]表示大小为i,f值为j的序列个数,已知dp[i-1][j-1]和dp[i-1][j]; 对于dp[i-1][j-1],显然第j个数,有(i-1)-(j-1)种方法来达到dp[i][j],也就是用j来代替dp[i-1][j-1]中,s[i]
2013-09-27 18:59:40 912
原创 2013 2013 ACM/ICPC Asia Regional Changsha Online - H Hypersphere
在k维空间里有个半径为r的打球,现在把它分解成一个一个半径为1的球,当分解出k个球,球就要消失,问最后有多少个小球。大球半径为l+sqrt((l-1)*l);很显然就是一共能产生多少个小球来对k取余.至于k维空间球体的体积,维基百科上有,有一个很复杂的公式,所幸,这里得分子分母都有那个复杂的系数,也就是没有了,最后求得就是floor((l+sqrt(l*(l-1)))^k)%k
2013-09-27 11:50:38 828
原创 hdu 4617
题目大意:3维空间中有n个圆柱,高为无限长,知道底面圆心,和半径,问是否会有两个圆柱,出现相交,如果没有,输出最少差多少相交。想法:求出圆心的方向向量,这样就可以看成求出两个经过圆心的方向向量所在直线的距离,也就是异面直线的距离(参照:http://blog.csdn.net/zhuhuangjian/article/details/11739851),如果全部>ri+rj,则输出min(
2013-09-27 11:10:10 829
原创 hdu 4571
题目大意:n个点(时间消耗,满意值),m条边(起点,终点,消耗的时间),时限T,旅途的起点,终点. 每个点你可以选择参观和不参观(包括起点终点),如果你选择参观某个点,那满意值一定要大于上一次参观的,最后整个旅途的最大满意值想法:先用floyd求出每两个点的最短距离,然后就是dp了.以前就Wa了,今天看着学长的代码,发现了自己的错误,他只要求
2013-09-19 16:42:05 842
原创 hdu 4001
题目大意: n个立方体,一共有三种类型,每一种的方法有自己的规则,问组合后的最大高度想法: 膜拜Wiking大神,轻松的说出了建图方法,然后就是加一个超级源点,以它为起点,对图进行SPFA求最长路,如果方块的类型是0,那么几个相同的会出现环,所以先把这些缩成一个点#include#include#include#include#include#incl
2013-09-19 10:35:17 1053
原创 hdu 4007
题目大意:在一个X-Y平面内有n个点,用一个r*r的正方形去覆盖,问最多覆盖多少个点想法:先把坐标离散化,那最坏情况下就是一个n*n的区域,然后求最大子矩阵(矩阵的边长不能超过r)#include#include#include#includeusing namespace std;#define N 1005int a[N],b[N],n,r,k1,k2;
2013-09-19 10:31:19 1112
原创 hdu 4004
题目题目大意:青蛙要跳过长为L的河,中间有n个石头供他休息,但它只能跳m次,问这m次里所跳距离最大值的最小可能想法:先把石头排序,算出相邻石头的距离b,然后就等价于,把b序列分成m段,对于每一段和的最大值最小化. 二分答案,显然答案在max(b[i])和l之间,我们只需要判断当答案是mid时,把序列分成了多少段逐渐二分#include#inclu
2013-09-19 10:27:00 952
原创 九度oj 1536 树的最小高度
题意:给你一颗树,你可以选择任意结点为根,求树的高度的最小值想法:求树上的最长距离,答案就是(最长距离/2)向上取整#include#include#include#includeusing namespace std;#pragma comment(linker, "/STACK:1024000000,1024000000")inline int input(){
2013-09-17 21:24:30 1084
原创 Poj 1269
求两直线的交点用的高数书上的方法直线:(x-x1)/m=(y-y1)/n;(m,n)为方向.直线上的点px=m*k+x1,py=n*k+y1;然后代入另一条直线求出k,进而求出交点#include#include#includeusing namespace std;struct Point{ double x,y; Point(do
2013-09-17 16:55:19 925 1
原创 HDU 4741
题目求异面直线的间的最短距离,并且求出最短距离的线段在两直线上的点。比赛时,在网上找了个资料,需要解个二元一次的方程,估计自己写龊了,奇葩数据,总会出现误差。后来重新找了个,在这先求出两个点,直线1上的点应该是直线1和(直线2与1.2公垂线确定的平面的交点)公垂线,以及平面,以及平面与直线的交点的做法参照那篇博客,或者回去看高数书,应该都行#include
2013-09-16 16:49:17 1382
原创 codeforces CROC-MBTU 2012, Elimination Round (ACM-ICPC) G题 && HDU4039
题目codeforces题目hdu题目大意: 比如 a~b~c 那么a和c就有个共同朋友 b,求每个a的c的个数,要求b最多codeforces上可能最多的b是0,这时就要输出k-2(k是人数);hdu上最多的b是0,输出"-";直接暴力,找每个人a的朋友的朋友c,并且这个c不是a的朋友Codeforces:#include#
2013-09-14 11:14:24 1082
原创 hdu 4707
题目题意:找出距离0点距离>d的点数题意:我用的bfs求出点的距离#include#include#include#include#includeusing namespace std;#define N 100010int t,n,d;int a,b;vectore[N];int dis[N];bool vis[N];int main(){
2013-09-09 14:49:16 1595 3
原创 HDU 4708
题目题意:有一个n*n的矩阵(n%2==1),把它想象成一圈一圈的,然后每次每一圈可以逆时针和顺时针旋转一个单位,然后求主对角线和斜对角线元素之和,是和最大,并且在最大值里,旋转次数最小想法:可以预处理出每一圈的元素,要所有和最大,很明显每一圈的四个顶点和要最大,然后就YY吧#include#include#include#include#include
2013-09-08 21:51:21 1011
原创 hdu 4715
题目已知n,求两个素数(a,b),要求a-b=n,且(a+b)尽量小,如果不存在这样的(a,b),就输出"FAIL"想法:二分找出比n大的最小的素数,然后直接暴力#include#include#includeusing namespace std;#define M 5000001typedef long long ll;bool vis[M];int num;i
2013-09-08 21:45:33 1100
原创 HDU 4417 Super Mario
题目题意:求某一区间想法:求出某一区间>h的最小的数是区间的第k大数,那么答案就是k-1; 划分树+二分#include#include#includeusing namespace std;inline int input(){ int ret=0; bool IsN=0; char c; c=getchar
2013-09-07 19:40:37 1040
原创 Codeforces Round #199 (Div. 2) (ABC)
A:#include#include#define N 100010int a[N],y[N],x[N],z[N];int n;int vis[8];int main(){ while(~scanf("%d",&n)) { int num=0; memset(vis,0,sizeof(vis)); for(int
2013-09-07 19:25:59 874
空空如也
求教,hadoop-2.2.0升级hadoop-2.6.0。
2015-09-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人