自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小马的博客

最穷不过要饭,不死终会出头

  • 博客(69)
  • 资源 (6)
  • 收藏
  • 关注

原创 HDU--4324--Trouble

//很考想法啊,把五个区间分成200*200,200*200,200来搞。注意:过的时候要用__int64为来过(输出:%I64d)AC代码:#include#include#includeusing namespace std;#define N 205__int64 num[6][N];__int64 s0[N*N];__int64 s1[N*N];__int64

2015-07-31 03:45:19 579

原创 HDU-5090--Game with Pearls

//题目大意:    Tom和Jerry做游戏,给定N个管子,每个管子上面有一定数目的珍珠。    现在Jerry开始在管子上面再放一些珍珠,放上的珍珠数必须是K的倍数,可以不放。    最后将管子排序,如果可以做到第i个管子上面有i个珍珠,则Jerry胜出,反之Tom胜出。解题思路:    贪心:(15ms)       将N个管子按管子中

2015-07-31 02:25:38 380

原创 HDU--2203-亲和串

//该题要求一个串循环后是否包含另外一个串,其实只要将母串重复一次再进行KMP匹配就行了,因为在重复母串的过程中,其实据已经将循环后的所有可能都列举出来了,比如串 "ABCD" 重复后为  "ABCDABCD" 在这个串中 "BCDA" , "CDAB" 以及 "DABC" 都相继出现了。用该种方法求解的过程中还应注意当子串长度超过母串时不进行匹配,因为那样可能输出错误的判断,比如上例中子串为 "

2015-07-30 19:50:13 372

原创 HDU-1867-A + B for you again

//这是一道字符串匹配的问题(KMP),我们先把它们按照题目要求,求出最大匹配数,然后比较,输出最大的,相同则输出字典数小的//AC代码:#include#include#define N 100005int next[N];char s[N];char t[N];void get_next(char *s,char *t){ int len2=strlen(

2015-07-29 09:54:08 495

原创 HDU 1950-最长上升子序的nlogn算法

AC代码:这题目是经典的DP题目,也可叫作LIS(Longest Increasing Subsequence)最长上升子序列 或者 最长不下降子序列。很基础的题目。但是注意的是此题用传统的n^2算法会超时。 A.O(n^2)算法分析如下:(a[1]...a[n] 存的都是输入的数)1、对于a[n]来说,由于它是最后一个数,所以当从a[n]开始查找时,只存在

2015-07-28 23:34:52 381

原创 HDU-5310 Souvenir

//因为学校断网,当时没做,才去做,居然发现是水题//AC代码:#include#includeusing namespace std;int main(){ int n,m,p,q; int x; scanf("%d",&x); while(x--) { scanf("%d%d%d%d",&n,&m,&p,&q);

2015-07-28 19:44:17 335

原创 POJ -2503 Babelfish

//以后对于string就用cin和cout输入输出搞定//AC代码:#include#include#includeusing namespace std;#includemapstring,string>M;int main(){ char a[30]; char b[15]; char c[15]; char d[15]; w

2015-07-25 16:16:53 331

原创 HDU 1671

AC代码:#include#include#include#includeusing namespace std;#define N 100010int cur;struct node{ int ans; int next[10]; void init() { ans=0; memset(next,-1

2015-07-25 14:51:43 338

原创 HDU -1251-统计难题

//注意,节点有很多,数组开到100w最好,否则其他可能会runtime//AC代码:#include#include#include#includeusing namespace std;int m,n;int cur=1;#define N 1000000struct node{ int ans; int next[35]; void in

2015-07-25 11:14:24 317

原创 HDU_1004 balloons

//这题我用一般的方法过得,暂时还不晓得map和哈希咋过,有空学学//AC代码:#include#include#define max 1005char a[max][max];int main(){ int n; while(scanf("%d",&n)!=EOF&&n) { int i,j; for(i=0;in;i

2015-07-24 21:20:51 289

原创 ZOJ_1789The Suspects

//这是一道并查集的题,很简单,不多说//AC代码:#include#define max 30005int p[max];int num[max];int find(int k){ if(p[k]!=k) { p[k]=find(p[k]); } return p[k];}int bing(int x,int y){

2015-07-24 13:25:56 490

原创 ZOJ-2833Friendship(简单并查集)

//查找这个人又多少个朋友,必须从他的祖先开始查,num[find(a)];AC代码:#include#define max 100005int p[max];int num[max];char s[max];int a,b;int find(int k){ if(p[k]!=k) { p[k]=find(p[k]); nu

2015-07-24 11:24:14 561

原创 HDU-2612-Find a way

//这题坑了我一晚上,用C++交不行,结果用C或者G++却过来,哎。。。。这题让我明白,如果用BFS,要保存到达“@”点的步数,bfs一直搜索,直到没发走才停。让后在主函数中进行输出比较。。。AC代码:#include#include#define max 205char map[max][max];int vis[max][max];int dir[4][2]= {{1

2015-07-23 20:54:14 526

