自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

allblue

菜鸟的成长

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

原创 1008: [HNOI2008]越狱

BZOJ 1008总的可能方案数:m^n不回越狱的方案数:m*(m-1)^(n-1)#include using namespace std;#define MOD 100003#define LL long longLL POW(LL a,LL n){ LL b=1; while(n>0){ if (n&1) b=(a*b)%MOD; a=(

2016-05-17 16:15:43 351 1

原创 1002. 二哥种花生

容斥原理的简单应用#include using namespace std;#define maxn 1005int d[maxn][maxn];int main(){ int l,w; cin>>l>>w; memset(d,0,sizeof(d)); for (int i=1;i<=l;i++){ for (int j=1;j<=w;j++){ c

2016-04-26 23:40:45 680

原创 1001. 二哥摘苹果

第一天先做到简单题#include using namespace std;int main(){ int a,b,c; cin>>a>>b>>c; int count=0; for (int i=0;i<c;i++){ int data; cin>>data; if (data<=a+b) count++; } cout<<count<<end

2016-04-26 23:15:34 1335

转载 把gedit配置成ide的命令

#!/bin/bashfullname=$GEDIT_CURRENT_DOCUMENT_NAMEname=`echo $fullname | cut -d. -f1`suffix=`echo $fullname | cut -d. -f2`if [ $suffix = "cpp" ]||[ $suffix = "cc" ];then g++ $fullname -o $name && e

2015-06-24 09:37:48 680

原创 配置Sublime Text 2

