自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Cai_Haiq的博客

菜鸡互啄

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

原创 HDU1028整数拆分(母函数)

这道题是一道母函数的题,看过很多大牛讲母函数,看的一脸懵逼,大脑接受不了大牛的教导,今天突然感觉开窍了,想起了高中老师教的组合数学,终于有点眉目了,希望本篇博文能对组合数学不好的同学有所帮助(组合数学好的估计会觉得本博客毫无营养); 首先,我要说明,这里讲的是指数型母函数(其实就是利用指数的母函数),以整数拆分为例讲解一下 我们用x的指数代表数值大小,系数代表有几种取法(或者说拆分方法),举个例

2017-03-15 21:35:46 626

原创 HDU 1142详解带翻译 (以前看了好多大神的算法看不懂,学了之后终于看懂了,献给和我一样刚入门的菜鸟)

HDU 1142题目翻译:(英语差劲)问题描述森林是美丽的,吉米要采取不同的路线每天。他还希望在天黑前回家,所以他总是一直朝着他家的行进。如果存在从B到他家的路线比从A短, 则可以由A走到B。计算所有可能的路线。 输入输入包含多个测试用例,已0结束..吉米一行已编号的每个路口或从1开始,他的办公室编号为1,他的房子是编号为2。每个测试用例的第一行给出结点的数目N,1 这道题

2016-04-13 20:23:18 791

原创 HDU1071(数学题)

题意: 给你这三个点的坐标,求面积 题解: 水题,不想写题解了出去骑行有点虚; 就是利用三点求出直线方程,抛物线方程,然后求积分 直接上代码 code:#include<cstdio>int main(){ int n; scanf("%d",&n); double x,y,x1,y1,x2,y2; while(n--) { s

2017-06-03 20:32:12 542

原创 HDU1065(数学水题)

题意: 河水以每年50平方英里的速度侵蚀,告诉你你的位置坐标,问你多少年会被侵蚀到. 不想说话,都快WA哭了,PI的值必须是3.1415926 还有一定要注意格式 重要的话说三遍 一定要注意格式 一定要注意格式 一定要注意格式 求出以你到圆心为半径的半个圆面积,然后算算多少年侵蚀到你就OK了code:#include<cstdio>#include<cmath>//const d

2017-06-02 20:42:06 442

原创 HDU1018(数学题)

题意, 数据数目T 接下来T行,每行一个数字n,输出n!的位数; code:一前做过,现在突然一看还有些懵,学的还不扎实啊… 数学题的做法 : n!用科学计数法表示.x表示整数,y表示小数 这样只要暴力求出公式左边,然后取整加一输出就OK了#include<cstdio>#include<cmath>int main(){ int n,T; double res=

2017-06-02 20:01:47 360

原创 线段树求区间最大值+区间更新+区间求和+lazy标记

线段树求区间最大值+区间更新+区间求和+lazy标记

2017-05-05 11:22:58 1616

原创 POJ2975(Nim博弈)

去年省赛的老照片被疯传 不想写题解了555…. code#include<cstdio>int main(){ int n; while(scanf("%d",&n)!=EOF&&n) { int sum=0; int res=0; int a[10010]; for(int i=0;i<n;i++)

2017-05-03 21:07:58 317

原创 POJ2234(Nim博弈)

Nim博弈 很简单,把所有数疑惑就ok了 别问我为什么,仍旧蒙蒙的……………………… code#include<cstdio>int main(){ int n; while(scanf("%d",&n)!=EOF) { int res=0; for(int i=0;i<n;i++) { int

2017-05-03 20:21:01 269

原创 HDU2149(巴什博弈)

博弈论最简单的的内容 入门 题意也没有什么坑 code:#include<cstdio>int main(){ int m,n; while(scanf("%d%d",&m,&n)!=EOF) { if(n>=m) { printf("%d",m); for(int i=m+1;i<=n;

2017-05-03 19:51:08 364

原创 HDU2516(斐波那契博弈)

泪崩什么都不懂 继了解了威佐夫博弈后,才发现原来还有这么多博弈 斐波那契博弈: 有一堆物品,两人轮流取物品,先手最少取一个,至多无上限,但不能把物品取完,之后每次取的物品数不能超过上一次取的物品数的二倍且至少为一件,取走最后一件物品的人获胜。结论是:先手胜当且仅当n不是斐波那契数(n为物品总数)还是 code#include <iostream>#include <string.h>#in

2017-05-03 13:12:56 339

