自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Bysen32

当梦想照进现实

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

原创 POJ 3436 网络流 英文阅读题+技巧题

题目大意:3 415 0 0 0 0 1 010 0 0 0 0 1 130 0 1 2 1 1 13 0 2 1 1 1 1组成acm电脑有3个零件,4种机器;1号机器能产生15次,需要的3个零件:完全不需要(0:不需要,1:一定要,2:可要可不要);产出材料:产出一个单位的2号零件(1:生产该材料,0:不能生产该材料);2号机器能生产10次,不

2012-04-13 22:36:12 851

原创 HDU 2816 有趣的恶心模拟

真亏HH神犇能想出这种恶心题!而且题目描述还这么坑爹!奇偶不说清楚!#include#includeusing namespace std;char str[1111];char l1[111];char l2[111];int len;void work(){ len=strlen(str); int index[26]={21,22,23,31,32,3

2012-04-12 23:11:28 611

原创 ZOJ 2332 网络流英文阅读题

题目大意:某人有很多宝石,各种颜色和形状,该人有超能力能改变宝石,使之变化一种颜色及形状。该人要送宝石给女友,他忍受的每种形状的宝石有上限,女友忍受的每种颜色的宝石有上限。求能否使得该人送宝石给女友,使得两人都满意?思路:本来我的思路是错的。如下面第一个代码,我这么写:BF先让自己尽量忍受同形状的宝石,再将不能忍受的流向女友,当自己可以满流的时候,也就是自己完全能忍受,女友

2012-04-12 21:53:18 634

原创 POJ 3189 图论技巧题

这题的技巧就是:枚举---旋转卡壳法。题目大意:每头牛对每个谷仓有一个喜欢程度,FJ的目的就是要使得每头牛的happy值尽可能的相同,求最小的范围。这题的枚举还是很有技巧的。虽然知道怎么来滑动窗口。。 但是我的网络流EK算法太不给力了!没办法.. 去学习了下SAP勉强把这题切掉了= =#include#include#include#include#define MN

2012-04-12 16:13:49 499

原创 POJ 1149 好题!

网络流好题:这道题目的大意是这样的:有 M 个猪圈(M ≤ 1000),每个猪圈里初始时有若干头猪。一开始所有猪圈都是关闭的。依次来了 N 个顾客(N ≤ 100),每个顾客分别会打开指定的几个猪圈,从中买若干头猪。每个顾客分别都有他能够买的数量的上限。每个顾客走后,他打开的那些猪圈中的猪,都可以被任意地调换到其它开着的猪圈里,然后所有猪圈重新关上。问总共最

2012-04-12 15:54:35 632

原创 POJ 2455 网络流英文阅读题

老戴找...这题还是很有意思的.. 哈哈~也想了我蛮久的... 但是这题的无向边感觉有点不对劲啊!这也能AC??我都不相信啊!!网络流的边还是不能轻易覆盖的!#include#include#include#include#define MN 222#define INF 1111111using namespace std;struct EDGE{ int

2012-04-10 22:29:08 523

原创 POJ 2112 网络流英文阅读题

这题的题意佷坑爹啊。。。虽说是很明显的二分题。说有K个奶牛机编号1-K,有C头奶牛,编号k+1-K+C这样形成了K+C阶的距离矩阵。每台奶牛机可以处理T只奶牛开始呢... 只把机器和奶牛连了边,机器与奶牛的边全部去掉了... 无限WA...后来想.. 如果流通过机器之间传到奶牛呢= =!!!有剩余流就可以做到了!顿悟,狂敲,交... 无限WA....后来看了看题,机器之间的流不

2012-04-10 22:26:26 525

原创 POJ 1459 基本输入题&&英文阅读题

so.... 输入考验功底啊... 还好,没难倒我~哇哈哈哈~#include#include#include#define MN 111using namespace std;int n,f,e,d,ans,s,t;int map[MN][MN],que[MN],a[MN],vis[MN],pre[MN];void setG(){ int i,u,v,c; a

2012-04-10 09:56:46 494

原创 POJ 3281 最大流水题

昨晚躺在床上想这题怎么构图呢....开始的时候想的是源点到牛的流量为2(限制牛只能吃1喝1)。再而牛与吃喝直接连边,容量为1.吃喝拆开成两个两两直接连边,容量为1,保证每个吃喝只有一次。再末端吃喝连边到汇点。这种想当然的思路我竟然开始敲了代码!!真是... 上面的构图有明显的错误,因为牛可以吃2个或者喝2个,这是我的图不能控制的。转而想... 将每头牛拆成3只,一头容量限制容量为2,一

2012-04-10 08:29:10 599

