自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 hdu 2689 Sort it

树状数组求逆序数#include#include#include#include#includeusing namespace std;const int maxn=10100;int n;arrayc;templatevoid add(T i,T x){ while(i<=n) { c[i]+=x; i+=i&(-i);

2016-08-10 15:33:06 310

原创 hdu 2838 Cow Sorting

题意。给你n个数,让你把它排成序列。只可以相邻的2个交换。交换一次的代价为两数之和,求最小代价。先求逆序数,然后统计每个数字被用了几次。对某个位置i,如果前面比他大的有x个,那么a[i]至少要加x次 那么对于第i个位置的值为k=ans*a[i]+sum;(sum为前面比它大的数的和)#include#include#include#include#includeusing

2016-08-10 15:29:44 272

原创 hdu 5744 Keep On Movin

题意:给出,每个字符的个数,让你找,所以字符组成的回文串集合中,每个集合取最小值,然后所以的取最大值。找回文串中最小值的最大值统计 1 和 2 的个数,如 3可以为 1和2 组成。然后一次把2均分到1上,这样统计出来的就是最大值#includeint main(){ int n,k,t; scanf("%d",&t); while(t--) {

2016-07-22 08:55:45 331

原创 hdu 4300 Clairewd’s message

KMP 或扩展KMP题意,给你一个密码对应表,给你一个密码串。密码串包含明文和密文,密文在前明文在后,可能明文不完整。完整时,密文明文各一半。然后你输出完整的密码错。如密码串 qwertabcde全部翻译为明文 abcdekxvmc 我们发现,密码串的前部分正是我们需要的明文我们可以把密码串分为2个串,我们只要后面的串,如我们只需要abcde,qwert就不需要的,把翻译好

2016-07-19 19:38:00 301

原创 hdu 1081 To The Max

最大区间和题意:给你一个n*n的矩阵,找出最大和子矩阵把该行下面的每一行加到该行,每加一次,找一次。#include#include#include#include#define maxn 110using namespace std;int mp[maxn][maxn];int maxi,ans,n;void fact(int *a){ ans=0;

2016-07-18 20:01:23 318

原创 hdu 1025 Constructing Roads In JGShining's Kingdom

最长上升子序列题意:有2条线,每条线上有n个点,现在给你一些连接方式,一条线的点去连接另外一条线上的点。问这些线不交叉,最多能连多少条线#include#include#include#include#define maxn 500100using namespace std;struct tt{ int x,y;}A[maxn];struct node{

2016-07-18 14:54:48 454

原创 hdu 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活

多重背包模板题#include#include#define maxn 11000int dp[maxn];int a[maxn],b[maxn],c[maxn];int m,n;inline int Max(int i,int j){ return i>j?i:j;}void complete(int c,int v){ for(int i=c;i<=m;

2016-07-16 15:06:44 318

原创 hdu 1176 免费馅饼

把时间看成层数,可以变成数塔 如,每个点存当前时间有几个馅饼5                                             时间 04 5 6                                       时间 13 4 5 6 7                                时间 2 2 3 4 5 6

2016-07-16 11:18:00 333

原创 hdu 2870 Largest Submatrix

题意:给你n*m的字母矩阵,给你一些变换规则,w->a,b  ,y->a,c  ,x->b,c  ,z-> a,b,c.让你求最大的相同字母的构成子矩阵面积可以先把所以字母变成a,不可以变成a的变成0,然后在求最大面积,b,c 也同样求,最后求3次的最大值#include#include#include#include#include#define maxn 1010using

2016-07-15 13:58:22 265

原创 hdu 2830 Matrix Swapping II

题意:给你一个n*m的01矩阵,可以任意交换2列,求最大由1构成子矩阵面积详情见代码:#include#include#include#include#include#define maxn 1010using namespace std;int h[maxn];inline int ma(int a,int b){    return a>b?a:

2016-07-15 10:53:34 270

原创 hdu 2571 命运

下一个点,只能是由 dp[i][j]=max(dp[i-1][j],dp[i][j-1],dp[i][k])+map[i][j]得到,j%k==0;#include#include#include#define maxn 1010#define inf -123456int dp[maxn][maxn];int mp[maxn][maxn];inline int max(int

2016-07-13 15:32:02 323

原创 hdu 1505 City Game dp

给你一个矩阵,让你找最大的矩形面积,F代表3,R代表 0,。输入用%s 输入#include#include#include#include#define maxn 1010using namespace std;int ma[maxn][maxn];int h[maxn];int fact(int m){ int a,sum=0; stackq;

2016-07-13 10:20:50 306

原创 hdu 1503 Advanced Fruits

最长公共子序列给你2个字符串,找出一个一个最短的字符串,同时包含这2个字符串。#include#include#include#include#define maxn 1100using namespace std;int dp[maxn][maxn];int vis[maxn][maxn];char s1[maxn],s2[maxn];void fact(int i,i

2016-07-11 15:51:28 344

原创 hdu 2896 病毒侵袭 AC自动机

病毒侵袭Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 20142    Accepted Submission(s): 4942Problem Description当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地

2016-07-09 09:12:03 343

原创 hdu 2222 Keywords Search 经典AC自动机入门题

刚学的AC自动机,代码写的不是很好,还是有一定的收获可以参考一下这个博客http://www.cppblog.com/mythit/archive/2009/04/21/80633.html代码:#include#include#include#define maxn 1001000int cur;struct node{ int fail; int n

2016-07-08 20:55:10 322

原创 hdu 4099 Revenge of Fibonacci 字典树+斐波拉契数列数列

