自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

OhohOh

Think Different.

  • 博客(33)
  • 资源 (1)
  • 收藏
  • 关注

原创 HDU 1130 How Many Trees?(Catalan + 大数)

原题链接:Here!分析:Catalan数的应用+大数,友情链接,里面有分析 .Here!CODE:#include #include #include#include #include using namespace std; #define MAXN 9999#define MAXSIZE 10#define DLEN 4class BigNum{

2016-11-30 22:21:53 493

原创 HDU 1134 Game of Connections(Catalan + 大数)

原题链接:Here!看完就懂了!(应用5)CODE:使用了大数模板#include #include #include#include #include using namespace std; #define MAXN 9999#define MAXSIZE 10#define DLEN 4class BigNum{ private:

2016-11-30 18:09:19 410

原创 HDU 1023 Train Problem II(Catalan + 大数)

原题链接:Here!模板来袭:Here!#include #include #include #include #include using namespace std; #define MAXN 9999 #define MAXSIZE 10 #define DLEN 4 class BigNum { private

2016-11-30 17:29:32 415

转载 C++ 大数类 大数模板

转自:http://blog.csdn.net/vsooda/article/details/8543351分别使用C++中的运算符重载的方法来实现大数之间的数学运算,包括加法、减法、乘法、除法、n次方、取模、大小比较、赋值以及输入流、输出流的重载。。圣光降临~例题是HDU 1134大数卡特兰#include #include #include #includ

2016-11-30 17:21:57 763

原创 组合数学 Catalan Number 总结

因缘:在某一次做题过程中遇到了 C(2n,n)/(n+1) ,C(2n,n)在计算过程中中间值太大导致爆掉令我非常头痛,那有什么方法能够解决这个问题呢?解决方法就是Catalan数。简介:卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中的数列。以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)的名字来命名。其前几项为 : 1, 1, 2, 5,

2016-11-30 16:43:46 1070

原创 HDU 2067 小兔的棋盘 (组合数学 卡特兰数)

原题链接:Here!开始想用dfs打个表,慢,也难怪,这个路径数太大了。然后发现C(2n,n)/(n+1)*2就是answer,别问我,我自己算了下C(2n,n),一看除n+1再*2正好是answer,于是乎就开始纠结如何化简C(2n,n),弱,看来普通方法是不行了。后来看到卡特兰数(Catalan number),找到了一条正确的路......百度百科:卡特兰数又称卡塔兰

2016-11-30 00:32:18 746

原创 HDU 2086 A1=?