原创 ZOJ_1091-Knight Moves

//这是一道我曾经不会做的题,现在还是能做了,特此记录一下//AC代码:#include#include#define max 50char a[max][max];int vis[max][max];int dir[8][2]={{2,1},{-2,1},{2,-1},{-2,-1},{1,2},{1,-2},{-1,2},{-1,-2}};struct node{

2015-07-23 16:03:21 410

原创 ZOJ-1002 Fire Net

//这道题太经典了,刚开始还不晓得怎么做,然后看看解题报告,秒懂。。。。。,很难想到的就是以k从1到n*n递增,k/n表示x轴坐标,k%n表示y轴坐标。AC代码:#include#include#define max 12char map[max][max];int n,sum;int can(int x,int y){ int i; for(i=x-1;i

2015-07-23 15:27:42 813

原创 ZOJ_3643Keep Deleting

//这题做了几次了,太金典了。AC代码:#include#include#define max 512005char s[max];char t[max];int next[max];int len1;int len2;int pre[max];char a[max];void get_next(){ int i=0; int j=-1;

2015-07-23 10:54:31 372

原创 HDU_3746Cyclic Nacklace

//题意:为你最少加几个字母(字母全为小写),可以让整个字符存在循环(最少两个循环)思路:先求出最少循环节:len-next[len].在用kmp算法求出next数组后,len-next[len]的值就是该字符串的最小循环节,该字符串的其他循环节都是它的倍数,如果len恰好是len-next[len]的整数倍,那么该字符串就是个power string;如果next[len]为0,表示该字符串

2015-07-23 10:07:17 275

原创 HDU_2594 Simpsons’ Hidden Talents

AC代码:#include#include#define max 50005char s[max];char t[max];int next[max];int len1;int len2;void get_next(){ int i=0; int j=-1; next[0]=-1; while(ilen1) {

2015-07-22 20:50:18 264

原创 POJ_3984经典迷宫问题

//记录路径//AC代码:#include#include#define max 10int map[max][max];int vis[max][max];int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}};struct node{ int x,y;}queue[max*max];int a[max*max];int b[m

2015-07-22 17:54:50 1976

原创 POJ 1961 Period

//求最长循环周期:i/(i-next[i]);AC代码:#include#include#define max 1000005char t[max];int next[max];int len;void get_next(){ int i=0; int j=-1; next[0]=-1; while(ilen) {

2015-07-22 16:48:13 240

原创 POJ-2406

//经典的模板题,求最多循环次数。AC代码:#include#include#define max 1000005char t[max];int next[max];int len;void get_next(){ int i=0; int j=-1; next[0]=-1; while(ilen) { if(j==

2015-07-22 16:11:00 510

原创 POJ-2752 Seek the Name, Seek the Fame

//题目考的是对KMP失配指针的理解,当最后一位失配(即'\0'那里)时,指针会移动到前缀对应匹配的部分,所以这个长度是我们要的,然后接着这个新的前缀的失配指针移到的部分,与这个前缀的后缀也是匹配的..这样一直滚下去就可以了得到所有可能的值.。AC代码:#include#include#define max 400005char t[max];int next[max];in

2015-07-22 16:04:21 447

原创 POJ_3461-Oulipo

//没啥好说的,KMP模板题AC代码:#include#include#define max 1000005char s[max];char t[max];int len1;int len2;int next[max];int sum;void get_next(){ int i=0; int j=-1; next[0]=-1; wh

2015-07-22 15:33:45 327

原创 2015ACM四川省赛C题

//这题很值得记录,很有收藏价值,我都是看别人的代码会的。以后再回来看看。AC代码:#include#include#define max 10000005char s[max];char t[max];char a[max];int next[max];int len1;int len2;int pre[max];void get_next(){

2015-07-22 15:11:31 1049

原创 HDU_2594

//题意很简单,就是给定两个字符串,在第一个字符串中找到一个最大前缀作为第二个字符串的后缀.AC代码:#include#include#define N 50005char t[N];char s[N];int next[N];int len1;int len2;void get_next(){ int i=0; int j=-1; next[

2015-07-22 09:46:57 362

原创 POJ-2752

//这题是对next数组的理解。对于长度为len的字符串,由next的定义知:A[0]A[1]...A[next[len]-1]=A[len-next[len]]...A[len-1]此时A[0]A[1]...A[next[len]-1]为一个符合条件的前缀有A[0]A[1]....A[next[next[len]]-1] = A

2015-07-21 14:55:46 1056

原创 HUST-1010

//这是一道KMP题,核心思想就是求最小循环节点,其求法为:len-next[len];AC代码:#include#include#define max 1000005char s[max];int len;int next[max];int sum;void get_next(){ int i=0; int j=-1; next[0]=

2015-07-21 10:23:20 692

原创 HDU-5284

//从0-L扫描一遍,将a[i]=='v'&&a[i+1]=='v'改成a[i]=='w';现在令k=0,再在以个for循环中将a[k]=='w'||a[k]=='y'||a[k]=='h‘,k++;最后若K=3,yes.否则,NOAC代码:#include#include#includeusing namespace std;#define N 3145729char a[

