自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

(๑•̀ㅂ•́)و✧

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

原创 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 19442 21

原创 中国剩余定理 思路

2018-04-26 13:20:24 395

原创 CSS 浮动

一、定义和用法float 属性定义元素在哪个方向浮动,浮动元素会生成一个块级框,而不论它本身是何种元素,并且它们会尽可能地窄。二、清除浮动1. 在浮动元素后增加一个块级元素,并设置 CSS 的 clear 属性为 both,比如:。2. 给浮动元素的容器添加 overflow: hidden; 或 overflow: auto; 。另外在 IE6 中还需要触发 hasLay

2017-10-29 10:50:19 589

原创 HTTP 状态码

HTTP 状态码负责表示客户端 HTTP 请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。状态码以3位数字和原因短语组成,数字中的第一位指定了响应类别,后两位无分类。状态码的类别 类别原因短语1XXInformational(信息性状态码)接受的请求正在处理2XXSuccess(成功状态码)请求正常处理完毕

2017-10-26 14:03:51 734

原创 HTML & JS 字符相关

HTML使用字符的方法有:(以三次方字符为例)1. 字符: ³2. 转移字符: ³3. 十进制: ³JS:(以三次方字符为例)1. 返回字符编码: '³'.charCodeAt(0)

2017-09-30 20:48:44 335

原创 JS 倒计时插件 demo