原题链接:Here!推理公式:An = (1/2)An-1 + (1/2)An+1 - CnAn-1 = (2/3)An-2 + (1/3)An+1 - (2/3)Cn - (4/3)Cn-1An-2 = (3/4)An-3 + (1/4)An+1 - (1/2)Cn - Cn-1 - (3/2)Cn-2An-3 = (4/5)An-4 + (1/5)An+1 - (2/5

2016-11-29 21:17:31 321

原创 HDU 2073 无限的路(水)

纠结时A一发还是很爽的原题链接:Here!分析:把问题分解成求两个点到初始点的距离,这两个点的距离就是差。如何计算图中一个点到起始点的距离?设直线方程为 y+x=c 可以看到图中被 橙、黄、绿标记的直线c是不同的,也就是说c可以区分不同直线。ok,我们来算倾斜的线(棕色)的长度incline,假设求第三个倾斜的线(0,3)->(2,0),其长度为

2016-11-29 18:48:32 510

原创 HDU 2894 Play On Words(欧拉回路)

原题链接:Here!,大白皮原题分析:题目大意是输入n个单词,判断是否可以排成一个序列,使得每个单词的第一个字母和上一个单词的最后一个字母相同。可以把每个单词看成一个有向边,单词的第一个和最后一个字母看成节点,这样问题便转化成了判断图中是否存在欧拉路径的问题。欧拉路径存在的充分条件:1.是一个连通图(并查集实现)  2.最多有两个奇点(度为奇数的点)CODE:#

2016-11-29 17:59:51 510

原创 HDU 1878 欧拉回路(欧拉回路)

题目都告诉你这是欧拉回路了......判断图中是否存在欧拉回路,欧拉回路存在的两个充分条件: 1.连通图2.图中奇点(点的度是奇数)不存在。开始我想记录不重复的边的个数cnt,因为无向图是连通图的话cnt>=n-1,燃鹅,我错了T^T一个无向图 G=(V,E) 是连通的,那么边的数目大于等于顶点的数目减一:|E|>=|V|-1,而反之不成立。反之不成立……OH!

2016-11-29 15:21:41 286

原创 判断两个矩形是否相交

自己写着玩,这样做倒是能够判断"直立"的两个矩形是否相交,但不能判断"倾斜"的矩形相交,Oh~失败~。原理是根据两个矩形中心之间的距离关系来进行判断。Test Data:1.00 3.00 3.00 1.00 2.00 4.00 4.00 2.005.00 13.00 13.00 5.00 4.00 12.50 12.50 4.001.00 3.00 3.00 1.00 4

2016-11-28 22:33:48 386

原创 HDU 2057 A + B Again(水)

刚刚学时想手动模拟十六进制加减法,Tooyoung,注意:十六进制输入十六进制输出就ok。题目告知A长度不会超过15位A最大为fffffffffffffff,转换成10进制为  1152921504606847046long long范围是-2^63~+2^63-1, MAX:     9223372036854775807所以long long足够了。

2016-11-28 14:48:19 856

原创 Hdu 2053 Switch Game(水)

原题链接:Here!题意很重要:接下来解释Hint的意思The initial condition :0 0 0 0 0 …After the first operation :1 1 1 1 1 …After the second operation :1 0 1 0 1 …After the third operation :1 0 0 0 1 …After t

2016-11-28 13:17:26 398

原创 HDU 2647 Reward(拓扑排序)

原题链接:Here!分析:因为最近一直在做拓扑排序的问题,所以没多想就采用拓扑排序来解决这个问题,后来一想,跟并查集好像......1.判断图中是否存在环只需看能够处理多少节点,如果 处理节点数!=n,那肯定存在环。如果图中有环,那么在图中出现环的地方每个点的入度in[]肯定是无法=0的,所以环处的节点都不能进入队列,所以处理节点数目自然!=n。2.其次这个问题还需要计算需要至少需

2016-11-27 00:28:45 571

原创 HDU 4857 逃生(拓扑排序)

原题链接:Here!分析:题目n(1 ,肯定不能用数组来保存二元关系(b,a)了,所以采用vector来存放二元关系,然后用优先队列保存入度为0的点。CODE:#include#include#include#includeusing namespace std;//#define testconst int maxn = 30000+1; int n,m;i

2016-11-26 22:23:26 353

原创 为何弱?

1.不努力!2.不努力!!3.不努力!!!4.不努力!!!!5.不努力!!!!!6.不努力!!!!!!

2016-11-26 21:54:58 190

原创 Uva oj 10305 Ordering Tasks(拓扑排序)

原题链接:Here!分析:简单拓扑排序。CODE:借助DFS完成拓扑排序#include#includeconst int maxn = 100+10;int n,m,t;int G[maxn][maxn];int c[maxn];int topo[maxn];void init(){ memset(G,0,sizeof(G)); memset

2016-11-25 22:54:36 282

原创 HDU 1285 确定比赛名次(拓扑排序)

原题链接:Here!分析:简单拓扑排序,直接做就好CODE:#include#includeusing namespace std;const int maxn = 500+10;int n,m;int G[maxn][maxn];int indegree[maxn];int topo[maxn];void init(){ memset(G,0,sizeo

2016-11-25 22:48:12 368

原创 HDU 2094 产生冠军(STL & 拓扑)

原题链接:Here!分析:一群人比赛,然后给出n个二元关系,产生冠军的情况只有一种 —— 有且只有一个人从没败过。至于为什么是这样,最后再讲。根据分析,我们需要记录每个人失败的次数 loser[] ,又因为每次输入的都是两个字符串,所以采用容器map loser,然后又得记下来比赛人的"姓名",因为一些姓名会重复出现,利用set的互异性就能简单的找到所有人的"姓名",所以用了set

2016-11-25 22:41:46 442

原创 HDU 1728 逃离迷宫(BFS)

原题链接:Here!balabala:好吧好吧好吧好吧,在Discuss里看到了一个评论Posted by hiheisetat 2015-08-07 14:44:58 on Problem 1728(2) 错错错,是我的的错,bfs就他妈的不能通过,你要的x啊是列,我却

2016-11-24 15:43:43 879 1

原创 Uva oj 816 Abbott Revenge(BFS最短路)

原题链接:Here!闲话:看到题目的时候还是很懵的,这个迷宫很特殊,特殊的地方在对于每一个点都多出来一些要求,比如进入一个交叉点的"朝向"( NESW,北东南西 )是不同的,对应不同的"朝向",出去的方向也是不尽相同的。好吧,根本没有思路,真不愧是Final的题。变量设置:1. (r,c) 代表点的坐标,特殊的(r0,c0)代表Enterance,(r2,c2)代表Goal

2016-11-23 20:20:59 760

原创 为何学习算法?

今天跟学长们讨论了一番,一段不着边际,最后最后,我想,学习一个知识,非得有理由吗?要说理由,那就是我喜欢。管它以后会怎样,我喜欢我就去做。

2016-11-21 22:27:57 240

原创 ACM_回溯法总结

回溯:把问题分解成若干个步骤并且递归求解时,如果当前步骤没有合法的选择,则返回上一级递归调用。优点:回溯法在递归中边生成边检查,从而减少了大量不必要的枚举量。N皇后问题 HDU 2553注意:先打个表以防超时分析:以八皇后为例1.最简单的思路是把问题转化为从64个格子中选出一个子集,使子集中恰好有8个格子,且这8个格子满足八皇后的要求。这样做子集个数为2^64,太大。

2016-11-21 22:18:37 620

原创 UVa-129-Krypton Factor(回溯法)

Time limit: 3.000 seconds限时:3.000秒Problem问题You have been employed by the organisers of a Super Krypton Factor Contest in which contestants have very high mental and physical abilities. In

2016-11-21 22:00:19 315

原创 Newcomer Test 2016.11.27

HDU 2081 手机短号注意:  1.定义number数组的时候不要用int,要用char2.注意下字符串的输入方式Code:#includeint main(){ int N,i; char num[12]; scanf("%d",&N); while(N--){ scanf("%s",&num); printf("6"); for(

2016-11-20 19:10:56 563

原创 ACM_子集生成算法总结

子集生成:给定一个集合,枚举所有可能的子集。(子集中没有重复元素)下面程序中变量所代表的含义:n     为全集中元素的个数A     为某一子集,某一个排列cur  为目前的次数1.增量构造法原理:一次选出一个元素放到集合中,递归解决。分析:解答树节点个数为2^n,n为全集中元素个数。#include#include using namespace

2016-11-20 16:54:25 753

原创 C++ STL next_permutation() & prev_permutation()函数

来源:C++ Primer Plusnext_permutation() 和 prev_permutation() 函数基本类似next_permutation()函数:用法:next_permutation(first,last)作用:next_permutation()函数将 [ first , last ] 区间中的序列转换为字典序的下一个排列。如果下一个排列存在

2016-11-20 14:10:23 1276

原创 ACM_生成可重集的排序

问题要求:输入数组P,并按字典序输出数组A个元素的全排列。问题来源:刘汝佳大白皮P185Code:/** Note: * 序列A 一次全排列 * 序列P 需要进行全排列的数组* 分析:1~n的全排列easy,用递归实现,这个也是相同的方法,但是在处理出现重复数字的时候会出现问题* 例如 in:1 1 1 , out:sum=27,这很明显是错的,为什么错,因为每

2016-11-19 21:01:04 329

原创 Uva oj 10976 Fractions Again (简单枚举)

/** 题意:找到所有正整数 x>=y 使得1/k=1/x+1/y * 分析:x>=y,1/xk,这样才能保证x为正整数 */#includeusing namespace std;int main(){ int k; int ans[10001][2]; while(scanf("%d",&k)!=EOF){ int cnt=0; for(int y=k+1;y<=2*

2016-11-19 17:21:08 293

原创 Uva oj 11059 Maximum Product(简单枚举)

/** 题意:输入n的元素组成的序列S,找出一个乘积最大的连续子序列,如果这个最大的乘积不是0,应输出0表示无解 * 分析:乘积最大连续子序列,枚举起始点即可,因为数据非常小,直接暴力 */#includeusing namespace std;int main(){ int a[19]; int n,Case=0; while(scanf("%d",&n)!=EOF){ f

2016-11-19 16:52:30 290

原创 sprintf()的用法

头文件:#include stdio.h>sprintf()函数用于将格式化的数据写入字符串,其原型为: int sprintf(char *str, char * format [, argument, ...]);【参数】str为要写入的字符串;format为格式化字符串,与printf()函数相同;argument为变量。除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在

2016-11-19 16:01:33 302

原创 Uva oj 725 Division(暴力)

/** * 题意:找出所有形如 abcde / fghij = n 的数,且abcdefghij是0~9的一个全排列 * 思考:暴力也要有技巧,不可能全部枚举,10!太大所以要简化 * 注意:sprintf()的用法,printf格式输出:%[flags][width][.perc][F|N|h|l]type */#include#includeusing namespace s

2016-11-19 15:53:02 377

原创 蓝桥杯 历届试题 买不到的数目(数论)

历届试题 买不到的数目  时间限制:1.0s   内存限制:256.0MB      问题描述小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量

2016-11-05 11:09:45 817 2

空空如也

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

TA关注的人

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