原创 HDU5973(威佐夫博弈+Java大数)

今天做题长知识了,除了巴什博奕,尼姆博奕,竟然还有威佐夫博弈 威佐夫博弈定义: 有两堆各若干的物品,两人轮流从其中一堆取至少一件物品,至多不限,或从两堆中同时取相同件物品,规定最后取完者胜利。 直接说结论了,若两堆物品的初始值为(x,y),且ximport java.math.BigDecimal;import java.util.Scanner;public class Main {

2017-05-03 13:06:37 523

原创 POJ1125(folyd多源最短路)

数据输入: n:经济人总数,图的大小; 接下来n行 m 是第i个经纪人信任的人个数 2*m 个数字分别代表那个人的编号与传播时间找一个经纪人传播全图最快 输出那个人的编号和时间如果所有人都不能遍历全图,输出disjoint分析: folyd求多源最短路,然后取其中最小的 n^3的算法好就没用过了code:#include<stdio.h>#include<string.h>#in

2017-05-02 19:01:55 430

原创 16山东省赛B题SDNU1504

签到题之一,打表OK; 这里有一点要知道,所有的数都可以用斐波那契数表示.#include<cstdio>int main(){ int fi[45]; fi[0]=1; fi[1]=2; for(int i=2;i<=43;i++) fi[i]=fi[i-1]+fi[i-2]; int kase; scanf("%d",&kas

2017-04-30 19:50:13 312

原创 16山东省赛A题

这个题是去年的签到题,今年终于有博客了,补上!#include<cstdio>int main(){ int kase; scanf("%d",&kase); while(kase--) { int a,b; scanf("%d%d",&a,&b); if(a%b==0) printf("%d

2017-04-30 19:30:42 278

原创 HDU2152母函数

题目是汉语没什么难理解的地方,直接上代码: 如果大家对母函数还不够理解,可以尝试HDU1028 这里写链接内容 那道题还是比较简单的。 题目链接 这里写链接内容 code: (参看了这里写链接内容,但是没搞明白第二种,还需努力)#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>#inclu

2017-03-16 16:19:08 297

原创 HDU1007经典最近点对

输入点的个数n 接下来n行输入n个点 输出最近点对 用分治法求最近点对,算法不多说了, code:#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>#include<iostream>#include<string>#include <set>using namespace std;#d

2017-03-13 20:46:32 321

原创 POJ1703简单的并查集

输入的时候,两个人竟然不是一伙,而且恰恰相反 开始把我看得好蒙,不是一伙的怎么并 没法并怎么查; 还是看了大牛的博客,原来就是加一个bool类型的判断数组就解决了 还是运用的不灵活,还是刷的题太少了,努力刷题ing code:#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>#include<

2017-03-07 21:18:35 298

原创 POJ1258prime最小生成树

prime算法的模板题 模板:int prim(int cost[][maxn],int n){ int ans=0; mem(vis); vis[0]=true; for(int i=1;i<n;i++) { low[i]=cost[0][i]; } for(int i=1;i<n;i++) { i

2017-03-07 21:09:28 325

原创 POJ1001

大数相乘 题意:输入R和n 输出R^n高精度数的乘法 思路很简单 主要考察对字符串的应用 注意清除无用的零后再计算小数点位置 code:#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>#include<iostream>#include<string>using namespace

2017-03-07 21:02:54 268

原创 POJ 1000A+B我的入门

POJ1000 额,闲的难受就做了 哈哈 code:#include <iostream>using namespace std;int main(){ int a; int b; cin>>a>>b; cout<<a+b<<endl; return 0;}

2017-03-07 20:55:38 350

原创 POJ1003水题

POJ1003 水题 读懂提议就ok了 题意简介:输入一个浮点数,记为c,找出累加式1/2 + 1/3 + 1/4 + … + 1/(n + 1)大于等于c的最小的n,0.01<=c<=5.20,输入0.00代表输入结束。 code:#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>#inclu

2017-03-07 20:54:05 342

原创 SDNUOJ1014

直接暴力做就好了 注意格式 最后一个数后没有空格#include <stdio.h>#include <string.h>int main(){ int n; int a[10]; memset(a,0,sizeof(a)); scanf("%d",&n); for(int i=1;i<=n;i++) { int k=i;

2016-05-31 21:26:44 528

原创 SDNUOJ1013(DP||模拟)

按照要求来,无需讲解#include<iostream>#include <stdlib.h>#include<cstdio>#include<cstring>using namespace std;int cmp(const void *a, const void *b){ return(*(int *)b-*(int*)a);}int main(){ int n

2016-05-31 21:03:01 412

原创 SDNUOJ1012(区间合并)

首先写一个结构体,保存区间 对区间开始排序 遍历所有区间,如果begin比上一个小 区间数减一;#include <stdio.h>#include <stdlib.h>struct record{ int begin; int end; /* int flog;*/} ;int compare(const void *p1,const void *p2){

2016-05-31 20:04:39 600

原创 SDNUOJ1011(斯特灵数)

Stirling数的第一类应用 Stirling数两大应用 1. 第一类Stirling数是有正负的,其绝对值是n个元素的项目分作k个环排列的方法数目。常用的表示方法有s(n,k) ,换个较生活化的说法,就是有n个人分成k组,每组内再按特定顺序围圈的分组方法的数目。 2. 第二类Stirling数是n个元素的集定义k个等价类的方法数目。常用的表示方法有S(n,k) , 换个较生活化的说法,

2016-05-31 19:57:58 568

转载 SG函数入门

下面介绍sg函数(解决博弈问题的王道) sg 即Graph Game,把博弈游戏抽象成有向无环图 (1) 有向无环图 (2) 玩家1先移动,起点是x0 (3) 两个玩家轮流移动 (4) 对于顶点x, 玩家能够移动到的顶点集记为F(x). (5) 不能移动的玩家会输掉游戏 首先定义mex(minimal excludant)运算,这是施加于一个集合的运算,表示最小的不属于这

2016-05-13 20:07:29 386

原创 POJ2960(SG函数,模板题)

题目大意:已知一次可拿个数的种类;求出先手是否胜利,若胜利输出W否则输出L; SG函数模板:#include<string.h>const int N = 10008;int a[110],sg[N],f[N];void sgt(int *a,int y,int z){ int i,j; memset(sg,0,sizeof(sg)); for(i=1;i<=z;i

2016-05-13 20:06:03 430

原创 HDU2147(模拟找规律)

首先模拟打表,从表(1表示必胜态,0表示必败态)中找到规律:有偶数先手一定赢,没有偶数则后手赢 打表代码#include <stdio.h>bool gird[2000+10][2000+10];//1代表必胜点 0代表必败点int main(){ int i,j; int n,m; gird[2000][1]=0; for(i=2000;i>0;--i)

2016-05-12 21:10:09 347

原创 HDU1864巴什博奕(水题)

题解: 与此题相同[(http://blog.csdn.net/gaokao_sijiao/article/details/51377382)] 代码如下:#include <cstdio>int main(){ int c,n,m; scanf("%d",&c); while(c--) { scanf("%d %d",&n,&m);

2016-05-12 20:37:40 276

原创 POJ2484

题意:a个硬币围成一圈两人轮流拿;谁拿到最后一个就赢了;      1,若a      2,若a>=3;第二个人必胜;           (1)a位偶数,第二个人与第一个人拿的成中心对称,第二个人必胜;           (2)a为奇数,第一次拿时 ,第二个人只要与第一个人拿的和为3,位置成中心对称,第二个人必胜(因为转化成了第一种情况,几a为偶数时);代码如下:#in

2016-05-12 19:01:37 482

原创 POJ2975(Nim游戏)

典型的Nim游戏。题意:给定n堆石子,求是否为必胜态;若是,则求出有多少种拿法。a[]数组存数,所有数异或结果result与a[i]异或,若结果例子:有4堆石子,数量分别为:7   9   12   15二进制形式为 0111 1001 1100 1111异或结果为:1101 0111^1101=1010=10>7   舍去1101^1001=010

2016-05-11 20:27:18 420

原创 POJ2234(二进制和平衡状态概念)

1902年获胜策略已由美国数学家C.L.Bouton分析完成,用到的是二进制和平衡状态概念。其结论是:对于n堆石子,第i (1两个定理如下:定理1]:对于任何一个S态(异或不等于0),总能从一堆火柴中取出若干个使之成为T态。证明:若有n堆火柴,每堆火柴有A(i)根火柴数,那么既然现在处于S态,c = A(1) xor A(2) xor … xor A(n) > 0;把c

2016-05-11 19:18:33 677

原创 HDU2149(巴什博弈Bash Game)

题意可以抽象成一下模型:    只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。    显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,

2016-05-11 18:58:08 369

空空如也

空空如也

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

TA关注的人

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