原创 POJ 1698 网络流最大流水题

赤裸裸的网络最大流...建图还是没有什么技巧的... 继续水...#include#include#include#define MN 444using namespace std;int s,t,ans,w[8],Sum;int map[MN][MN],vis[MN],a[MN],pre[MN],que[MN];void setG(){ Sum=0;s=0;ans=

2012-04-09 20:33:37 638

原创 POJ 1274 网络流最大匹配

用的FF算法,裸实现516ms++,记得当年的二分图16ms啊....这里发两个模板吧,网络流才初学.. 弱爆了....#include#include#include#define MN 422using namespace std;struct edge{ int f,c; }g[MN][MN];struct node{ int l,p,a; }list[MN];

2012-04-09 00:02:32 635

原创 POJ 1273 最大流模板题

看了三天的网络流,总算是切掉一道题了... 还是要安静下来耐心的,自信的切题啊~~嘿嘿~#include#include#includeusing namespace std;struct edge{ int f,c; }g[222][222];struct node{ int l,p,a; }list[222];int N,M,ans,s,t;void init()

2012-04-08 22:26:09 505

原创 HDU 2429 WordGame 等比矩阵和

题目大意:从字典中选择N个单词,然后确定开始单词S,结束单词T。A,B两个人轮流选择单词,在K次内,先手A从开始单词S出发回到结束单词T的次数。用单词作为状态转换,用map映射。当a单词的最后一个字母与b单词的最前一个字母相同时,则a状态可以转化至b状态matrix[a][b]=1;接下来要处理的就是K次内这个问题了。我们可以很简单的得到如下的M+M^3+M^5+M^7+M

2012-04-04 22:31:16 568

原创 ZOJ 2853 矩阵乘法

很神奇的4720msAC....看来double 不是一般的慢啊!!哎呀呀~#include#include#include#include#define eps 1e-5using namespace std;struct node{ double m[222][222];}res,temp,mod;int n,m,t;node matriXmult( no

2012-04-04 11:58:52 739

原创 HDU 2232 水矩阵

发现只要有思路还是比较好切题的。相信大家不出意外,对于下面这个矩阵还是好构造的。第0排代表第0号格子的机器人,可以到达个格子,可见2号格子是不可达的。这个矩阵的N次幂,就是机器人走多少步形成的局面。上面矩阵的2次幂:可以得到上面的矩阵,这是什么意思呢?第0排的3表示0号格子的机器人通过2步有3种方法到0号格子。哪三种?0-0-0,0-1-0,0-3-0。就这

2012-04-04 10:51:10 747

原创 POJ 2440 矩阵乘法

请看下面的转换图:其中红线表示非法转换,蓝线表示合法转换。这样就可以构建4x4的矩阵了。接下来快速幂...ac。#include#include#includeusing namespace std;struct node{ int m[4][4]; }res,temp,mod;int n;node matriXmult( node a,node b ){

2012-04-03 23:07:04 782

原创 HDU 2238

很少有人过的神题啊... 其实也不难啦。。用dfs构建矩阵... 然后矩阵N次幂就好了。因为很多机器人都是一样的,注意状态转移只有8种。  1      2     3     4     5     6      7|11| |20| |21| |21| |22| |30| |31| |40||11| |02| |10| |01| |00| |01| |00| |00|

2012-04-03 21:49:36 703

原创 HDU 2276 小小矩阵乘法

这些天刷了蛮多的矩阵题,感觉对思维的训练还是很大的,一向不喜欢做题的我这几天被惊奇郭虐菜了...果断跟进做题!题目大意:有一排数列用0,1构成,若当前数的左边为1,则当前数改变状态这样转一圈。为一次。那我们就可以这么构造矩阵了。先看这个矩阵:|010||001|=B|100|用A=[101]去乘,可见第一列的1与A最后的1有关系,也就是左边为1状态改变的意思。

2012-04-03 21:39:55 711

原创 POJ 1977 构造矩阵乘法

题目大意:有N个人,手上有Ai个标记,该人可以向指定的K个人添加标记(自己标记不会少)。当该人手上有奇数个标记的时候,拥有投票权。问,最后有多少人手中的票为奇数个。思路。以输入样例一为例:初始状态矩阵:A=|210|状态转移矩阵为:     |111|B=|001|     |100|于是乎第一轮结束后的状态:(A*B+A)第二轮结束后的状态为:

2012-04-01 15:04:46 604

原创 POJ 3420 构造矩阵乘法