这个的优点,,由于刚用,,目前能够明显感觉到的就是漂亮这一点了这里是下载地址 戳一戳这里这里是配置的相关文件,我提供的st2是64位版本的,其余版本的请戳上面,下载密码96e0我提供的下载文件里,包含了一下几个文件1.Sublime Text 2 64位安装包2.汉化包3.MinGW4.cb_console_runner.exe (我放在MinGW文件夹中的or

2015-04-23 18:41:34 400

原创 2014_4_19

题目地址1.好多条路这个题目,嗯,动态规划d[i]:=表示之间最多有i个城市的走法那么就分成是否直达了,直达就只有1种走法,如果不直达,就先选取一个城市,就变成最多含有i-1个城市的方法了d[i]=d[i-1]*i+1#include using namespace std;#define maxn 500000#define MOD 100000007long

2015-04-21 20:44:16 405

原创 博弈论问题,弱弱的分析

由于上次学弟出的,应该说是借鉴的一道博弈论的题目,,感觉到自己的完全空白,,所以这次去网上看了好几篇文章,写下自己的心得体会我看到网上很多人都是以nim的游戏开始介绍,然后讲SG值,mex函数,还有 Bouton's Theorem,都介绍的比较详细了吧下面我来整理下什么是nim游戏首先根据以上的介绍,我们了解到ICG问题主要有以下几个个特点1.当能到某人开始操作时,走不动

2015-04-16 09:15:12 999

转载 Sprague-Grundy函数

上一期的文章里我们仔细研究了Nim游戏,并且了解了找出必胜策略的方法。但如果把Nim的规则略加改变,你还能很快找出必胜策略吗?比如说:有n堆石子,每次可以从第1堆石子里取1颗、2颗或3颗,可以从第2堆石子里取奇数颗,可以从第3堆及以后石子里取任意颗……这时看上去问题复杂了很多,但相信你如果掌握了本节的内容,类似的千变万化的问题都是不成问题的。现在我们来研究一个看上去似乎更为一般的游戏:给定

2015-04-14 14:24:13 473

转载 基础博弈—Nim博弈

重点结论:对于一个Nim游戏的局面(a1,a2,...,an),它是P-position当且仅当a1^a2^...^an=0,其中^表示位异或(xor)运算。Nim游戏是博弈论中最经典的模型(之一?),它又有着十分简单的规则和无比优美的结论,由这个游戏开始了解博弈论恐怕是最合适不过了。Nim游戏是组合游戏(Combinatorial Games)的一种,准确来说,属于“Impart

2015-04-14 14:23:34 461

原创 快速幂与快速矩阵幂

==题目链接==在进行幂运算计算的时候我们会很轻松的给出O(n)的计算方法,但是对于n特别大的时候就并不适合了但是我们换种方式来计算就要快得多,如我们要计算a^n只要记得a^(n/2)就可以了如果n为奇数 a^n=a^(n/2)*a^(n/2)*a如果n为偶数a^n=a^(n/2)*a^(n/2)ll mod_pow(ll x,ll n){ ll res=1;

2015-04-13 17:05:53 315

原创 2015_4_12

==题目地址==本周出现了博弈论,,嗯,这个方面我是空白的==A.特殊的质数肋骨既然是要每节肋骨都是质数,可以看出一些很明显的规律,比如说是最后一个数字如果是2的倍数肯定就不行,所以顶多才5^8个可能可行的数dfs暴力枚举每个长度的最后一个位置的数即可#include#includeint a[4]={1,3,7,9};int ch(long asd)

2015-04-13 11:05:37 317

原创 文件比较函数

#include using namespace std;int main(){ FILE *fp1=NULL,*fp2=NULL; fp1=fopen("F:\\TestFiles\\B-small-attempt2_2.out","r"); fp2=fopen("F:\\TestFiles\\B-small-attempt2.out","r"); if(!

2015-04-11 13:01:36 522

原创 Trie树,字典树,前缀树

//trie树,字典树,前缀树,,都是同一颗树,哈希树的变种题目链接常用于文本的词频统计它的特点就是,空间占用小,查询快它的存储方式如下图所示对于从树的根节点走到每一个黑色节点所经过的路径,如果将路径上的字母都连起来的话,就都对应着词典中的一个单词trie树,分别有插入,查询和删除3种操作,插入时,需要把经过的每个节点的所存的num值

2015-04-08 21:27:29 495

原创 Manacher 算法

题目连接这是一个非常高效的代码,而且代码很简洁漂亮,简单对于寻找最长的回文子串来说,先讨论讨论一般的算法是什么样的一般来说,我们都会枚举回文子串的中点,然后再往两边找,当然对于偶数的子串和奇数子串肯定是有所不同的,下面讲的manacher算法也脱离不了这个模式,只是它省去很多不必要的计算而已,还是会继承上一种算法的基本思想首先我们可以发现,当一个已经知道是回文子串的串而言,对于以该

2015-04-07 22:10:26 357

原创 关于怎么计算出程序所需的时间

在程序设计竞赛时,常常需要对算法的复杂度进行估计,但是有时候,估计的并不准确,那么怎么办呢当然就是测试一组实际足够复杂的数据看看程序大概要花多少时间嘛这个时候就需要程序有个计时功能了这里关键需要用到 time.h 里的计时函数 clock(),注意这个函数是返回从运行开始到结束的所需时间,所以待会你会看到我们需要2个值,有时候自己测试的时候,那个输入的时间我们是需要减去的==

2015-04-07 18:10:21 1199

原创 kmp匹配算法

在讲解kmp算法之前,先讨论下一般的模式匹配算法先看下代码int index(string s,string t,int pos){ for (int i=pos;i<s.length()&&i+t.length()<=s.length();i++){ int flag=1; for (int j=0;j<t.length();j++){ if (s[i+j]!=t[

2015-04-04 15:20:51 511

原创 数据结构基本结构简介

开此文章简要目目的说明本蒻,以前就学了那么一点点数据结构现在大二了,学校要开始学数据结构了于是我也就开始补了罗边学边写写文章,讲下自己的心得体会罗~本文长期更新,主要用于写该目录下自己的原创文章,和整理网上大牛的文章的目录安排和一些基本的数据结构文章。。。

2015-04-04 11:58:51 413

原创 poj 1569 Myacm Triangles

通过面积,,来判断是否在三角行内,,//allblue All Rights Reserved//.....#include #include #include #include #include #include #include #include #include #include #include #include #include #include us

2015-03-27 09:27:40 369

原创 poj 2624 4th Point

#include #include #define eps 1e-6#define PI acos(-1)#define INF 1<<30struct Pnt{ double x,y; Pnt(){}; Pnt(double a,double b){ x=a;y=b; } friend Pnt operator - (const Pnt a,const Pnt b)

2015-03-25 15:44:51 671

原创 zoj 1489 2^x mod n = 1

题目大意:给定一个n,求出最小的x满足2^x%n==1,如过存在就输出x不存在就输出?首先这题我们可以很直观的看出,n若为偶数,则必定不存在,因为2^x必定为偶数,偶数对偶数取余,不可能为奇数那么接下来就只用看n为奇数的情况了,其实n为奇数的时候一定存在,现在给出证明根据鸽巢原理,可知一定存在同余的情况假设2^x2>2^x1,且同余数,则有(2^x2-2^x1)%n==02^x

2015-03-20 20:17:19 627

原创 zoj 1524 Supermarket

给定一个表单要求顺序购买,求最小的花费d[i][j]:=在前j个商家购买前i件物品的最小花费d[i][j]=min(d[i][j-1],d[i-1][j-1]+price[j]);其中第j个厂商卖的是第i件物品滚动数组优化空间

2015-03-11 20:24:02 342

原创 zoj 1425 Crossed Matchings

d[i][j]:=第一行的前i个与第二行的前j个匹配的最大值d[i][j]:=max(d[i-1][j],d[i][j-1],d[s1-1][s2-1]+2)1a[s1]==b[j],a[i]==b[s2],a[i]!=b[j]#include using namespace std;int main(){ int m; scanf("%d",&m); while(m-

2015-03-11 17:13:01 471

原创 zoj 1454 Employment Planning

d[i][j]:=第i个月雇佣j名工人的最小开支#include using namespace std;int h,s,f;int dd(int data){ if (data==0) return 0; if (data<0) return -f*data; if (data>0) return h*data; }int main(){ int n;

2015-03-10 20:06:40 321

原创 zoj 1276 Optimal Array Multiplication Sequence

dp,经典问题了注意乘号两边都有空格#include using namespace std;struct node{ int l,r;};node m[15];int n;int d[15][15];int r[15][15];int dp(int i,int j){ if (d[i][j]>0) return d[i][j]; if (i==j) ret

2015-03-07 15:19:32 361

原创 zoj 1366 Cash Machine

背包问题,二进制分割#include using namespace std;int main(){ int crase,nn; while(~scanf("%d%d",&crase,&nn)){ int dd[10005]; int num=0; for (int i=0;i<nn;i++){ int n,d; scanf("%d%d",&n,&d); i

2015-03-07 13:48:52 461

原创 zoj 1503 One Person "The Price is Right"

题目大意:给出g次选择机会,l次选择可以大于目标值,问最大可以选择的范围是多少d[i][j]:=还剩下i次选择,其中j次可以大于目标值的机会的最大选择范围可知,当下次随便选第k个值时,左边的1到k-1应该要等于d[i-1][j-1],k+1到n应该等于d[i-1][j]d[i][j]=d[i-1][j-1]+d[i-1][j-1]+1;#include using namespa

2015-03-06 13:17:29 407

原创 zoj 1905 Power Strings

#include using namespace std;char a[1000005];int len;int check(int lens){ for (int i=0;i<len;i+=lens){ for (int s=0;s<lens;s++){ if (a[s]-a[s+i]!=0){ return 0; } } } return 1;}

2015-01-28 22:20:29 376

原创 zoj 1178 Booklet Printing

之所以这题要写博客,那是因为这题真是坑出翔要不是我眼尖不知道又要wa多少次了你能想象back前比front多了一个空格吗?为此我找了好久的错#include using namespace std;struct sheet{ int front1,front2; int back1,back2;};int main(){ int n; while

2015-01-27 20:33:00 514

原创 zoj 1159 487-3279

简单字符串处理,wa了十几次后发现是自己最后的空格格式控制出了错,晕tmd,不管wa了多少次,我也一定要ac#include using namespace std;string dd[1000];void init(){ dd['1']="1";dd['0']="0"; dd['2']=dd['A']=dd['B']=dd['C']="2"; dd['3']=dd['D']

2015-01-26 12:55:54 375

原创 zoj 1788 Quad Trees

题意:对于一个0,1矩阵,如果该矩阵全都是一种颜色,那么就在树上表示为(0,1)or(0,0)第二个值看对应区域的颜色是0还是1了,如果颜色不同就在树上标记为1,并且继续细分直到该区域颜色全都相同为止,分法就是把当前区域平均分成4份,如图所示。求,对于的树的从上倒下,把数据写成一排,如题目图的树,每层分别为,1,001011,000110000000101,00010001,连接在一块就成了一

2015-01-24 16:31:51 1308

原创 zoj 1738 Lagrange's Four-Square Theoremdon

动态规划d[s]:组成s值的方法数d[s]+=d[s-i*i]#includeusing namespace std;#define N 40000int main(){ int n; int d[1<<16][5]; memset(d,0,sizeof(d)); d[0][0]=1; for(int i=1;i*i<N;i++) for(int j=1;j<

2015-01-24 16:22:33 408

原创 zoj 1520 Duty Free Shop

题意:Pedro有2种巧克力分别有m块和 l块,现在他有n个巧克力盒子,他希望把这n个盒子全都填满,要求每种盒子中只能包含有一种巧克力,巧克力可以有剩余,如果能填满,就输出第一种巧克力用了多少个盒子,并且输出盒子的序号,如果不能就输出Impossible to distribute0,1背包m[s]:表示s这个数能否被填满m[s]=m[s]|m[s-d[i]]求出第一种巧克力最多能

2015-01-24 16:18:21 490

原创 zoj 1629 Counting Triangles

可以轻易的知道以某个小三角行为顶点的三角形的个数,然后再求和即可#include using namespace std;int main(){ int n; while(scanf("%d",&n)!=EOF){ int sum=0; for (int i=1;i<=n;i++){ sum+=i*(n-i+1); } for (int i=1;i<n;i++)

2015-01-22 21:06:10 330

原创 zoj 1733 Common Subsequence

最长公共子串#include using namespace std;char a[1005],b[1005];int d[1005][1005];int main(){ while(scanf("%s%s",a,b)!=EOF){ int len1=strlen(a); int len2=strlen(b); memset(d,0,sizeof(d)); for

2015-01-22 21:02:17 388

原创 zoj 1713 Haiku Review

水题,但是我从别人的博客那里学来了新的读入方式,可以简化操作#include using namespace std;int is(char c){ switch (c) { case 'a':return 1; case 'e':return 1; case 'i':return 1; case 'o':r

2015-01-22 21:00:26 514

原创 zoj 1666 Square Coins

d[s]:凑齐s值的方法数d[s]=sum(d[s-i*i])1=#include using namespace std;int main(){ int n; int d[305]; memset(d,0,sizeof(d)); d[0]=1; for (int i=1;i<=17;i++){ for (int s=i*i;s<=300;s++){ d[s]

2015-01-22 20:58:28 349

原创 zoj 1642 Match for Bonus

最长公共子串的变形#include using namespace std;int ch[1000];int d[2005][2005];int main(){ int n; while(scanf("%d",&n)!=EOF){ char cc;int a; memset(ch,0,sizeof(ch)); for (int i=0;i<n;i++){ /

2015-01-22 20:54:20 378

原创 zoj 1602 Multiplication Puzzle

d[i][j]:在区间a[i]~a[j]范围内能取到的最大值d[i][j]=min{d[i][k]+a[k]*a[k+1]*a[k+2]+d[k+2][j]}     i+1=#includeusing namespace std;#define maxn 105int d[maxn][maxn];int n;int a[maxn];int dp(int l,int r)

2015-01-22 20:51:53 322

原创 zoj 1539 Lot

#include using namespace std;int dfs(int n){ if (n<=5){ if (n<3) return 0; if (n==3) return 1; if (n==4) return 0; if (n==5) return 1; } if (n&1){ return dfs(n/2)+dfs(n/2+1); } els

2015-01-22 20:47:21 463

转载 scanf/fscanf 的%[]和%n使用方法

标准输入输出函数%[]和%n说明符的使用方法    scanf fscanf,均从第一个非空格的可显示字符开始读起!        标准输入输出函数scanf具有相对较多的转换说明符,它常常作为入门级函数出现在各种教材中。但奇怪的是,[]和n这两种都为c89/c99所规定的标准说明符却鲜少在大多数教材中出现。虽然[]和n说明符的使用频率不及其它说明符,但两者在程序设计中的作用仍然不可小视,

2015-01-22 16:13:48 409

远程控制类相关源码学习

远控源码学习

2017-05-26

空空如也

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

TA关注的人

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