function CountDown(config) { let key = config.elem.slice(1); this.elem = config.elem[0] === '#' ? document.getElementById(key) : document.getElementsByClassName(key)[0]; this.endTime = new Date(con

2017-09-25 20:39:27 429

原创 HTML 瀑布流

瀑布流 div { margin: 0 auto; position: relative; outline: 1px solid red; } span { border: 1px solid #000; width: 230px; display: inline-block; box-sizing: border-box; marg

2017-06-17 17:21:38 827

原创 HTML 5 Web 存储

在客户端存储数据HTML5 提供了两种在客户端存储数据的新方法:localStorage - 没有时间限制的数据存储sessionStorage - 针对一个 session 的数据存储之前,这些都是由 cookie 完成的。但是 cookie 不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 cookie 速度很慢而且效率也不高。在 HTML5 中,数据不

2017-05-28 10:37:20 615

原创 HTML <form> 标签的 enctype 属性

定义和用法enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。  默认地,表单数据会编码为 "application/x-www-form-urlencoded"。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 "+" 加号,特殊符号转换为 ASCII HEX 值)。语法属性值值     描述

2017-05-27 08:22:03 392

原创 Sublime Text3 插件

一、插件安装打开Sublime Text3,按Ctrl + ` 调出控制台,粘贴以下代码到底部命令行并回车:import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urll

2017-05-02 19:24:26 569

原创 Sublime Text3 快捷键

Ctrl + N  新建文件Ctrl + O  打开文件Ctrl + W  关闭文件Ctrl + S  保存Ctrl + Shift + S 保存到...Ctrl + Shift + N 新建窗口Ctrl + Shift + W 关闭窗口Ctrl + C  复制Ctrl + V  粘贴Ctrl + X  剪切Ctrl + Z  撤销Ctrl + Y  恢

2017-05-01 23:33:24 383

原创 高精度除以单精度 和 高精度对单精度取模

int mod(string a,int b)//高精度 a%b{ int ans=0; for(char &c : a) ans=(10*ans+c-'0')%b; return ans;}string div(string a,int b)//高精度 a/b{ int i,r=0; string ans(""); if(a

2017-04-16 23:31:17 1759

原创 HDU 4349 Xiao Ming's Hope

题意:给你一个数 n ,求C(n, 0) 到 C(n, n)中有多少个奇数分析:判断C(n, i)是不是奇数,相当于求 C(n, i) %2,根据Lucas定理,求C(n ,i) % 2 先将 n 和 i 转化为2进制,分别为(a[k], a[k-1],...,a[1], a[0])2 和 (b[k], b[k-1],...,b[1], b[0])2,所以C(n, i)%2 = C(a[k],

2017-03-19 18:38:05 482

原创 CF 785D Anton and School - 2

题意:给你一串字符串(只包含字符'('和')'),求有多少个子串满足:长度是偶数,且左半边只有'(' 右半边只有')',比如"((()))"是一个满足条件的字符串分析:先记录每个字符左边有多少个'(',右边有多少个')',包含当前字符本身;然后从左往右遍历字符串,如果当前字符是'(',左边(包含本身)有a个'(',右边有b个')',那么满足条件的子字符串就增加了由最后一个等号左边到等号

2017-03-19 15:13:08 2313

原创 排列组合 C(n,m)

一、求解C(n,m)公式一: 公式二:公式二可以这么理解,从n个物品中取m个有2种情况:(1)不取第n个物品,于是从前n-1个中取m个; (2)取第n个物品,于是从前n-1个中取m-1; 所以答案是这两种情况的和 二、求解C(n,m)%p,p为质数当n,m,p都很大的时候,用公式二肯定不行了,费时间又费内存,这时候要用公式一,问题是取模时怎样可以把除法转化为乘法

2017-03-19 11:36:32 42814 1

原创 Miller-Rabin素数检测算法

今天看了一下Miller-Rabin素数检测的算法,总结了一下,希望这篇博客对你们有帮助。先说几个理论基础:1. 费马小定理:假如p是质数,a是整数,且a、p互质,那么a的(p-1)次方除以p的余数恒等于1,即:a^(p-1)≡1(mod p).但是反过来却不一定成立,就是说,如果a、p互质,且a^(p-1)≡1(mod p),不能推出p是质数,比如Carmichael数。2.

2016-07-09 16:22:23 7368 2

原创 POJ 3984 迷宫问题

分析:简单的BFS# include struct node { int x,y,pre; }q[30]; int map[10][10]; void Print(int i) { if(q[i].pre!=-1) Print(q[i].pre); printf("(%d, %d)\n",q[i].x,q[i].y); }

2016-03-31 20:46:19 379

原创 HDU 5652 India and China Origins

题意:给你n*m的矩阵,0代表平原,1代表高山,接下来q年,每年在(x,y)的位置长出一座高山,问你第几年中国和印度不连通。分析:第一种做法是BFS判断能不能从中国走到印度,如果一年一年找的话就会超时,所以查找第几年的时候,可以用二分查找,这样会快很多。第二种做法是并查集,第0列的所有山都并起来,第m-1列的所有山都并起来,对于每座高山,把它周围8个方向的高山并起来,最后判断第0列和第m-

2016-03-31 20:29:25 438

原创 POJ 1579 Function Run Fun

分析:题意很简单,调用函数,根据a,b,c的值在递归调用函数。我们只要把w(a,b,c)从(1,1,1)计算到w(20,20,20)就行了,询问时直接就可以输出了。# include int dp[25][25][25]; int Dp(int a,int b,int c) { if(a<=0||b<=0||c<=0) return 1;

2015-10-24 00:46:15 472

原创 HDU 1078 FatMouse and Cheese

分析:题意就是,输入n,k然后输入n阶矩阵,从起点(0,0)开始走,可以往上/下/左/右,4个方向直走,一次最多可以走k步,要求走到的下一个点必须比当前的点大,输出走到的所有点的值之和最大为多少。这题用DFS暴力肯定超时,可以用记忆化搜索,用dp[i][j]表示以点(i,j)为起点,走到的所有点的值之和的最大值,要求dp[i][j],只要知道(i,j)一次能走到的所有点的dp[i'][j']中的最

2015-10-24 00:38:11 419

原创 HDU 1016 Prime Ring Problem

分析:给你n个球序号分别为1,2....n,让你排成一个环,使得任意相邻2个球的序号和为素数,输出所有满足条件的序列,1是开头,按字典序输出。这题可以看做是n个顶点,任意两个顶点之间有一条无向边,遍历所有顶点,使得遍历的结果围成一个圈,任意2个相邻的点的和为素数,然后用DFS遍历图。# include # include int n,top,s[35],visit[25],stack[

2015-10-24 00:24:11 399

原创 HDU 2446 Shell Pyramid

分析:题意就是给你一个正4面体的金字塔,从顶往底数,第1层有c[1]=1个球,第2层有c[2]=3个球.....第i层有c[i]=c[i-1]+i个球,第i层有i行,第j行有j个球,现按层从顶往底,按行从上往下,按列从左往右,依次对每个球进行编号1,2,3,4....... 问你序号为n的球在第几层,第几行,第几列。用数组c[i]来表示第i层有c[i]个球,s[i]表示第i层最大的球的序号,那么s

2015-10-24 00:04:54 424

原创 POJ 3009 Curling 2.0

分析:题意就是玩冰壶,2是起点,3是终点,1是障碍物,冰壶在静止状态下,可以往上/下/左/右抛出,且抛出的那个方向的下一个点不能是障碍物或抛出界,抛出后沿直线运动,直到碰到障碍物(障碍物会消失,冰壶会停在障碍物前一个点),或出界(出界就gameover了),如果不能到达终点或抛出冰壶的次数>10次,输出-1,否则输出最少需要抛几次才能到达终点。我们用DFS遍历所有情况,如果抛出的次数>10 了

2015-10-23 23:46:30 438

原创 HDU 5505 GT and numbers

分析:给你2个数n,m,n每次都能乘以他的一个因子成为新的n,问你n至少乘多少次能够变成m,如果不能的话就输出-1。如果n能变成m话,m肯定是n的整数倍,初始的n乘以多个因子变成m,那么那些因子的乘积就是m/n,也就是n*(m/n)=m,所以每次都找到d=Gcd(n,m/n),然后n'=n*d,(m/n)'=(m/n)/d,直到n=m。如果d=1的话,n也不能变成m.这题的坑点就是1# inc

2015-10-18 10:43:37 833

原创 5504 GT and sequence

分析:题意就是给你n个数,让你至少选一个数,使得你选的这些数的乘积最大。如果只有1个数,就直接输出了,如果有正数或负数的个数大于2,答案肯定大于0,否则答案为0.# include # include using namespace std; int main() { int i,n,T,t,f; __int64 x,ans,a[100];

2015-10-18 10:27:44 632

原创 HDU 5476 Explore Track of Point

题意:给你3个点A,B,C的坐标,其中AB=AC,M为BC的中心,三角形内有一点P,让你求P的轨迹的长度,使得min{∠MPB+∠APC,∠MPC+∠APB}最大。当P在以BC为底的△ABC的高上时,必有∠MPB+∠APC=∠MPC+∠APB=180°,所以P的轨迹长度之一为△ABC的高h.现在就是求P的其它的轨迹长度,使∠MPB+∠APC=∠MPC+∠APB=180°。作⊙O,使得B

2015-10-15 17:34:59 603

原创 HDU 5256 序列变换

分析:因为要改变最少的数,使得数组a,成为严格递增,也就是使得a[i+1]>=a[i]+1,即a[i+1]-(i+1)>=a[i]-i。所以令a[i]=a[i]-1,原题就变成了改变最少的数,使得新数组a[i]-=i,不递减,即a[i+1]>=a[i],那么我们只需找出最多已满足条件的元素(即最长不递减子序列),再用总的个数减一下就能得出答案。如何求最长不递减子序列呢?我们用数组b[i]来表示:不

2015-09-25 21:00:15 541

原创 HDU 5248 序列变换

分析:题意可以理解为,给你含有n个正整数的数组a,让你找一个严格单调递增的数组b,使得cost(a,b)=max(|a[i]-b[i]|) (1d.找数组b的时候,b[i]肯定要>=a[i]-d,且b[i]>=b[i-1]+1,所以我们取这两个中较大的,如果b[i]>a[i]+d的话,那么cost就>d了,不满足条件,返回false。# include int n,a[100005],

2015-09-24 20:09:48 846

原创 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 351

原创 HDU 5253 连接的管道

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

2015-08-21 14:40:27 427

原创 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 483

原创 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 456

原创 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 606

原创 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 605

原创 求两线段交点

如果给你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 979

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

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

2015-08-16 23:06:22 709

原创 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 490

原创 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 386

原创 POJ 2187 Beauty Contest

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

2015-08-14 22:47:22 339

原创 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 416

空空如也

空空如也

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

TA关注的人

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