- 博客(65)
- 收藏
- 关注
转载 0007算法笔记——【分治法】最接近点对问题
问题场景:在应用中,常用诸如点、圆等简单的几何对象代表现实世界中的实体。在涉及这些几何对象的问题中,常需要了解其邻域中其他几何对象的信息。例如,在空中交通控制问题中,若将飞机作为空间中移动的一个点来看待,则具有最大碰撞危险的2架飞机,就是这个空间中最接近的一对点。这类问题是计算几何学中研究的基本问题之一。 问题描述:给定平面上n个点,找其中的一对点,使得在n个点的所有点对中,该点
2016-12-09 20:41:04 830 1
原创 Hdu Let the Balloon Rise
Problem DescriptionContest time again! How excited it is to see balloons floating around. But to tell you a secret, the judges' favorite time is guessing the most popular problem. When the contest i
2016-12-09 17:57:03 395
原创 Max Sum
Problem DescriptionGiven a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 + (-1) + 5 +
2016-12-09 11:54:35 470
原创 A + B Problem II
Problem DescriptionI have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B. InputThe first line of the input contains an integer T(1<=T<
2016-12-09 11:20:20 263
原创 二部图 匈牙利算法
匈牙利算法:http://www.renfei.org/blog/bipartite-matching.html http://www.codeceo.com/article/bgraph-match-algorithm.htmlhttp://dsqiu.iteye.com/blog/1689505一道练习题: http://blog.sina.com.cn/s/blog_ac
2016-12-07 22:25:00 415
原创 DG之实验室里的闲人
题目描述DG生平最怕的就是物理实验,没想到跑到东大来还是摆脱不了做实验的命运,所以说DG每次去实验室都是打酱油,然后等验收的高峰期,趁着老师不注意偷偷观摩下左右的同学的数据•••这次实验要用到天平,旁边放着重1g、2g、3g、5g、10g、20g的6种砝码,每种砝码的数目分别为a1,a2…a6(其总重输入第一行包含一个整数T,表示测试样例的数目
2016-12-07 20:16:26 300
原创 班长摊上大事了
题目描述每次电工实验前,班长都要从老师那里领取实验元件,然后分发给大家。这次实验,班长领取了两袋74161,第一袋有x(x ≥ 1)个,第二袋有y (y ≥ 1)。但很不幸,班长把第一个袋子弄丢了。现在,他只记得第二袋的数量y,以及x+y不超过n并且可以被k整除。管器材的老师告诉班长除非他能找到第一袋所有可能的元件数,否则按最大数量赔偿——那将是一个天文数字以至于班长需要卖肾。
2016-12-07 15:14:48 350
原创 DG之社团调查
题目描述自从进了大学,DG发现周围所有的同学几乎都进了社团,他十分想知道同学们究竟都参加了多少个不同的社团。但是DG觉得直接问同学参加了什么社团不够礼貌,因为那样就显得自己对同学不够关心了解。于是聪明的DG想到了另外一种问法:“A和B是否是同一个社团?”。这样一来虽然DG不能直接得到同学参加社团的信息,但是他可以从这次些关系中统计出周围人所参与的社团的个数(假如每个同学最多只能参加一个
2016-12-07 14:44:44 338
原创 DS的苦恼 数组 排序
题目描述DS因为善于目测打分而全校闻名,于是被东大女生节组委会请去给参加校花比赛的女生打分。DS也果然名不虚传,大眼一扫便对眼前站成一排的n个参赛女生依次打出了分数a1,a2...an(ai为整数,0输入多组数据每组三行第一行为两个整数n,m 1第二行为n个正整数,从左到右依次为每个女生的分数 0第三行为m个正整数,每个整数i表示从
2016-12-07 13:59:21 379
原创 查位置
题目描述已知一非递减整数序列,a1,a2...an现有m个询问,对于每个询问ai,回答ai在序列中第一次出现的位置p输入多组数据每组第一行为两个个正整数n,m 0第二行依次为给定序列中元素,共n个第三行依次为m个整数,保证每个数都在序列中出现输出每组数据输出m行,每行为对应询问在序列中第一次出现的位置p
2016-12-07 12:37:50 403
原创 素数的个数
题目描述求指定区间内素数的个数输入多组输入,每行两个整数l,r 0输出一个整数,为区间[l, r)素数的个数,占一行样例输入1 32 6样例输出13#include #include #include using namesp
2016-12-07 12:27:28 561
原创 Naive
现在有一个n∗m的棋盘,小哈试图用一些1∗2的卡片来铺满这个棋盘,卡片不能重叠,最终也不能有空余的格子在棋盘上。过了一段时间,他觉得这个问题实在是naive,于是他将棋盘的一些点挖掉,这些点将不能用卡片覆盖。现在他想知道,是否存在一个方案可以用卡片覆盖剩余的棋盘。输入有多组输入数据. 对每组数据:第一行两个数n,m接下来n行是一个棋盘 "."
2016-12-06 23:44:59 357
原创 笨笨喝茶 贪心
题目描述从前有只猪叫笨笨,它非常喜欢喝蜂蜜柚子茶,但是为了防止变胖,因此每天喝的量不能超过k克拉(蜂蜜柚子茶非常珍贵,因此需要以克拉来度量)。因为他实在是太喜欢和蜂蜜柚子茶了,因此每天他都希望能够尽可能早地喝完,所以每次睡前会将柚子茶放在床头,这样就可以在每天零点的时候开始喝啦。然后,和其他猪一样,笨笨的鼻子上有两个孔,因此每天最多只能够喝2瓶柚子茶。今天笨笨买了n瓶柚子茶,作为接
2016-12-06 20:54:07 338
原创 字符串游戏
题目描述字符串游戏由两人参与,游戏规则如下:给定一由英文小写字母组成的字符串,两名参与者轮流拿走一个字符。如果某位参与者在拿去字符之前可以将字符串重新排列成回文串,则赢得游戏。现在给定初始的字符串,判断是先手胜还是后手胜。假定参与者都采取最优策略。输入多组数据每组为一个仅有英文小写字母组成的字符串s (1 ≤ |s| ≤ 1e3),
2016-12-06 19:05:51 1433
原创 DG之送外卖
题目描述东大东门的外卖算是各位宅男的最爱,“哈同学,炒饭炒面••••”。不过外卖也有让人头疼的地方,比如说DG晚上7点订的炒面结果10点才到,这人DG十分不满送外卖的人的办事效率。作为一名资深2B宅男,DG有心要研究下送外卖究竟要花多少时间? DG向送外卖的人要来数据,有 n份外卖要送,送第i份所需的时间是ti。如果外卖可以按任意顺序送(但只能一份一份的送),则在最优的方式下,所有人的
2016-12-06 18:32:54 462
原创 猪猪的斐波那契
题目描述Xiaozhu学会了斐波那契数列第n项的计算方法之后,开始胡思乱想。对于一般的二阶递推关系,给定 f[n] = a * f[n-1] + b * f[n-2]中的系数a,b,并给定初值f[0]和f[1],能否快速求出f[n]?这里0输入输入多组数据,不超过10000组每行一组数据,为5个整数f[0],f[1], a, b, n 含义见
2016-12-06 17:52:23 328
原创 a+b
题目描述给定一个单调不减的数列p和一个整数m,求有多少组a,b,满足pa+pb=m 输入第一行一个整数T,表示有T组测试数据。每组数据第一行是1个整数m。第二行是整数n,表示p中有n个数字。第三行是n个数字,表示p的所有元素。T≤3,1≤n,m≤3∗106,0≤pi≤3∗106输出
2016-12-06 16:02:06 339
原创 Elimination 堆栈
题目描述消除游戏需要 N 张大小为 1 ∼ N 的纸牌。游戏开始时, N 张纸牌排成一行。对于某张纸牌,如果其牌面大小比右边相邻的纸牌小,那么这张纸牌将被消除。游戏按照上述规则进行多轮消除,直到不存在满足条件的纸牌,游戏结束。现在已知纸牌的初始排列顺序,请问消除游戏需要几轮结束,最后剩下的牌是什么。输入第一行一个正整数 T (T ≤
2016-12-05 18:24:16 362
原创 求最长的回文子串 manacher算法
参考:http://blog.sina.com.cn/s/blog_70811e1a01014esn.html 首先,将字符串都变成奇数字符串(如:将12121变成$1#2#1#2#1*,考虑到边界问题,将第一个与最后一个设置为不同的)
2016-12-04 01:20:54 235
原创 Meeting
关键点:每次将不满组条件的两个村民i,j(i#include #include using namespace std; #define MAX 50005 #define INF 1e7bool vis[MAX]; struct node{ int x,y; }point[MAX]; int main(){ int t,n,mi,m,temp,x,y
2016-12-03 21:46:59 368
原创 野生女仆
f[x] 表示走到第x枚金币时可以取到的最大的价值,sum表示剩下的总价值 因为金币的总价值是不变的,所以想要自己拿到最大的价值,就需要让女仆拿到最小的价值 转移方程: f[x]=sum-min{f[x+1],f[x+2],f[x+3]} 终止条件: 剩下的金币数量#include #include #include u
2016-12-03 20:27:02 259
原创 最大值
题目描述现在你有两个数 a, b。然后你可以进行若干次操作,每一次操作,可以把a, b变为 a, a+b 或者a+b, b。最终,你需要让a,b中的最大值大于或等于m。那么,你最少需要多少次操作呢。输入第一行一个数字t,代表数据的组数接下来t 行,每行有三个数a,b,m输出每个数据一行,
2016-12-03 20:06:26 361
原创 五的倍数
题目描述现在有个很长的字符串s,其中的所有字符都是'0'到'9'。它表示了一个很大的数字。你想知道该字符串的多少个不同的子序列是五的倍数。一个字符串的子序列被定义为从中任意去掉一些元素后剩下的部分。要求的子序列可以有先导0,但是不可以是为空。因为结果可能很大,你只需要输出答案对 1000000007(10^9+7) 取余数的结果就可以。输入第一行一
2016-12-03 18:14:28 611
原创 准等腰毕氏三角形
一般直角三角形三边可以表示为:m^2-n^2 、2*m*n、m^2+n^2 #include #include using namespace std; #define MAX 18 struct node{ long long a,b,c; }point[MAX+1]; int main(){ long long temp,n=1; double t
2016-12-03 16:09:11 515
原创 ZOJ :: GCD Reduce
思路:若干次gcd()之后全部为1,判断是否有解,即判断n个数的最大公约数是否为1若不为1,设为t(t>1),即n个数均为t的倍数,无论那两个相约,结果都大于等于t,最后结果一定为t 判断为1之后,先将A[0]约成1,gcd(1,x)=1,再与后面n-1个数进行去最大公约数操作用C++中的cin,cout会超时采用C语言中的格式输入函数scanf()和printf()
2016-12-02 22:07:44 292
原创 ZOJ :: Easy Task
You are given n integers. Your task is very easy. You should find the maximum integer a and the minimum integer b among these n integers. And then you should replace both a and bwith a-b. Your task
2016-12-02 20:27:57 327
原创 蓝桥杯 历届试题 翻硬币
贪心……每次只看当前是否需要翻转#include #include using namespace std; int main(){ string a,b; while (cin>>a>>b) { int s=a.size(); int count=0; for (int i=0;i<s-1;i++) { if (a[i]!=b[i]){
2016-12-02 17:57:06 384
原创 蓝桥杯 历届试题 核桃的数量
求最小公倍数,先求最大公约数(辗转相除法) #include #include using namespace std;int gcd(int a,int b){ return (a%b==0)?b:gcd(b,a%b); }int lcm(int a,int b) { if (a<b) swap(a,b); int ans=a*b/gcd(a,b); re
2016-12-02 17:41:42 370
原创 蓝桥杯 历届试题 蚂蚁感冒
分析:(1)因为只计算数量,所以蚂蚁是掉头还是直接向前走对本题没有影响(2)如果感冒的蚂蚁方向向左: 在它左边的蚂蚁:如果向右,则会感染;如果向左则不会感染 在它右边的蚂蚁:如果向右,则不会感染 如果向
2016-12-02 12:10:43 391
原创 蓝桥杯 历届试题 国王的烦恼
关键:从最大的天数往前开始建立连接图思路:以天数为表头建立邻接表 取出最大和最小的天数,从最大的天数开始往前计算,一直算到最小的天数, 如果某一天t将两个不连通的小岛连接起来则该天会收到抗议;如果某条边连接的岛是相连 ,则不做任何处理 已知n个点的最小连通图的边数最少为n-1条,当连接的边数为n-1时所有岛相连,也就是说在该天之前都不会收到抗议 ,完成检索#include #
2016-12-02 11:20:43 916
原创 蓝桥杯 历届试题 城市建设
最小生成树参考:http://www.mamicode.com/info-detail-524451.html关键点:加一个状态0,与可建码头的地区相连 思路:(1)只有道路便是连通图:考虑加码头与不加码头两种情况(2)道路之间是不连通的,只有加上码头才能连通,只考虑加上码头的情况#include #include #include using namesp
2016-12-01 22:47:08 1382
原创 快速幂
参考:http://www.cppblog.com/acronix/archive/2010/08/23/124470.aspx?opt=admin 下面是 m^n % k 的快速幂: // m^n % kint quickpow(int m,int n,int k){ int b = 1; while (n > 0) { if (n &
2016-11-30 21:00:04 255
原创 蓝桥杯 历届试题 分糖果
#include using namespace std;#define MAX 102 int a[MAX]; bool Equal(int a[],int n){ for (int i=1;i<=n;i++) { if (a[1]!=a[i-1]) return false; } return true; }int main(){ int n;
2016-11-30 19:53:47 374
原创 蓝桥杯 历届试题 九宫重排
参考:http://blog.csdn.net/u010372095/article/details/20077681 #include #include #include #include using namespace std; #define MAX 10 #define MAXK 9 #define MAXC 400000 #define MAXD 4in
2016-11-30 18:42:51 498
原创 康托展开和逆康拓展开
康托展开: int cantuo(int s[],int e) //第一位从0开始,e为最后一个的下标{ int i,j,temp,num=0; for (i=0;i<e;i++) { temp=0; for (j=i+1;j<=e;j++) { if (s[j]<s[i]) { temp++; } } num+=fac[e
2016-11-30 16:32:29 363
原创 蓝桥杯 历届试题 网络寻路
思路:邻接表表示,以任意数为起点,不走走过的边,可以走三步就是一种转发路径#include #include using namespace std;#define MAXN 10005#define MAXM 100005 struct node{ int to,next; }edge[MAXM]; int head[MAXN]; int cnt,sum; vo
2016-11-29 22:49:34 1307
原创 蓝桥杯 历届试题 最大子矩阵
时间复杂度O(N^3) #include #include #include #include using namespace std;#define INF 800000000#define MAX 501int a[MAX][MAX]; int c[MAX]; int n,m; int maxLen(){ int ma=0,sum=0; for
2016-11-29 21:31:13 695
原创 蓝桥杯 邮局
最后两个超时,求大神解答#include #include #include using namespace std;#define MAXN 51#define MAXM 26#define MAXK 11 #define INF 100000000000 struct point{ int x,y; }home[MAXN]; double dis[MAXM][MA
2016-11-29 12:10:28 957 1
原创 蓝桥杯 历届试题 幸运数
整体思路为找从1~end的幸运数,然后将在区间内的数累加为了提高效率,每次改变搜索范围#include #include using namespace std; #define MAX 1000010 int a[MAX]; int filter(int s,int e) { int k=s; int t=a[s]; for (int i=s;i<e;i+
2016-11-28 19:19:24 1014
原创 蓝桥杯 历届试题 带分数
1.对整数部分从1~n-1进行搜索,用flag记录已经出现过的数字(!式子中不能出现0,出现给flag标记中的0赋值为1);2.分数部分,分母一定小于分子,分母长度一定小于等于分子,即分子长度一定小于等于右边总长度的一半#include #include using namespace std;#define MAX 10bool flag[MAX],copyf[MAX]; int
2016-11-28 12:50:53 1065
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人