很有趣的题哈~很久以前看了matrix67大牛的相关博文,对这个题有点印象,但却不知道怎么做。昨晚睡前构思了一下,还到老胡电脑上试敲,当然得出来的答案怪怪的。一直记得是从0->0的方案,可是输出矩阵得出的却是15->15的方案....下面说一下思路吧:我们假定给出的4*N的瓷砖为第N-2排放满有如下15种情况。0代表没有瓷砖,1代表有瓷砖第N排     0000   000

2012-04-01 08:48:52 1074

原创 POJ 3735 构造矩阵乘法

看来还是要吧这个矩阵乘法理解透啊!我的题解大体和网上的一样吧。没有什么可取性。对于矩阵,我们熟悉的操作有两种,交换与置零。我们有初始的矩阵T[ A,B,C,D ];交换矩阵为                       | 1 0 0 0 |       [ A,B,C,D ]  X  | 0 0 1 0 |  =>[ A C B D ]

2012-03-31 22:28:28 557

原创 HDU 2243

这题WA了.. 实在找不出错,CP了很多AC代码,大数据都是一样的。哪位大神行行好帮我看看哪错了吧.....#include#include#include#define kind 26#define MAX 100using namespace std;struct node{ int fail,flag; int next[kind]; vo

2012-03-30 18:47:29 510

原创 POJ 3233 等比矩阵的前N项和

第二次做这个题了,犹豫再三还是交了,果断秒A,嘿嘿~感觉不错啊~下面说一下思路:对原矩阵A构造一个2n*2n的方阵。E为单位矩阵,0为0矩阵。| A E || 0 E |这个矩阵的平方为:| A^2 A+E || 0      E      |右上角的A+E就是A^1+A^0就是前两项的和。通过这个构造矩阵的K次方,右上角的N阶矩阵就是前K项和,这前K项其实是0

2012-03-30 13:50:25 735

原创 POJ 2778 AC自动机+矩阵乘法

这题要写的东西很多,以至于我不知道从哪里开始写了= =。总之要正确理解AC自动机中的状态转移。时间比较晚了,早点回去... 我要注意的地方就是正确理解fail指针的作用。在失配时,fail指针如果走向的是一个病毒节点那么改节点的转移也是病毒节点。不能转移!另外要注意的就是mod十分的耗时间啊!两次TLE都是出于此....总之是一道好题#include#include#inc

2012-03-28 22:12:19 596

原创 初等字符串匹配专题小结[KMP][Manacher][Tire Tree][AC Automation]

刷了3天的字符串匹配题。为了下面继续切题,小的先小结一些。字符串匹配的最基础算法是枚举(n^2)。高深一点的是KMP。KMP在数据结构课上学过,由于老师只是负责教学,不负责解答他不懂的问题,于是KMP就这么被我搁置一边了。ACM这么多年了,一直不懂这些基础的算法,实在有愧与心。于是乎专程学习了一下KMP。先说说KMP的主要思想。KMP用于模式串的匹配。下面看看一个字符串

2012-03-24 22:28:42 809

原创 HDU 3065 AC自动机模板题

最后一道模板题。下面把AC自动机小结一下。请看新文章.....这题如果只开26的next的数组的话。在查询大串时,要注意的if( s[i] )当不符合条件时,不能浅显的continue,而要把p=root;不然..... 那些在A-Z之外的字符会直接略去,相当于大串中没有A-Z之外的字符,结果可想而知!!#include#include#include#define MA

2012-03-24 21:19:58 475

原创 HDU 2896 AC自动机

第二道AC自动机。和前面那道没有什么不同,都是基础的AC自动机模板。题目大意:有一些病毒序列,在主串中找到所有的病毒种类即可。求出每个网站携带的病毒种类。最后输出有多少个病毒网站。还好输出不坑爹!#include#include#include#define MAX 128using namespace std;struct node{ int id

2012-03-24 18:44:17 418

原创 HDU 2222 AC_Automation 第一道AC自动机

整整一天半都在弄AC自动机,我的第一道AC自动机。DEBUG N久竟然是题目意思读错了!题目大意:给定N个单词,和一个模式串,求在单词模式串中出现的次数。解题思路,先构造字典树,再对字典树进行AC自动机。我DEBUG N久.... 原来AC自动机都是构造的对的!题目要注意的地方。1.单词可以重复出现。2.只是问最多有多少个单词出现在模式串中,最多为单词数N个。继

2012-03-24 17:02:46 453

原创 HDU 1671 轻轻松松字典树

这题的难度和前一篇的裸模版差不多。题目大意就是看字符串是否是其他字符串的前缀,其实就是在字典树中查看最后一个节点的count数是否为1.若为1,则代表该字符串唯一。若不唯一,则代表该字符串被其他字符串完全包含,不就是前缀么!水过。。。#include#include#include#define MAX 10using namespace std;c

