自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

(๑•̀ㅂ•́)و✧

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

原创 VC++ 6.0 C语言实现俄罗斯方块教程

今天把我之前写的大作业分享一下吧,并教你们如何实现,希望你们看了前面的教程也能自己写一个。1.要先下载一个 graphics.h 的头文件来绘图。2.初始化窗口:initgraph(x, y);这是先创建一个窗口的函数,以左上角为(0,0),向右为x轴,向下为y轴,其中x表示长x个单位,y表示宽y个单位。3.关闭图像窗口:closegraph();结束时用来关闭用的。4.按任意键继

2015-08-19 20:29:27 19668 21

原创 HDU 1864 最大报销额

分析:因为这里“背包容量”和“物体的体积”都是有小数的,所有同一乘以100就是整数了,先把所有的符合条件的发票选出来,然后就是01背包问题了。# include # include int Max(int a,int b) { return a>b?a:b; } int dp[3000005]; int main() { int i,j,n,

2015-08-21 17:35:12 375

原创 HDU 5253 连接的管道

分析:题意就不说了,因为这题的高度差比较小,所以可以用并查集暴力求解,做的时候发现带参数的宏定义的效率很低,比如我用# define abs(x) (x>0?x:-(x)) 这样就超时了,写个函数就不会超时,用暴力的话,一不小心就超时了。这题还可以用Kruskal的最小生成树来做,但速度居然没有暴力的快,也许是我写的姿势不对。并查集暴力:# include # include in

2015-08-21 14:40:27 447

原创 HDU 5285 wyh2000 and pupil

分析:这题和POJ 2492差不多,所以我用的是并查集,可以把题意理解为有很多人,要分成两个帮派,每个帮派至少有1个人,输入n,m分别代表n个人,和m对有冲突的人,有冲突的不能在一个帮派里,要尽可能的使第一个帮派的人多一些,如果存在输出第1,2个帮派的人数,否则输出Poor wyh 。如果输入n=0或n=1的话肯定不满足题意,用root[]数组记录每个人的老大是谁,opp[]记录每个人的对手是

2015-08-20 10:21:14 507

原创 HDU 5400 Arithmetic Sequence

分析:给你n个数和d1,d2,问有多少个区间满足“可以将该区间分为两个子区间,前一个区间是公差为d1的等差数列,后一个区间是公差为d2的等差区间,其中可以有一个子区间为空。如果给定的前len个数从第1个数到第len个数的这个区间满足题意,且第len+1个数也满足,就能新加len+1个满足题意的区间。比如:d1=2,d2=-2,前5个数是1 3 5 7 5,如果第6个数为3,那么他前5个数满足题意,

2015-08-19 14:22:00 472

原创 HDU 2084 数塔

分析:大水题,看代码。# include # include # define Max(x,y) (x>y?x:y) int main() { int i,j,n,t,max,a[105][105],dp[105][105]; scanf("%d",&t); while(t--) { scanf("%d",&n);

2015-08-18 10:31:35 630

原创 HDU 5280 Senior's Array

分析:给你n个数字,和一个p,让你改变n个数中的一个数为p,使得最长连续子序列之和最大。因为n不大,# include __int64 MAX(int n,int a[1005]) { __int64 i,sum=0,ans=-1e9; for(i=0;i<n;i++) { sum+=a[i]; if(sum>a

2015-08-18 10:27:39 626

原创 求两线段交点