字典树应用题意:给你N个数,让你找出是不是前100000个斐波拉契数列的前40位,如果是则输出下标最小的那个斐波拉契数列数列的下标。思路:求斐波拉契数列数列的前100000项的前40位。我们只需要计算前55位的和就行了,因为我们只要前40位,计算55位便可以消除误差这个也是最近才知道的结论,要保留前n位,那么我们就要计算n+m为,m一定大时,产生的进位误差将消失 如:133+2

2016-07-08 08:36:03 614

原创 hdu 4287 Intelligent IME STL应用

STL的map容器应用#include#include#include#include#include#includeusing namespace std;mapmp;char str[6000][10];char ss[28]="22233344455566677778889999";int main(){ int n,m; int t; sc

2016-07-07 16:02:30 366

原创 poj 2001 Shortest Prefixes 字典树

字典树查询单词题意给你一些字符串,找出能够唯一标识这个字符串的最短前缀思路:先把字符串全部存进字典树,依次查找,依次输出,如果该字符出现的次数为1,则停止输出详情见代码:#include#include#include#define maxn 110000char str[maxn][40];int vis[maxn];int cur=1;struct node{

2016-07-07 14:55:10 321

原创 poj 3630 Phone List 字典树统计字符串个数

字典树应用题意:给你一些数字串,让你找一个数字串是否为另一个数字串的前缀思路:把所以的数字串存入字典树中,然后查找所以的数字串,如果该串出现过两次以上,则是另外一个数字串的前缀#include#include#include#define maxn 100010int cur=1;char str[maxn][20];int vis[maxn];struct node{

2016-07-07 12:31:53 431

原创 hdu 1075 What Are You Talking About STL的使用

STL 的map容器使用题意:给你一些单词的对应表,然后给你一些句子,输出句子,并把句子中与单词对应表中相对应的单词输出#include#include#include#include#include#includeusing namespace std;map mp;int main(){ string s1,s2; map::iterator it

2016-07-07 11:13:00 301

原创 hdu 1305 Immediate Decodability 字典树

字典树统计字符串个数题意:给你一些字母的编码,全部为01串,让你判断一个01串是不是另外一个01串的前缀。思路:把01全部存入字典树里面,在依次查找这些字符串,如果这个字符串出现的次数大于等于两次,就不可以快速解码了详情见代码:#include#include#include#define maxn 100010int cur=1;char str[maxn][12]

2016-07-07 09:03:58 352

原创 hdu 1247 Hat’s Words 字典树统计单词

字典树统计单词题意:给你n个单词,让你找出由其它2个单词构成的单词,并按字典序输出。注意输入时已经是按字典序输入的。思路:在trie树中标记每个单词的结尾,查找时把单词分成两部分分别进行查找详情见代码#include#include#include#define maxn 511000int cur=1;char str[50005][30];int vis[500

2016-07-06 20:35:35 483

原创 hdu 1394 Minimum Inversion Number 线段树求逆序数

线段树求逆序数题意:给你一个串数字,数字串第一个依次循环放到最后一个,求每个数字串的逆序数的最小值。如如:0 3 4 1 2 逆序数:83 4 1 2 0  逆序数:84 1 2 0 3  逆序数:61 2 0 3 4  逆序数:22 0 3 4 1  逆序数:4所以最小逆序数为2

2016-07-06 08:45:05 410

原创 hdu 1968 Just a Hook 线段树区间更新

线段树区间更新题意:胖子有一条大金属棒,大金属棒由n个小金属棒组成,每次操作将一个区间的小金属棒变成金银铜三者之一,最后取出所有区间的金属棒总价值,注意,金属棒的初始值1思路:每次把该区间内的值更新为该值,并更新父节点#include#include#include#include#define maxn 100100using namespace std;int sto[

2016-07-05 20:07:29 412

原创 hdu 1166 敌兵布阵

线段树的区间更新详情见代码:#include#include#include#include#define maxn 100100using namespace std;int sto[maxn<<1];int up[maxn<<1];void Insert(int left,int right,int o){ up[o]=0; if(left==righ

2016-07-05 18:54:52 255

原创 hdu 1754 I Hate It

线段树的单点更新详情请见代码:#include#include#include#include#include#define maxn 200100using namespace std;int sto[maxn<<2];int up[maxn<<2];void Insert(int left,int right,int o){ up[o]=0; if(

2016-07-05 18:46:29 291

原创 poj 2406 Power Strings

字符串:KMP题意:给你一个字符串,让你找这个字符串的最小循环节,并输出有多少个循环节利用next数组的性质求解#include#include#include#define maxn 1000010char str[maxn];int next[maxn];int len;void getnext(){ int i=0; int j=-1;

2016-07-04 11:24:29 276

原创 hdu 1711 Number Sequence

题意:给你2串数字,找第二串数字是否在第一串数字中出现,如果出现,输出第一个位置,否则输出-1KMP应用#include#include#include#define maxn 1000010int a[maxn],b[maxn];int next[maxn];int n,m;int k;void getnext(){ int i=0,j=-1; next

2016-07-02 16:46:09 245

原创 hdu 1358 Period

题意:一个字符串,从字符串的第二个开始,看前面是否循环串,是就输出此时的位置,循环串的周期,周期必须大于1next数组,len-next[i]为此字符串的最小循环节。另外,如果有len%(len-next[i])=0,此字符串的最小周期就为 len/(len-next[i]).#include#include#include#define maxn 1000100int nex

2016-07-02 15:57:27 255

原创 hdu 4763 Theme Section

题意是在一个字符串中找出一个前缀一个后缀和一个中间的子串,并且这三个字符串相同,不能有重叠,这个串最长比如 abxxabxxab 最长串为 ab利用next 数组的性质,假设最长串为为  k=next[len],  (len为给出字符串长度)#include#include#include#define maxn 1000015int next[maxn];char str[ma

2016-07-02 15:37:03 285

空空如也

空空如也

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

TA关注的人

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