2012-03-23 12:00:19 452

原创 POJ 2001 字典树裸模版

再做几个字典树就去AC自动机...... 加油!用模板感觉不错啊!!细节细节!!#include#include#include#define MAX 26using namespace std;struct TireNode{ int nCount; TireNode *next[MAX];};TireNode Memeroy[11

2012-03-23 09:52:55 559

原创 HDU 1251 字典树裸模板

以前也写过字典树,觉得自己写得很不好,很水很弱,虽然也ac了。网上看了下别人的模板,果断学习之.......#include#include#include#define MAX 26 using namespace std;struct TrieNode{ int nCount; TrieNode *next[MAX];};TrieNod

2012-03-23 08:59:31 543

原创 HDU 3746 Cyclic Nacklace KMP的性质应用

前面做过类似的题了,所以切出这个来也很简单。关于KMP的小应用,KMP的next数组的作用就是用来记录前面的串的状态的。可以用Len-next[Len]得出当前点的循环节。。。这个还是很好理解的。好了KMP在切掉POJ的就在此告一段落了。。。。#includeusing namespace std;char t[111111];int next[111111];int

2012-03-23 01:17:07 458

原创 HDU 3336 KMP+DP

匹配用的KMP,另外+DP存储状态;DP数组f[i]代表当前前缀可以匹配的次数。f[i]=f[next[i]]+1;为next[i]--i的的前缀的数量。计算总和即可。#includeusing namespace std;char t[222222];int next[222222],f[222222]; int L;void setNext(){

2012-03-22 22:03:53 463

原创 HDU 2087 水KMP

KMP...#include#include#include#includeusing namespace std;char s[1111],t[1111];int next[1111];int lenS,lenT;void setNext(){ int j=1,k=0; while( j<=lenT ) {

2012-03-22 21:55:10 520

原创 HDU 1711 裸KMP

终于会KMP了... 哇哈哈哈~#includeusing namespace std;int T,N,M;int next[11111];int s[1111111],t[11111];void setNext(){ int j=1,k=0; while( j<=M ) { if( k==0 || t[j]==t[

2012-03-22 21:52:25 598

原创 POJ 3461 HDU 1686 赤果果的KMP

果断吃果果....不解释...#includeusing namespace std;char s[1111111],t[11111];int next[11111],lenS,lenT;int cnt;void setNext(){ int j=0,k=-1; next[0]=-1; while( j<lenT ) {

2012-03-22 21:48:36 911

原创 POJ 1961 HDU 1358 KMP的性质

题目大意:求给出串的每个前缀串的重复次数。例如aabaabaabaab;1.aa中前缀a出现2次。2.aabaab中前缀aab出现2次3.aabaabaab中前缀aab出现3次4.aabaabaabaab中前缀aab出现4次.大概就是这么个意思。这里利用了kmp中的next标记的性质。看看这个字符串下标:1  2  3  4  5 6  7   8 9  10

2012-03-22 21:41:17 516

原创 POJ 3974 最长回文 Manacher算法

容斥刷不动啊!!今天十分的邪恶加猥琐的注册了一个小号和大一的孩子们一起做题;也没有要和他们比赛的意思,只是我对算法有很多不熟悉的,所以呢....哎 我的号交几个题,小号交几个题。做都做了,不管了。晚上花了一个半小时才看懂的一个算法Manacher,专门用来做回文的....网上其他的人写得佷详细了,我还是说说自己的吧。Manacher利用了回文的性质。假设有一个回文以id为中

2012-03-22 21:21:20 696

原创 HDU 1796 How many integers can you find 容斥原理

WA了N久N久... 最后发现原来是自己有些特殊情况没有存好。一个条件读入的数据要符合(1,N)这个区间范围内....在处理的时候没有处理好,天真的没有排除,只是当有这样的数据的时候跳过.... 当然... 悲剧发生了= =无限WA.....使用容斥原理...容斥原理就不讲了..我用的位运算做的...等会儿再用dfs做一下....#include#include#i

2012-03-21 19:21:45 545

原创 HDU 2446 Shell Pyramid 二分查找

今天上午终于把最后一题D题水掉了。我的二分也算是AK了了吧。这题可以说我还是有版权的,嘿嘿~~越来越有意思了!说一下怎么做吧。听说有公式就试着自己推了一下,感觉不错呢。首先我们可以看出a1=1,a2=3,a3=6. 很显而易见的an=(1+n)*n/2;那么Sn怎么求呢???Sn=∑an=(1/2)∑(n*n+n)=0.5*(∑n*n+∑n);这样就转化为连续自然数平方

2012-03-21 09:33:47 879 1

空空如也

空空如也

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

TA关注的人

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