如果给你4个点A,B,C,D的坐标,让你求线段AB与线段CD的交点(必相交),首先求出过点A,B的直线ax+by+c=0,因为y-A.y=(B.y-A.y)/(B.x-A.x)*(x-A.x),所以得到a=B.y-A.y; b=A.x-B.x; c=A.y*B.x-A.x*B.y; 向量AD X AB =(D.x-A.x)*(B.y-A.y)-(B.x-A.X)*(D.y-A.y) =(B.y

2015-08-16 23:58:37 1072

原创 ECNU 1624 求交集多边形面积

分析:题意就是要求两个多边形相交的部分的面积如果会求多边形的核,这题就不难了,可以看我写的一篇POJ 1279 求多边形的核,因为本题已经说了给定的是顺时针方向,所以把POJ 1279的逆时针改下,再稍微改几个地方几可以了。# include # include # define EPS 1e-8 struct point { double x,y; }; vo

2015-08-16 23:06:22 735

原创 POJ 1279 Art Gallery

分析:题目就是让你求多边形的核的面积,多边形的核就相当于在某一点能看到所有顶点(不穿过边),这些点的集合就是多边形的核。# include # include # define EPS 1e-8 struct point { double x,y; }; void Swap(point &a,point &b)//交换两点 { point t;

2015-08-16 22:58:12 516

原创 HDU 5339 Untitled

分析:给你数a和b1...bn,求在b1.....bn中选最少的数使a%c1%c2...=0。因为b数组最多就20个,可以暴力枚举所有情况,如果给出的数bi>a,就可以把这个数删掉了,枚举的时候要把大的数排在前面,不然先mod一个小的数再mod一个大的数,大的数就没用了。# include # include using namespace std; int n,ans,b[20]

2015-08-15 21:55:23 404

原创 POJ 2187 Beauty Contest

分析:给你一些点,让你求距离最大的两个点之前距离的平方。首先求出凸包,然后可以枚举凸包上所有顶点的距离找到最大值,也可以用旋转卡壳来求凸包直径。后者原理网上很多,解释的也挺好,我就放下我的代码就好了。# include # include using namespace std; struct point { int x,y; }v[50005]; int

2015-08-14 22:47:22 356

原创 ZOJ 1081 Points Within

分析:按顺序给你n边形的n个坐标,和一些点的坐标,让你判断这些点是不是在多边形内。用改进弧长法来求解比较好,原理可参看网上的,下面附我写的代码。# include typedef struct point { int x,y; }Point; Point v[105]; int main() { int i,n,m,cur,nex,ans,f,

2015-08-13 20:42:41 436

原创 POJ 1385 Lifting the Stone

分析:给你一n边形,和n个顶点的坐标,让你求多边形的重心。思路就是将第一个点和其余点相连,这样就组成了n-2个三角形,然后求这n-2个三角形的重心,再按照质点组的重心求就可以了,公式是:其中A表示质点的坐标,m表示质点的重量,转化为多边形就是,这n-2个三角形的重心坐标,和n-2个三角形的面积,因为可能是凹多边形,这样凹进去的面积就是负的,质量也是负的,所以计算时不影响。# include

2015-08-13 20:35:20 708

原创 POJ 1228 Grandpa's Estate

分析:给你一些点,这些点都在凸包的边或顶点上,问你凸包是不是稳定的,稳定凸包就是每条边上都至少有3个点,否则再多加一个点能形成更大的凸包,如果一条边上有>=3个点,这样在多加一个点,虽然也可能会形成更大的凸包,但一定不满足所有点都在边上,所以每条边都应该至少有3个点才稳定。用Graham扫描法求凸包时,会将除最左下角的点外其余的点排序,排序的规则是按照其余点和最左下角的连线和x轴所形成的角度排序的

2015-08-13 20:10:18 562

原创 POJ 1106 Transmitters

分析:给你半圆的圆心,半径和一些点的坐标,问你这个半圆绕圆心旋转最多能覆盖多少点。能覆盖的点,点到圆心的距离肯定是小于等于半径的,将这些点找出来,然后分别以圆心和这些点的连线为半圆的一条边,判断有多少点是在这条边的同一侧。# include # include struct point { int x,y; }; point v[150],p; double

2015-08-13 19:44:40 457

原创 HDU 5387 Clock

分析:给你一个时间,让你输出3个时分,时秒,分秒的夹角。如果时间是hh(0# include # define abs(x) x>0?x:-(x); int gcd(int a,int b) { return b?gcd(b,a%b):a; } int main() { int i,k,t,hh,mm,ss,h,m,s,ans[4],g[4];

2015-08-13 19:36:12 456

原创 POJ 1113 Wall

分析:给你n个点的坐标和半径l,求形成的凸包的周长和一个圆的周长和,结果4舍5入。求凸包就用Graham扫描法就好了,以下附两个代码,意思都差不多,要注意的是,double类型的变量存在误差,所以判断是否相等时应该是:a-b# include # include # include # define PI acos(-1.0)# define EPS 1e-8 using name

2015-08-12 21:22:45 332

原创 POJ 1584 A Round Peg in a Ground Hole

分析:给你n边形的坐标、圆心坐标和半径,问你这n边形是不是凸多边形,如果不是输出:HOLE IS ILL-FORMED,否则,如果圆在凸包内就输出:PEG WILL FIT,否则输出:PEG WILL NOT FIT。因为这n边形的坐标是按顺时针或逆时针给出的,所以判断时只有看每相邻两边的叉积符号是否相同,不同的话就不是凸包。在判断圆心是否在凸包内,这个也好判断,也是看叉积符号是否一致,再判断有没

2015-08-12 21:15:28 633

原创 HDU 2036 改革春风吹满地

分析:逆时针给你一个n边形的n个坐标,让你求面积。从第一个顶点开始和其余各个顶点相连作向量这样得到n-2个三角形,三角形abc的面积是:向量ab X 向量ac  (叉积),然后把这n-2个三角形的面积累加就行了,即使存在凹多边形也没关系,应该叉积是有方向的,凹的话,结果是负的,就是减去了那凹进去的面积。# include int main() { int n,i,x[10

2015-08-12 20:58:54 423

原创 HDU 5375 Gray code

# include # include int main() { int i,n,t,k,ans,cas=1,a[200005],min; char s[200005],c; scanf("%d",&t); while(t--) { scanf("%s",s+1); n=strlen(s

2015-08-12 20:30:25 497

原创 HDU 5373 The shortest problem

分析:题目问最后得到的数能不能被11整除,11的倍数的特点是奇数位和偶数位的差能被11整除,知道这就好求了。# include # include char s[10]; int main() { int i,n,t,len,cas=1,sum,tem,k,s1,s2,x1,x2; while(scanf("%d%d",&n,&t)) {

2015-08-12 20:15:35 322

原创 HDU 5363 Key Set

分析:给你一个元素为1~n的集合,让你求有多少个非空子集,子集内的元素之和为偶数。容易推出:ans=2^(n-1)-1,因为n过大,所有用快速幂来求。# include __int64 FastExp(__int64 a,__int64 b) { __int64 ans=1; while(b) { if(b&1)

2015-08-06 19:05:15 351

原创 HDU 5349 MZL's simple problem

分析:给你n个操作,1 x :代表在数组中加入元素x,2 :代表删除最小元素,3 :代表输入最大值。删除时,就算我们的数不是最小的也可以,它也不知道,只要不是最大的就行,当数组内的数为0时,就重新初始化最大值,每加入一个数就和最大值判断。# include int main() { int i,n,num,t,x,max; while(scanf("%d",&

2015-08-04 19:41:46 390

原创 HDU 5347 MZL's chemistry

分析:输入两个数字,让你比较这两个数字所代表的原子序数的第一电离能的大小,保证输入的两个数字的原子序数为同一主族或同一周期。第一电离能的规律为,同主族自上而下依次递减,同周期自左而右大致递增,特例为第3主族的比第2主族的小,第6主族的比第5主族的小,因为当核外原子轨道达到全满或半满的状态时,原子的能量较低,第一电离能较大,知道了这些就好办了,看代码:# include int main()

2015-08-04 19:31:53 861

原创 HDU 5344 MZL's xor

分析:给你n个元素的数组a,让你求所有(ai+aj)(1# include __int64 a[500005]; int main() { int i,n,m,z,l,ans,t; scanf("%d",&t); while(t--) { scanf("%d%d%d%d",&n,&m,&z,&l);

2015-08-04 19:20:22 400

空空如也

空空如也

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

TA关注的人

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