摘要: 如题:广度优先搜索
#include < stdio.h >int hash[105][105];typedef struct{ int l, c;}type;type q[50000];int head, tail;int mo... 阅读全文
摘要: 题目的意思是要我们去掉最多的边使图还是连通的,同了强连通分支的算法。如下:
#include <stdio.h>const int LEN = 5005;struct HEAD { int state; //搜索状态  ... 阅读全文
摘要: 堆优化的最短路径,其实可以用SPFA做的,效果会相当会
//堆优化的最短路径不知道什么原因的AC#include <stdio.h>const int MAX_N = 30005;const int MAX_M = 150005;const int MAX =&nb... 阅读全文
题目就是考察一个循环队列。
#include <stdio.h>
int queue[105]; int len,head;
void setq(int n) { int i; len = n; head = 0; for(i=0;i<len;i++) { scanf("%d",&queue[i]); } }
int max() { int i,m = queue[head],p=(head+1)%len,m_i=head; for(i=1;i<len;i++) { if(queue[p]>m) { m = queue[p]; m_i = p; } p = (p+1)%len; } return m_i; }
int outq() { int a; head = max(); a = head; queue[head] = -1; head = (head+1)%len; return a; }
int main() { int i,count; int T,N,M; scanf("%d",&T); for(i=0;i<T;i++) { scanf("%d%d",&N,&M); setq(N); count = 1; while(outq()!=M) count ++; printf("%d\n",count); } return 0; }
题目的整体思想就是二份答案,将复杂度降低。
1#include<stdio.h> 2#include<math.h> 3double ri[10005]; 4int judge(double m,int pie_n,int friend_n,double *p) 5{ 6 int i,sum=0; 7 for(i=1;i<=pie_n;i++) 8 { 9 sum+=int((p[i]*acos(-1))/m); 10 } 11 if(sum>friend_n) 12 return 1; 13 else 14 return 0; 15} 16double abs(double ll) 17{ 18 if(ll<0) 19 return ll*(-1); 20 else 21 return ll; 22} 23int main() 24{ 25 int t,pie_n,friend_n,i; 26 scanf("%d",&t); 27 while(t--) 28 { 29 double mm=0; 30 scanf("%d%d",&pie_n,&friend_n); 31 for(i=1;i<=pie_n;i++) 32 { 33 scanf("%lf",&ri[i]); 34 ri[i]=ri[i]*ri[i]; 35 if(ri[i]>mm) 36 mm=ri[i]; 37 } 38 double min=0,max=mm*acos(-1),mid; 39 while(abs(max-min)>0.000005) 40 { 41 mid=(max+min)/2; 42 if(judge(mid,pie_n,friend_n,ri)) 43 { 44 min=mid; 45 } 46 else 47 { 48 max=mid; 49 } 50 } 51 printf("%.4lf\n",mid); 52 } 53 return 0; 54} 55
年代太久,都有点忘记了!
#include "stdio.h"
int judge(__int64 a,int n,__int64 b) { int i; __int64 sum=1; for(i=0;i<n;i++) { sum*=a; if(sum>=b)break; } if(i>=n)return -1; else return 1; }
__int64 power(__int64 a,int n) { __int64 sum=1; __int64 temp=a; while(n!=0) { if(n&1)sum*=temp; temp*=temp; n>>=1; } return sum; }
__int64 min(__int64 a,__int64 b,int n,__int64 p) { return (p-power(a,n)<power(b,n)-p)?a:b; }
int main() { int n; __int64 b; __int64 left,right,middle; while(1) { scanf("%I64d%d",&b,&n); if(b==0&&n==0)break; left=0;right=b; while(left<=right) { middle=(left+right)/2; if(judge(middle,n,b)>0)right=middle-1; else left=middle+1; } printf("%I64d\n",min(right,left,n,b)); } return 0; }
代码如下:
|
|
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
---|
26 | 27 | 28 | 29 | 30 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 1 | 2 | 3 | 4 | 5 | 6 |
|
公告
决定从线程开始!!
常用链接
留言簿(6)
随笔档案
搜索
最新评论
阅读排行榜
评论排行榜
|
|