自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zm_11的博客

天行健,君子以自强不息;地势坤,君子以厚德载物。

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

原创 Hdu oj 1061 Rightmost Digit

Problem DescriptionGiven a positive integer N, you should output the most right digit of N^N. InputThe input contains several test cases. The first line of the input is a single integer T

2015-09-19 21:04:18 416

原创 快速幂取模算法

快速幂取模算法,即求(a^b) mod c =?.如果直接计算,代码如下:【时间复杂度为O(b)】int ans=1;for(int i=1;i<=b;i++){ ans=ans*a;}ans=ans%c;【一】优化一:(a^b) mod c =[(a mod c)^b] mod c;引理一:(ab) mod c=[(a mod c)*(b mod c)] m

2015-09-13 12:17:53 448

原创 Hdu oj 2546 饭卡

Problem Description电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。 In

2015-08-27 17:42:51 707

原创 背包问题2《模版》

01背包模版:memset(f,0,sizeof(f)); for(i=1;i<=n;i++) for(j=v;j>=volume[i];j--) { f[j]=max(f[j],f[j-volume[i]]+value[i]); } printf("%ld\n",f[v]);

2015-08-26 17:41:30 675

转载 背包问题

P01: 01背包问题题目 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转

2015-08-26 16:10:49 318

原创 欧拉函数