2015-07-19 19:58:45 315

原创 POJ-1595

//方法有点笨,还是莫比乌斯算法求素数,这个方法我用了几年了,很好用,我们全家都用它。AC代码:#include#include#define max 1005int prime[max];int isprime[max];int vis[max];int a[max];void Init(){ int i,j,cnt=0; memset(vis,0,s

2015-07-18 17:28:07 350

原创 HDU-1087

.//这是一道DP,题目求得是最大上升子序和AC代码:#include#includeusing namespace std;#include#define N 1005#define INF -0x3f3f3f3fint a[N];int dp[N];int main(){ int n; while(scanf("%d",&n)!=EOF&&n)

2015-07-18 15:51:51 425

原创 HDU-1728逃离迷宫

//参考别人代码会的。。。。。AC代码:#include#include#define N 105#define INF 0x3f3f3f3fchar map[N][N];int x_move[4]={1,0,-1,0};int y_move[4]={0,-1,0,1};int wan[N][N];int ex,ey,k,m,n;int ok;void dfs(

2015-07-18 11:41:05 501

原创 POJ-1050

一道颇为经典的DP题。首先,先看一个比该问题更简单更基础的问题:最大子序列和,或者叫最大子串和,连续子序列最大和等等。问题很简答:给出一个一维数组A,求它的一个子数组,使得数组元素的和最大。比如:给定数组A{5,-3,4,2},那么它的最大子序列为{5,-3,4,2},和为8,而{5,-6,4,2}的最大子序列是{4,2},和为6.仔细看这两个列子,我们会发现,找最大子序列

2015-07-17 15:53:15 266

原创 HDU-5280

//观察数据,NAC代码:#include#include#includeusing namespace std;#define N 1005long long a[N];long long dp[N];int main(){ long long x; scanf("%lld",&x); while(x--) { lo

2015-07-17 14:27:16 424

原创 HDU-2717

//题目大意:求一个数变成另一个数需要几步?给你的操作有pre+1,pre-1,pre*2.//我们可以把这个问题转换成最短路问题,利用BFS进行。AC代码:#include#include#define max 100005int n,k;int vis[max];struct node{ int x,step;} queue[max];void bf

2015-07-17 08:48:12 615

原创 POJ-2192

//我刚开始以为好难,其实就是一个DFS,必须记录走过的路径。用一个vis[max][max],数组标记走没走过,走过就是1,没走过就是0.这是关键。AC代码:#include#include#define N 1005char a[N];char b[N];char c[N];int vis[N][N];int ok;int L;void dfs(int x,int

2015-07-16 20:52:31 376

原创 HDU-5150

//直接暴力打表飘过,值得注意的就是1也是P-number.AC代码:#include#include#define max 1005int isprime[max];int prime[max];int vis[max];void Init(){ int i,j,cnt=0; memset(vis,0,sizeof(vis)); memset(i

2015-07-16 11:53:46 280

原创 HDU-5108

//其实就是求最大素因子//AC代码:#include#includeusing namespace std;int main(){ int n; while(scanf("%d",&n)!=EOF) { if(n==1) { printf("0\n"); continue;

2015-07-16 11:15:25 350

原创 POJ-3356

//题意:给你两个字符串,叫你求出最少操作次数,使两个字符串相同;//思路:找出字符串中最长公共子串,用max(Len1,Len2)-dp[Len1][Len2]求最长公共子串:if(a[i-1]==a[j-1],dp[i][j]=dp[i-1][j-1]+1;else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);AC代码:#include#inc

2015-07-16 08:53:33 325

原创 POJ -2250

//这道题刚开始不会做,还是看别人的代码会的,下来再研究研究//AC代码:#include#include#includeusing namespace std;#define N 150#define M 1000char a[N][N];char b[N][N];char c[M];int dp[N][N];int L1,L2;void dfs(int x,i

2015-07-15 20:19:01 439

原创 BC#42第一题

//sum=2*n+m(n代表人数,m代表数组中有多少个1)代码:#include#define max 35int a[max][max];int n;int main(){ while(scanf("%d",&n)!=EOF) { int i,j; int m=0; for(i=0;in;i++)

2015-07-15 14:18:02 213

Android 照片查看器最简单的实现

Android 照片查看器最简单的实现

2016-05-11

ListView显示,跳转

ListView显示,跳转

2016-05-11

Android对话框

Android 点击一个按钮,相应弹出该对话框

2016-05-09

ListView把数据显示到屏幕

ListView把数据显示到屏幕

2016-05-08

Android实现查询数据库,把数据库内容显示到屏幕

Android实现查询数据库,把数据库内容显示到屏幕

2016-05-08

我的解题报告NO.2并查集 题解题报告

我的做题是学长给我们发的解题报告,里面可能有错哦

2015-07-11

空空如也

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

TA关注的人

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