一 欧拉函数的定义:     在数论中,对于正整数N,少于或等于N ([1,N]),且与N互质的正整数(包括1)的个数,记作φ(n)。   φ函数的值:    φ(x)=x(1-1/p(1))(1-1/p(2))(1-1/p(3))(1-1/p(4))…..(1-1/p(n)) 其中p(1),p(2)…p(n)为x   的所有质因数;x是正整数; φ(1)=1(唯一和1

2015-08-24 21:40:41 1746

原创 Hdu oj 5137 How Many Maos Does the Guanxi Worth

题目:点击打开链接分析: 枚举+floyd代码:#include#include#include#define INF 0x3f3f3f3fusing namespace std;int p[40][40],dis[40][40];int n,m;int floyd(int x){ int i,j,k; for(i=1;i<=n;i++)

2015-08-24 11:26:57 361

原创 Hdu oj 1058 Humble Numbers

题目:点击打开链接代码:#include#define min(a,b) ((a)<(b)?(a):(b))#define min4(a,b,c,d) min(min(a,b),min(c,d))int a1[5900];int main(){int i=1;a1[1]=1;int a=1,b=1,c=1,d=1;while(i<=5842){a1[++i]=min4

2015-08-22 23:52:06 501

原创 Hdu oj 2066 一个人的旅行

题目:点击打开链接代码#include#include#include#include#define INF 0x3f3f3f3fusing namespace std;int d[1005][1005];int a1[1005],b1[1005];int main(){ int m,n,p; while(~scanf("%d%d%d",&m,&

2015-08-21 20:19:50 602

原创 ZOJ 1045 HangOver

题目:点击打开链接代码#includeint main(){ double c,d; while(~scanf("%lf",&c),c)//0.5特殊数据 { d=0; int i; for(i=2;;i++) { if(d>=c)//这两个的顺序别弄反了 break; d=d+1.0/i;// }

2015-08-21 16:53:04 322

原创 Hdu oj 1048 The Hardest Problem Ever

题目:点击打开链接代码:#include#includechar str2[1010];int main(){ while(gets(str2))// !!! { if(strcmp(str2,"START")==0||strcmp(str2,"END")==0) continue; if(s

2015-08-21 10:46:11 302

原创 Hdu Oj 2112 HDU Today

题目:点击打开链接代码:#include#include#include#include#include#include#define INF 0x3f3f3f3fusing namespace std;struct Edge{ int from,to,value,next;}edge[20005];int head[155],num;i

2015-08-20 10:45:08 366

原创 Hdu oj 2066 一个人的旅行

题目:点击打开链接代码:#include#include#include#include#include#define INF 0x3f3f3f3fusing namespace std;struct Edge{ int from,to,value,next;}edge[2010];int head[2010],num;int d[1010]

2015-08-19 20:34:15 341

原创 Hdu Oj 2680 Choose the best route

题目:点击打开链接代码:#include#include#define INF 0x3f3f3f3fusing namespace std;int cost[1010][1010],d[1010];bool used[1010];int a,b,c;void distr(int x){ for(int i=1;i<=a;i++) { d[i]=

2015-08-19 10:01:01 540

原创 Hdu oj 1596 find the safest road

题目:点击打开链接分析:审清题,注意格式。代码#include#include#includeusing namespace std;double cost[1010][1010],d[1010];bool used[1010];int t;void distr(int x,int y){ for(int i=1;i<=t;i++) {

2015-08-18 21:26:18 375

原创 Hdu oj 2112 HDU Today

题目:点击打开链接关于C++中map的使用:点击打开链接代码:#include#include#include#include//将字符串转化成数字 #include#define INF 0x3f3f3f3fusing namespace std;char str1[30],str2[30];int cost[150][150],d[150];bo

2015-08-18 16:31:55 581 2

原创 Hdu oj 2066 一个人的旅行

题目:点击打开链接代码:#include#include#define INF 0x3f3f3f3fusing namespace std;int a1[1010];int b1[1010];int cost[1010][1010],d[1010];bool used[1010];int m,n,p;void distr(int x){ for(

2015-08-18 11:15:27 682

原创 Hdu oj 1869 六度分离

题目:点击打开链接代码:#include#include#define INF 0x3f3f3f3fusing namespace std;int m,n;int cost[110][110],d[110];bool used[110];void distr(int x){ for(int i=0;i<m;i++) { d[i]=INF;

2015-08-18 10:19:58 673

原创 Hdu oj 1874 畅通工程续

题目:点击打开链接#include#include#define INF 0x3f3f3f3fusing namespace std;bool used[210];int cost[210][210],d[210]; int m,n;int o,p;void dijkstra(int x){ for(int i=0;i<m;i++) { d[

2015-08-17 20:47:55 499

原创 Hdu oj 2544 最短路

题目:点击打开链接代码一:Dijkstra算法模版void dijkstra(int s){ for(int i=1;i<=N;i++) { d[i]=INF; used[i]=false; } d[s]=0; while(true) { int v=-1; for(

2015-08-17 17:32:05 474

原创 Hdu oj 1032 The 3n + 1 problem

题目:点击打开链接分析:注意细节。#includeint a1[1000010];int calcue(int x){ int len=1; while(x!=1) { if(x%2==0) { x=x/2; len+=1; } if(x==1) return len

2015-08-17 16:26:36 509

原创 Hdu oj 1029 Ignatius and the Princess IV

题目:点击打开链接代码一:#include#includeint b1[1000000];int main(){ int n; while(~scanf("%d",&n)) { int i; int a,t; memset(b1,0,sizeof(b1)); for(i=0;i<n;i++) { scanf("%d",&a)

2015-08-15 12:15:25 491

原创 Hdu oj 1285 确定比赛名次

题目:点击打开链接分析:简单拓扑排序,数据少的情况下可以用二维数组,数据比较多的时候用邻接表或优先队列。代码一:二维数组 代码二:邻接表 代码三:如何构建邻接表代码四:优先队列。代码一:#include#includeint queue[510],indegree[510];int map[510][510];int n,m;void tuopo(){ in

2015-08-14 21:14:11 557

原创 Hdu oj 1021 Fibonacci Again

题目:点击打开链接分析:找规律。#includeint main(){ int n; while(~scanf("%d",&n)) { if(n%4==2) printf("yes\n"); else printf("no\n"); } return 0;}

2015-08-13 16:20:35 338

原创 Hdu oj 1019 Least Common Multiple

题目:点击打开链接#includelong long a1[100];long gcd(long long a,long long b)//注意不要丢失精度 { int c; while(b%a&&a!=0) { if(a>b) { c=b; b=a; a=c; } b=b%a; } return a; }long

2015-08-13 11:56:59 391

原创 Hdu oj 1017 A Mathematical Curiosity

题目:点击打开链接#includeint main(){ int t; scanf("%d",&t); while(t--) { int a=0; int m,n; while(scanf("%d%d",&n,&m)) { if(m==0&&n==0) break; a++; int i,j,k,z=0;

2015-08-13 10:33:53 521

原创 Hdu oj 1875 畅通工程再续

题目:点击打开链接分析:代码一为AC的代码,代码二为自己在代码一的基础上优化的代码,测试多种结果都正确,但是确不能AC,后来发现,优化之后,出现了问题。代码一:#include#include#include#includeusing namespace std;struct stu{ int x,y; double d;}a1[10000];s

2015-08-12 20:23:39 415

原创 Hdoj 1014 Uniform Generator

题目:点击打开链接分析:题目要求均匀产生随机数,有两种方法:1 对产生的数进行标记 2 要产生随机数STEP和MOD的最大公约数不能超过1代码一:#include#includeint a1[100010];int main(){ int STEP,MOD; while(~scanf("%d%d",&STEP,&MOD)) { int i; in

2015-08-12 10:42:50 520

原创 Hdu oj 1013 Digital Roots

题目:点击打开链接分析:用数组模拟大数。           九余数定理:一个数模9等于各位数字和模9,例如 33%9=6%9;代码一:#includechar str[2000];int main(){ int a; while(scanf("%s",str)) { int i; int a=0,b=0; if(str[0]=='0'

2015-08-11 21:02:41 414

原创 Hdu oj 1513 Palindrome

题目:点击打开链接分析:LCS+滚动数组 字符串长度—LCS==需要增加的字符个数滚动数组:优化空间,压缩存储,主要用于递推或动态规划中。#include#include#define max(a,b) (a>b?a:b)char str1[5010],str2[5010];int dp[2][5015];//!!!动态数组 int main(){ int

2015-08-11 17:51:21 434

原创 Hdu oj 1863 畅通工程

题目:点击打开链接#include#includeusing namespace std;int n,m;int per[105];struct stu{ int u,v,w;}edge[105];void init(){ int i; for(i=1;i<=m;i++) per[i]=i;}int find(int x){

2015-08-11 15:28:29 503

原创 Hdu oj 1233 还是畅通工程

分析:Kruskal算法思想:按照边的权值的顺序从小到大查看一遍,如果不产生环(重边也算在内),就把当前这条边加入到生成树中。#include#includeusing namespace std;int per[110];int n;struct stu{ int u,v,w;}edge[10000];int cmp(stu x,stu y){ r

2015-08-11 11:07:55 694

原创 Hdu oj 1012 u Calculate e

分析:注意格式。#includeint main(){ int i,j,k; double sum=0; printf("n e\n- -----------\n"); printf("0 1\n1 2\n2 2.5\n"); for(i=3;i<=9;i++) { k=1; for(j=1;j<=i;j++) k*=j; sum+=1.

2015-08-10 20:26:21 485

原创 Hdu oj1008 Elevator

#include#define N 100int aa[N];int main(){ int a,b,i; while(scanf("%d",&a)&&a){ b=0; for(i=0;i<a;i++) scanf("%d",&aa[i]); b+=5+6*aa[0]; f

2015-08-10 19:00:14 528

原创 Hdu oj 1005 Number Sequence

分析:打表找出循环规律,另外当a=7,b=7时,无论fun[1]=1或者fun[1]=0,都能过,比较无语。#includeint fun[10010];int main(){ int a,b; long c; while(~scanf("%d%d%ld",&a,&b,&c)) { int i; int cent=0; if(a==0&&b==0&&c

2015-08-10 16:31:59 429

原创 Hdu oj 1004 Let the Balloon Rise

分析:用二维数组存放字符串,另外在比较count[i]的大小时,注意保留数组的下标。#include#includechar str[1010][16];int count[1010];int main(){ int m; while(scanf("%d",&m),m) { int i,j; int max,k; for(i=0;i<m

2015-08-08 17:35:46 369

原创 Hdu oj 1002 A + B Problem II

分析:用字符串模拟数的加法。#include#include#define N 1000char str1[N],str2[N];int ans1[N+10],ans2[N+10];int main(){ int t; int k; scanf("%d",&t); k=0; while(t--) { int i,j; int

2015-08-08 15:31:42 506

原创 Poj 2752 Seek the Name, Seek the Fame

分析:理解p[ ]的意义。#include#includechar str[400010];int len;int p[400010];int a[400010];void getp(){ int i=0,j=-1; p[i]=j; while(i<len) { if(j==-1||str[i]==str[j]) { i++,j+

2015-08-07 20:27:40 376

原创 Poj 2406 Power Strings

学算法之后,Ac的第一道题。分析:当i%(i-p[i])==0&&p[i]!=0时,字符串结束循环。并且,偱环节长度为 i-p[i],循环次数为i/(i-p[i]).#include#includeint len;int p[1000010];char str[1000010];void getp(){ int i=0,j=-1; p[i]=j; w

2015-08-07 16:34:04 408

原创 Hdu oj 1686 Oulipo

#include#include#define N 10010char str1[N],str2[N*100];int cent,i,j;int len1,len2;int p[N];void getp(){ i=0,j=-1; p[i]=j; while(i<len1) { if(j==-1||str1[i]==str1[j])

2015-08-07 12:07:03 594

空空如也

空空如也

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

TA关注的人

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