软件工程考研资料 中国地质大学复试ACM测试题库
地大ACM题库
2017.5
目录
1. 环境设置- 3 -
1.1. 头文件- 3 -
1.2. Ubuntu相关设置- 3 -
2. 基本算法- 3 -
2.1. 三分(极小值)- 3 -
3. 数论- 4 -
3.1. 判断质数- 4 -
3.2. 筛法打质数表- 4 -
3.3. 分解质因数(打一个表)- 4 -
3.4. 快速幂取模- 4 -
3.5. 费马小定理求逆元(M必须是质数)- 5 -
3.6. lucas定理- 5 -
3.7. 扩展欧几里得- 5 -
3.8. 扩展欧几里得求逆元(只需gcd(a,M)==1)- 5 -
3.9. 欧拉函数- 6 -
3.10. 欧拉函数打表- 6 -
3.11. 中国剩余定理不互质- 6 -
3.12. 高斯消元- 7 -
3.13. 二进制下的高斯消元- 7 -
3.1
4. 组合数打表- 8 -
4. 图论- 8 -
4.1. 邻接表- 8 -
4.2. spfa - 8 -
4.3. dijkstra+heap - 10 -
4.4. kruskal - 11 -
4.5. prim+heap - 12 -
4.6. 最小树形图朱刘算法- 13 -
4.7. 树的直径- 15 -
4.8. LCA的tarjan离线算法- 16 -
- 1 -
4.9. 二分图最大匹配匈牙利算法- 17 -
5. 数据结构- 18 -
5.1. 离散化- 18 -
5.2. 一维树状数组- 18 -
5.3. RMQ - 19 -
5.4. 线段树- 19 -
5.5. 对一棵树进行线段树操作- 20 -
5.6. KMP - 21 -
6. 数学- 21 -
6.1. De Bruijn序列(格雷码)- 21 -
6.2. 矩阵类- 22 -
6.3. 巴什博弈(取石子游戏,1堆,一次取m个)- 24 -
6.4. 尼姆博弈(取m堆石子游戏,一次只能在一堆里取)- 25 -
6.5. 威佐夫博弈(取(2堆)石子游戏,一次取一堆的任意或两堆的相同)- 25 -
7. 动态规划- 26 -
7.1. 二维最大子段和- 26 -
8. 计算几何- 27 -
9. 其他- 39 -
9.1. 旋转的坐标变换- 39 -
9.2. 蔡勒公式- 39 -
9.3. 归并排序求逆序数- 39 -
9.4. 卡特兰数- 40 -
10. 黑科技- 40 -
10.1. 输入输出优化- 40 -
10.2. 强制O2优化- 40 -
10.3. 其他- 40 -
- 2 -
1.环境设置
1.1.头文件
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 #include
13 #include
14 #include
15 #include
16 #include
17 #include
18 #include
19 #include
20 #include
21 #define debug puts("-----")
22 #define pi (acos(-1.0))
23 #define eps (1e-8)
24 #define inf (1<<30)
25 using namespace std;
26 int main()
27 {
28
29 return0;
30 }
1.2.Ubuntu相关设置
CodeBlocks终端命令行:gnome-terminal --disable-factory -t $TITLE –x 计算器:gnome-calculator,xcalc
2.基本算法
2.1.三分(极小值)
1 double left,right,mid1,mid2;
2 left=-1e7;
3 right=1e7;
4 while(fabs(left-right)>eps)
5 {
6 mid1=(left+right)/2;
7 mid2=(mid1+right)/2;
8 if (f(mid1) 9 right=mid2; - 3 - 10 else 11 left=mid1; 12 } 3.数论 3.1.判断质数 1 int isprime(long long n) 2 { 3 if (n==1) 4 return0; 5 long long x=sqrt(n); 6 for (int i=2; i<=x; i++) 7 if (n%i==0) 8 return0; 9 return1; 10 } 3.2.筛法打质数表 1 const int NP=1000005; 2 int ispri[NP]={},prime[NP]={},pcnt=0; 3 void getprime() 4 { 5 ispri[0]=ispri[1]=1; 6 for (long long i=2;i 7 if (ispri[i]==0) 8 { 9 prime[++pcnt]=i; 10 for (long long j=i*i;j 11 ispri[j]=1; 12 } 13 } 3.3.分解质因数(打一个表) 1 int a[1000000]= {},pcnt=0; 2 void pdec(int n) 3 { 4 int x=sqrt(n); 5 for (int i=1; prime[i]<=x; i++) 6 if (n%prime[i]==0) 7 { 8 a[++pcnt]=prime[i]; 9 n/=prime[i]; 10 i--; 11 } 12 if (n!=1) 13 a[++pcnt]=n; 14 } 3.4.快速幂取模 1 const long long M=1000000007; 2 long long quickpow(long long a,long long b) 3 { 4 if(b<0)return0; - 4 - 5 long long ret=1; 6 a%=M; 7 for(;b;b>>=1,a= (a*a) %M) 8 if(b&1) 9 ret= (ret*a) %M; 10 return ret; 11 } 3.5.费马小定理求逆元(M必须是质数) 1 long long inv(long long a) 2 { 3 return quickpow(a,M-2); 4 } 3.6.lucas定理 1 const int fcnt=M; 2 long long fac[fcnt]; 3 void getfac() 4 { 5 fac[0]=fac[1]=1; 6 for(int i=2;i 7 fac[i]=fac[i-1]*i%M; 8 } 9 long long C(long long n,long long m,long long M) 10 { 11 if(n 12 return0; 13 return fac[n]*inv(fac[m],M)%M*inv(fac[n-m],M)%M; 14 } 15 long long lucas(long long n,long long m,long long M) 16 { 17 if(m==0) 18 return1; 19 return(lucas(n/M,m/M,M)*C(n%M,m%M,M))%M; 20 } 3.7.扩展欧几里得 1 long long exgcd(long long a,long long b,long long&x,long long&y) 2 { 3 if(b==0) 4 { 5 x=1; 6 y=0; 7 return a; 8 } 9 long long ans=exgcd(b,a%b,x,y); 10 long long temp=x; 11 x=y; 12 y=temp-(a/b)*y; 13 return ans; 14 } 3.8.扩展欧几里得求逆元(只需gcd(a,M)==1) 1 long long inv(long long a,long long M) 2 { 3 long long x,y; 4 long long t=exgcd(a,M,x,y); - 5 - 5 if(t!=1) 6 return-1; 7 return(x%M+M)%M; 8 } 3.9.欧拉函数 1 long long phi(long long n) 2 { 3 long long ans=n; 4 long long x=sqrt(n); 5 for(long long i=2;i<=x;i++) 6 { 7 if(n%i==0) 8 { 9 while(n%i==0) 10 n/=i; 11 ans=ans/i*(i-1); 12 } 13 } 14 if(n>1) 15 ans=ans/n*(n-1); 16 return ans; 17 } 3.10.欧拉函数打表 1 const int MAXN=10005; 2 long long phi[MAXN]; 3 void getphi() 4 { 5 for(int i=1;i 6 phi[i]=i; 7 for(int i=2;i 8 if(phi[i]==i) 9 for(int j=i;j 10 phi[j]=phi[j]/i*(i-1); 11 } 3.11.中国剩余定理不互质 1 void crt() 2 { 3 int t; 4 while(cin>>t) 5 { 6 int flag=1; 7 long long n1,a1; 8 if(t) 9 scanf("%lld%lld",&n1,&a1),t--; 10 while(t--) 11 { 12 long long n2,a2,k1,k2; 13 scanf("%lld%lld",&n2,&a2); 14 if(flag==0) 15 continue; 16 long long d=exgcd(n1,n2,k1,k2); 17 if((a2-a1)%d!=0) 18 flag=0; 19 if(flag) 20 { - 6 - 21 k1=(k1*(a2-a1)/d%(n2/d)+n2/d)%(n2/d); 22 long long a=n1*k1+a1; 23 long long n=n1/d*n2; 24 n1=n; 25 a1=a; 26 } 27 } 28 if(flag) 29 return a1; 30 else 31 return-1; 32 } 33 } 3.12.高斯消元 1 const int MAXN=105; 2 double a[MAXN][MAXN],b[MAXN]; //要注意-0.000的情况 +eps 3 int gauss_elimination(int n,double a[][MAXN],double b[]) 4 { 5 int i,j,k,row; 6 double mx,t; 7 for(k=1; k<=n; k++) 8 { 9 for(mx=0,i=k; i<=n; i++) 10 if (fabs(a[i][k])>fabs(mx)) 11 mx=a[row=i][k]; 12 if(fabs(mx) 13 return0; 14 if(row!=k) 15 { 16 for(j=k; j<=n; j++) 17 swap(a[k][j],a[row][j]); 18 swap(b[k],b[row]); 19 } 20 for(j=k+1; j<=n; j++) 21 for(a[k][j]/=mx,i=k+1; i<=n; i++) 22 a[i][j]-=a[i][k]*a[k][j]; 23 for(b[k]/=mx,i=k+1; i<=n; i++) 24 b[i]-=b[k]*a[i][k]; 25 } 26 for(i=n; i>=1; i--) 27 for(j=i+1; j<=n; j++) 28 b[i]-=a[i][j]*b[j]; 29 return1; 30 } 3.13.二进制下的高斯消元 1 const int MAXN=105; 2 int a[MAXN][MAXN],b[MAXN]; 3 void gauss(int n,int a[][MAXN],int b[]) 4 { 5 for(int i=1;i<=n;i++) 6 { 7 int k; 8 for(int j=i;j<=n;j++) 9 if(a[j][i]) 10 { 11 k=j; - 7 - 12 break; 13 } 14 for(int j=1;j<=n;j++) 15 swap(a[i][j],a[k][j]); 16 swap(b[i],b[k]); 17 for(int j=1;j<=n;j++) 18 if(i!=j&&a[j][i]) 19 { 20 for(k=1;k<=n;k++) 21 a[j][k]^=a[i][k]; 22 b[j]^=b[i]; 23 } 24 } 25 } 3.1 4.组合数打表 1 const int CN=20; 2 long long c[CN][CN]= {}; 3 void cinit() 4 { 5 for(int i=0;i 6 { 7 c[i][0]=c[i][i]=1; 8 for(int j=1;j 9 c[i][j]=c[i-1][j]+c[i-1][j-1]; 10 } 11 } 4.图论 4.1.邻接表 1 typedef int mytype; 2 const int NV=105; 3 const int NE=10005*2; 4 int he[NV],ecnt; 5 struct edge 6 { 7 int v,next; 8 mytype l; 9 } E[NE]; 10 void adde(int u,int v,mytype l) 11 { 12 E[++ecnt].v=v; 13 E[ecnt].l=l; 14 E[ecnt].next=he[u]; 15 he[u]=ecnt; 16 } 17 初始化: 18 ecnt=0; 19 memset(he,-1,sizeof(he)); 20 调用: 21 for (int i=he[u]; i!=-1; i=E[i].next) 4.2.spfa 1 typedef int mytype; - 8 - 2 const int NV=105; 3 const int NE=10005*2; 4 mytype dis[NV]; 5 int pre[NV],vis[NV],vcnt[NV],he[NV],ecnt; 6 struct edge 7 { 8 int v,next; 9 mytype l; 10 }E[NE]; 11 void adde(int u,int v,mytype l) 12 { 13 E[++ecnt].v=v; 14 E[ecnt].l=l; 15 E[ecnt].next=he[u]; 16 he[u]=ecnt; 17 } 18 void init(int n,int m,int s) 19 { 20 ecnt=0; 21 memset(pre,0,sizeof(pre)); 22 memset(vis,0,sizeof(vis)); 23 memset(vcnt,0,sizeof(vcnt)); 24 memset(he,-1,sizeof(he)); 25 for(int i=0;i<=n;i++) 26 dis[i]=inf; 27 dis[s]=0; 28 for(int i=1;i<=m;i++) 29 { 30 int u,v; 31 mytype l; 32 scanf("%d%d%d",&u,&v,&l); 33 adde(u,v,l); 34 adde(v,u,l); 35 } 36 } 37 void spfa(int n,int m,int s) 38 { 39 queue 40 vis[s]=1; 41 q.push(s); 42 while(!q.empty()) 43 { 44 int u=q.front(); 45 q.pop(); 46 vis[u]=0; 47 for(int i=he[u];i!=-1;i=E[i].next) 48 if(dis[u]+E[i].l 49 { 50 dis[E[i].v]=dis[u]+E[i].l; 51 pre[E[i].v]=u; 52 if(!vis[E[i].v]) 53 { 54 vis[E[i].v]=1; 55 q.push(E[i].v); 56 vcnt[E[i].v]++; 57 } 58 } 59 } 60 } - 9 - 4.3.dijkstra+heap 1 typedef int mytype; 2 const int NV=105; 3 const int NE=10005*2; 4 mytype dis[NV]; 5 int pre[NV],vis[NV],he[NV],ecnt; 6 struct edge 7 { 8 int v,next; 9 mytype l; 10 }E[NE]; 11 void adde(int u,int v,mytype l) 12 { 13 E[++ecnt].v=v; 14 E[ecnt].l=l; 15 E[ecnt].next=he[u]; 16 he[u]=ecnt; 17 } 18 void init(int n,int m,int s) 19 { 20 ecnt=0; 21 memset(pre,0,sizeof(pre)); 22 memset(vis,0,sizeof(vis)); 23 memset(he,-1,sizeof(he)); 24 for(int i=0;i<=n;i++) 25 dis[i]=inf; 26 dis[s]=0; 27 for(int i=1;i<=m;i++) 28 { 29 int u,v; 30 mytype l; 31 scanf("%d%d%d",&u,&v,&l); 32 adde(u,v,l); 33 adde(v,u,l); 34 } 35 } 36 struct point 37 { 38 int u; 39 mytype l; 40 point(int a,mytype b):u(a),l(b) {} 41 bool operator<(const point p)const 42 { 43 return l>p.l; 44 } 45 }; 46 void dijkstra_heap(int n,int m,int s) 47 { 48 priority_queue 49 q.push(point(s,0)); 50 while(!q.empty()) 51 { 52 point p=q.top(); 53 q.pop(); 54 int u=p.u; 55 if(vis[u]) 56 continue; 57 vis[u]=1; - 10 - 58 for(int i=he[u];i!=-1;i=E[i].next) 59 if(!vis[E[i].v]&&p.l+E[i].l 60 { 61 dis[E[i].v]=dis[u]+E[i].l; 62 pre[E[i].v]=u; 63 q.push(point(E[i].v,dis[E[i].v])); 64 } 65 } 66 } 4.4.kruskal 1 typedef int mytype; 2 const int NV=105; 3 const int NE=10005; 4 struct edge 5 { 6 int u,v; 7 mytype l; 8 bool operator<(const edge e)const 9 { 10 return l 11 } 12 }E[NE]; 13 int f[NV],rk[NV]; 14 int finds(int x) 15 { 16 int k,j,r; 17 r=x; 18 while(r!=f[r]) 19 r=f[r]; 20 k=x; 21 while(k!=r) 22 { 23 j=f[k]; 24 f[k]=r; 25 k=j; 26 } 27 return r; 28 } 29 void uni(int a,int b) 30 { 31 a=finds(a); 32 b=finds(b); 33 if(a==b) 34 return; 35 if(rk[a]>rk[b]) 36 f[b]=a; 37 else 38 { 39 if(rk[a]==rk[b]) 40 rk[b]++; 41 f[a]=b; 42 } 43 } 44 void init(int n,int m) 45 { 46 memset(rk,0,sizeof(rk)); 47 for(int i=1;i<=n;i++) 48 f[i]=i; - 11 - 49 for(int i=1;i<=m;i++) 50 scanf("%d%d%d",&E[i].u,&E[i].v,&E[i].l); 51 } 52 mytype kruskal(int n,int m) 53 { 54 sort(e+1,e+m+1); 55 mytype ans=0; 56 for(int i=1;i<=m;i++) 57 if(finds(E[i].u)!=finds(E[i].v)) 58 { 59 uni(E[i].u,E[i].v); 60 ans+=E[i].l; 61 } 62 return ans; 63 } 64 bool judge(int n) 65 { 66 int flag=0; 67 for(int i=1;i<=n;i++) 68 if(finds(i)==i) 69 flag++; 70 return flag==1; 71 } 4.5.prim+heap 1 typedef int mytype; 2 const int NV=105; 3 const int NE=10005*2; 4 mytype dis[NV]; 5 int pre[NV],vis[NV],he[NV],ecnt,pcnt; 6 struct edge 7 { 8 int v,next; 9 mytype l; 10 }E[NE]; 11 void adde(int u,int v,mytype l) 12 { 13 E[++ecnt].v=v; 14 E[ecnt].l=l; 15 E[ecnt].next=he[u]; 16 he[u]=ecnt; 17 } 18 void init(int n,int m,int s) 19 { 20 ecnt=0; 21 memset(pre,0,sizeof(pre)); 22 memset(vis,0,sizeof(vis)); 23 memset(he,-1,sizeof(he)); 24 for(int i=0;i<=n;i++) 25 dis[i]=inf; 26 dis[s]=0; 27 for(int i=1;i<=m;i++) 28 { 29 int u,v; 30 mytype l; 31 scanf("%d%d%d",&u,&v,&l); 32 adde(u,v,l); 33 adde(v,u,l); 34 } - 12 - 35 } 36 struct point 37 { 38 int u; 39 mytype l; 40 point(int a,mytype b):u(a),l(b) {} 41 bool operator<(const point p)const 42 { 43 return l>p.l; 44 } 45 }; 46 mytype prim_heap(int n,int m,int s) 47 { 48 priority_queue 49 q.push(point(s,0)); 50 mytype ans=0; 51 pcnt=0; 52 while(!q.empty()) 53 { 54 point p=q.top(); 55 q.pop(); 56 int u=p.u; 57 if(vis[u]) 58 continue; 59 vis[u]=1; 60 ans+=p.l;//==dis[x] 61 pcnt++; 62 for(int i=he[u];i!=-1;i=E[i].next) 63 if(!vis[E[i].v]&&E[i].l 64 { 65 dis[E[i].v]=E[i].l; 66 pre[E[i].v]=u; 67 q.push(point(E[i].v,dis[E[i].v])); 68 } 69 } 70 return ans; 71 } 72 bool judge(int n) 73 { 74 return pcnt==n; 75 } 4.6.最小树形图朱刘算法 1 typedef int mytype; 2 const int NV=1005; 3 const int NE=NV*NV; 4 struct edge 5 { 6 int u,v; 7 mytype l; 8 } E[NE]; 9 int pre[NV],ID[NV],vis[NV]; 10 mytype In[NV]; 11 void init(int m) 12 { 13 for(int i=1; i<=m; i++) 14 scanf("%d%d%d",&E[i].u,&E[i].v,&E[i].l); 15 } 16 mytype Directed_MST(int root,int NV,int NE) - 13 - 17 { 18 // memset(pre,0,sizeof(pre)); 19 mytype ret = 0; 20 while(1) 21 { 22 //1.找最小入边 23 for(int i=1; i<=NV; i++) 24 In[i] = inf; 25 for(int i=1; i<=NE; i++) 26 { 27 int u = E[i].u; 28 int v = E[i].v; 29 if(E[i].l < In[v] && u != v) 30 { 31 pre[v] = u; 32 In[v] = E[i].l; 33 } 34 } 35 for(int i=1; i<=NV; i++) 36 { 37 if(i == root) 38 continue; 39 if(fabs(In[i]-inf) 40 return -1;//除了跟以外有点没有入边,则根无法到达它 41 } 42 //2.找环 43 int cntnode = 0; 44 memset(ID,-1,sizeof(ID)); 45 memset(vis,-1,sizeof(vis)); 46 In[root] = 0; 47 for(int i=1; i<=NV; i++) //标记每个环 48 { 49 ret += In[i]; 50 int v = i; 51 while(vis[v] != i && ID[v] == -1&& v != root) 52 { 53 vis[v] = i; 54 v = pre[v]; 55 } 56 if(v != root && ID[v] == -1) 57 { 58 ID[v] = ++cntnode; 59 for(int u = pre[v] ; u != v ; u = pre[u]) 60 ID[u] = cntnode; 61 } 62 } 63 if(cntnode == 0) 64 break;//无环 65 for(int i=1; i<=NV; i++) 66 if(ID[i] == -1) 67 ID[i] = ++cntnode; 68 //3.缩点,重新标记 69 for(int i=1; i<=NE; i++) 70 { 71 int v = E[i].v; 72 E[i].u = ID[E[i].u]; 73 E[i].v = ID[E[i].v]; 74 if(E[i].u != E[i].v) 75 { 76 E[i].l -= In[v]; - 14 - 77 } 78 } 79 NV = cntnode; 80 root = ID[root]; 81 } 82 return ret; 83 } 84 bool judge(mytype ans) 85 { 86 return fabs(ans+1)>eps; 87 } 4.7.树的直径 1 typedef int mytype; 2 const int NV=40005; 3 const int NE=2*NV; 4 int vis[NV],he[NV],ecnt; 5 struct edge 6 { 7 int v,next; 8 mytype l; 9 }E[NE]; 10 void adde(int u,int v,mytype l) 11 { 12 E[++ecnt].v=v; 13 E[ecnt].l=l; 14 E[ecnt].next=he[u]; 15 he[u]=ecnt; 16 } 17 void init(int n,int m) 18 { 19 ecnt=0; 20 memset(he,-1,sizeof(he)); 21 for(int i=1;i<=m;i++) 22 { 23 int u,v; 24 mytype l; 25 scanf("%d%d%d",&u,&v,&l); 26 adde(u,v,l); 27 adde(v,u,l); 28 } 29 } 30 int U; 31 mytype L; 32 void dfs(int u,int uu,mytype l) 33 { 34 if(l>L) 35 { 36 U=u; 37 L=l; 38 } 39 for(int i=he[u];i!=-1;i=E[i].next) 40 if(E[i].v!=uu) 41 dfs(E[i].v,u,l+E[i].l); 42 } 43 mytype solve() 44 { 45 dfs(1,0,0); 46 dfs(U,0,0); - 15 - 47 return L; 48 } 4.8.LCA的tarjan离线算法 1 typedef int mytype; 2 const int NV=40005; 3 const int NE=NV; 4 const int NQ=10005; 5 mytype dis[NV],ans[NV]; 6 int vis[NV],he[NV],hq[NV],ecnt,qcnt; 7 struct edge 8 { 9 int v,next; 10 mytype l; 11 }E[2*NE]; 12 struct quer 13 { 14 int v,next,i; 15 }q[2*NQ]; 16 void adde(int u,int v,mytype l) 17 { 18 E[++ecnt].v=v; 19 E[ecnt].l=l; 20 E[ecnt].next=he[u]; 21 he[u]=ecnt; 22 } 23 void addq(int u,int v,int i) 24 { 25 q[++qcnt].v=v; 26 q[qcnt].i=i; 27 q[qcnt].next=hq[u]; 28 hq[u]=qcnt; 29 } 30 int fa[NV],rk[NV]; 31 void init(int n,int m) 32 { 33 ecnt=0; 34 qcnt=0; 35 memset(vis,0,sizeof(vis)); 36 memset(rk,0,sizeof(rk)); 37 memset(he,-1,sizeof(he)); 38 memset(hq,-1,sizeof(hq)); 39 for(int i=1;i<=m;i++) 40 { 41 int u,v; 42 mytype l; 43 scanf("%d%d%d",&u,&v,&l); 44 adde(u,v,l); 45 adde(v,u,l); 46 } 47 } 48 int finds(int x) 49 { 50 int k,j,r; 51 r=x; 52 while(r!=fa[r]) 53 r=fa[r]; 54 k=x; 55 while(k!=r) - 16 - 57 j=fa[k]; 58 fa[k]=r; 59 k=j; 60 } 61 return r; 62 } 63 void tarjan(int u,mytype d) 64 { 65 dis[u]=d; 66 fa[u]=u; 67 vis[u]=1; 68 for(int i=he[u];i!=-1;i=E[i].next) 69 if(!vis[E[i].v]) 70 tarjan(E[i].v,d+E[i].l),fa[E[i].v]=u; 71 for(int i=hq[u];i!=-1;i=q[i].next) 72 if(vis[q[i].v]) 73 ans[q[i].i]=dis[u]+dis[q[i].v]-2*dis[finds(q[i].v)]; 74 } 75 void solve(int n,int m) 76 { 77 init(n,m); 78 int k; 79 scanf("%d",&k); 80 for(int i=1;i<=k;i++) 81 { 82 int u,v; 83 scanf("%d%d",&u,&v); 84 addq(u,v,i); 85 addq(v,u,i); 86 } 87 tarjan(1,0); 88 for(int i=1;i<=k;i++) 89 printf("%d\n",ans[i]); 90 } 4.9.二分图最大匹配匈牙利算法 1 const int NV=505; 2 const int NE=10005; 3 int he[NV],ecnt,pre[NV],vis[NV]; 4 struct edge 5 { 6 int v,next; 7 }E[NE]; 8 void adde(int u,int v) 9 { 10 E[++ecnt].v=v; 11 E[ecnt].next=he[u]; 12 he[u]=ecnt; 13 } 14 int dfs(int u) 15 { 16 for(int i=he[u];i!=-1;i=E[i].next) 17 { 18 int v=E[i].v; 19 if(!vis[v]) 20 { 21 vis[v]=1; 22 if(pre[v]==0||dfs(pre[v])) - 17 - 24 pre[v]=u; 25 return1; 26 } 27 } 28 } 29 return0; 30 } 31 void init(int m) 32 { 33 ecnt=0; 34 memset(he,-1,sizeof(he)); 35 memset(pre,0,sizeof(pre)); 36 while(m--) 37 { 38 int u,v; 39 scanf("%d%d",&u,&v); 40 adde(u,v); 41 } 42 } 43 int hungary(int n) 44 { 45 int ans=0; 46 for(int i=1;i<=n;i++) 47 { 48 memset(vis,0,sizeof(vis)); 49 ans+=dfs(i); 50 } 51 return ans; 52 } 5.数据结构 5.1.离散化 1 void discrete(int data[],int n,int dis[]) 2 { 3 int sub[n+1]; 4 memcpy(sub,data,sizeof(sub)); 5 sort(sub+1,sub+n+1); 6 int m=unique(sub+1,sub+n+1)-sub-1; 7 for(int i=1;i<=n;i++) 8 dis[i]=lower_bound(sub+1,sub+m+1,data[i])-sub; 9 } 5.2.一维树状数组 1 int n; 2 inline int lowbit(int t) 3 { 4 return t&(-t); 5 } 6 void update(int c[],int x,int v) 7 { 8 while(x<=n) 9 { 10 c[x]+=v; 11 x+=lowbit(x); 12 } - 18 - 14 int query(int c[],int x) 15 { 16 int ans=0; 17 while(x>0) 18 { 19 ans+=c[x]; 20 x-=lowbit(x); 21 } 22 return ans; 23 } 5.3.RMQ 1 const int NV=50005; 2 const int NVB=20; 3 int mx[NVB][NV],mn[NVB][NV],a[NV]; 4 void rmqinit(int data[],int n) 5 { 6 int k=log2(n); 7 for(int i=1;i<=n;i++) 8 mx[0][i]=mn[0][i]=data[i]; 9 for(int i=1;i<=k;i++) 10 for(int j=1;j+(1< 11 { 12 mx[i][j]=max(mx[i-1][j],mx[i-1][j+(1<>1)]); 13 mn[i][j]=min(mn[i-1][j],mn[i-1][j+(1<>1)]); 14 } 15 } 16 int rmq(int l,int r,int flag) 17 { 18 int k=log2(r-l+1); 19 if(flag) 20 return max(mx[k][l],mx[k][r-(1< 21 else 22 return min(mn[k][l],mn[k][r-(1< 23 } 5.4.线段树 1 #define lson l,m,rt<<1 2 #define rson m+1,r,rt<<1|1 3 const int NV=100005; 4 int add[NV*3],sum[NV*3]; 5 void PushUp(int rt) 6 { 7 sum[rt]=sum[rt<<1]+sum[rt<<1|1]; 8 } 9 void PushDown(int rt,int m) 10 { 11 if(add[rt]) 12 { 13 add[rt<<1] +=add[rt]; 14 add[rt<<1|1] +=add[rt]; 15 sum[rt<<1] +=add[rt] * (m- (m>>1)); 16 sum[rt<<1|1] +=add[rt] * (m>>1); 17 add[rt] =0; 18 } 19 } 20 void build(int l,int r,int rt=1) 21 { - 19 - 中国地质大学xx2020考研大纲:87 9思想政治教育学原理 出国留学考研网为大家提供中国地质大学(武汉)2018考研大纲:879思想政治教育学原理,更多考研资讯请关注我们网站的更新!中国地质大学(武汉)2018考研大纲:879思想政治教育学原理研究生初试入学考试大纲《思想政治教育学原理》 一、试卷结构 题型比例: 名词解释约15% 简答题约40% 论述题约45% 二、其他 要求学生能完整地把握思想政治教育学的一系列重要内容如研究对象、基本范畴、学科体系及其发展进程,了解思想政教育学的理论基础和知识借鉴、思想政治教育的地位和作用、思想政治教育环境,把握思想政治教育的内容、原则、方法和艺术、载体、思想政治教育管理等。能够运用所学的基本原理和基本方法分析、判断和解决有关理论问题和实际问题。 第一章导论 考试内容 思想政治教育相关概念分析,思想政治教育学的研究对象,思想政治教育 学的学科特点,思想政治教育学范畴,思想政治教育学的研究方法,思想政治教育学科建设等。考试要求 1.理解和把握思想工作、政治工作、思想政治工作、思想政治教育学研究的概念及内涵。 2.理解和把握思想政治教育学的研究对象。 3.理解和把握思想政治教育学的基本范畴。 4.了解思想政治教育学科建设的现状及发展趋势。 5.认识研究思想政治教育学的意义。 第二章思想政治教育学的理论基础和知识借鉴 考试内容 马克思主义指导学科建设、中国特色社会主义理论体系指导学科建设、思想政治教育学的直接理论依据、思想政治教育对相关学科的知识借鉴等。 考试要求 1、准确理解马克思主义的科学体系及中国特色社会主义理论体系指导学科建设的基本原则及要求。 2、理解思想政治教育学的直接理论依据。 3、理解思想政治教育学与教育学、心理学的关系。 4、理解社会主义核心价值观的基本内容及内涵。 5、了解企业文化理论特别是学习型组织理论对思想政治教育的借鉴意义。 第三章思想政治教育学的地位和功能 考试内容 思想政治教育的本质、思想政治教育的地位、思想政治教育功能、思想政治教育的个体性和社会性功能等。考试要求 1、理解思想政治教育的本质。 2、理解思想政治教育的地位。 3、理解思想政治教育的功能。 中国地质大学(武汉)普通地质学历年考研真题解析 历史比较法(“将今论古”):发生在地质历史时期的地质作用及其结果,与现代正在进行的地质作用及其产物有相似之处。从研究现代地质作用的过程和产物中总结得出的规律,可用来分析保留在地层及岩石中的各种地质现象,从而推断古代地质作用的过程和古地理环境。地温梯度:指深度每增加100米时所升高的温度,以℃表示。 软流圈:地下深度为60-250km范围内的地震波速低速层,是一个具软塑性和流动性的层次。克拉克值:元素在地壳中平均重量百分比称为克拉克值。 矿物:由地质作用所形成的天然单质或化合物。 解理:矿物晶体受力后沿一定方向的平面破裂的性能称为解理。 断口:矿物受力后形成凹凸不平的破裂面称为断口。 相对地质年代:表示地质事件和各种地质体发生或形成的先后顺序或新老关系,称为相对地质年代。 地层层序律:地层形成时的原始产状一般是水平或近水平的,并且,总是老的地层先形成,位于下部,新的地层后形成,覆于上部。即原始产状的地层具有下老上新的层序规律,称为地层层序律或称叠置原理。 化石:埋藏在地质历史时期沉积物中的古代生物的遗体和遗迹称为化石。 生物演化律:不同时期的地层中含有不同类型的化石,相同时期的地层含有相同的化石及化石组合。 风化作用:在地表或近地表的环境中,由于温度变化、大气、水和水溶液及生物作用等因素的影响,使岩石在原地遭受破坏的过程。 差异风化:在相同的自然条件下,由于岩性(矿物组成)的不同导致风化速度不同,使岩石表面出现凹凸不平的现象称为差异风化。 球形风化:在裂隙发育的岩浆岩和厚层砂岩地区,由于风化作用的影响,岩石表面趋于圆化(球状)的现象。 风化壳:指在陆地表面由残积物和土壤构成的一层不连续的、厚薄不均的薄壳。 残积物:陆地表面的岩石经过长期风化作用以后,各种矿物发生不同程度的分解,可迁移的成分从原矿物中迁移出来随流水带走,剩下的物质残留在原地称为残积物。 片流:沿斜坡无固定水道的面状流水。 洪流:由片流汇集到沟谷中形成的有固定水道的水流。 坡积物:片流将洗刷破坏的物质从山坡上部搬运到山坡下部较平缓地带堆积形成坡积物。 地下水:埋藏在地表以下岩石和松散堆积物中的水体,井和泉是它的人工和天然露头。 河流的袭夺:向源侵蚀作用较强的水系把分水岭另一侧侵蚀作用较弱的水系上游或其支流袭夺过来,叫河流的袭夺。 侵蚀基准面:河流下切(下蚀)达一定深度后,接近某一水面时,下蚀作用即停止,这种水平面称为河流侵蚀基准面。 侧蚀作用:河水以自身的动力及携带的碎屑物对河床两侧或谷坡进行破坏的作用。 牛轭湖:河流截弯取直后,被遗弃的弯曲河道称为牛轭湖。 冲积物的二元结构:河流冲积物在垂直剖面上的结构。洪水期限河流断面扩大,引起河漫滩洪水流速减小,洪水挟带的细粒泥砂,覆盖在河床冲积物上,形成下部为粗砂和砾石组成的河床冲积物,上部为细砂或粘土组成的河漫滩冲积物,构成下粗上细的沉积结构,叫“二元结构”。 三角洲:河流注入海洋或湖泊时,水流向外扩散,动能显著减弱,并将所带的泥沙堆积下来,形成一片向海或向湖伸出的平地,外形常呈△状,所以称为三角洲。 一.填空题 1.软件生命周期分为、需求分析、概要设计、详细设计、软件实现、软件测试及运行维护7个阶段。 2. 是最早的软件生存周期开发模型,它将软件开发过程中的各项活动规定为依固定顺序连接的若干阶段工作,形如瀑布流水,最终得到软件系统或软件产品。 3. 是一种软件开发模型,在这种模型的每一个阶段,都要编码产生一个新的构件,并将新构件集成到先前已经构成的产品中并作为一个整体进行测试,直到满足用户需求为止。 4.当没有足够的人员在规定的期限内开发完整的产品或者由于不可克服的客观原因而把交付期限规定的太短时应选用软件开发模型。 5. 是一种软件开发模型,由需求定义、风险分析、实施开发和计划评审4个部分组成,主要适用于大型软件项目开发。 6. 文档说明该软件开发项目的实现在技术上、经济上和社会因素上等方面的可行性,评述为了合理地达到开发目的可供选择的各种可能实施的方案,说明并论证所选定实施方案的理由。 7.可行性分析的目的是。 8. 用于描述系统的物理模型,用物理符号以黑盒子的形式描绘系统里的每个部件,仅表达信息在系统个部件之间流动的情况。 9. (一种图)可以用来进行项目进度管理。 10. 结构化分析与设计是一种面向的分析设计方法。 11. 常见的需求获取方式有、情景分析技术等。 12. 在结构化分析中,用于描述加工逻辑的工具主要有结构化语言、判定树和。 13. 数据字典中的条目主要有、数据流、文件和加工四种。 14. 结构化软件开发方法贯穿始终的八字方针为。 15. 在软件生命周期中的每一个阶段结束后必须进行,这是为了能尽早发现项目开发中的错误。 16. 是软件生命周期中重要的一步,是软件定义阶段的最后一个阶段,是关系到软件开发成败的关键步骤。 17. 数据流图分为变换型和两种类型。 18. 衡量不同模块彼此之间相互依赖的紧密程度。 19. 衡量不同模块彼此之间相互依赖的紧密程度。 20.在软件模块设计时应该采取的设计原则是。 21.内聚性与模块独立性的关系为内聚性越高,模块独立性越。 一、单项选择题 1.适合于面向对象方法学的软件生存周期模型是( B ) A.瀑布模型 B.喷泉模型 C.螺旋模型 D.增量模型 2.从实用角度看,数据规范化程度在大多数场合选用第( C )范式。 A. 1 B.2 C.3 D.5 3. 可行性分析研究的目的是( A )。 A.项目值得开发否 B.争取项目 C.开发项目 D.规划项目 4. 模块的内聚性最高的是 ( D ) A.逻辑内聚 B.时间内聚 C.偶然内聚 D.功能内聚 5.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做 ( B ) A. 软件工程 B. 软件危机 C. 软件周期 D. 软件产生 6. 需求分析阶段的任务是确定( D ) A.软件开发方法 B.软件开发工具 C.软件开发费 D.软件系统的功能 7. 完整的软件结构通常用( B )图来表示。 A. IPO 图 B. HIPO 图 C.PAD 图 D.DFD 图 8. 在白盒法技术测试用例的设计中( A )是最弱的覆盖标准。 A.语句 B.路径 C.条件组合 D.判定 9?对象实现了数据和操作的结合,使数据和操作( C )于对象的统一体中。 A.结合 B.隐藏 C.封装 D.抽象 10. 在数据流图中,圆代表( C )。 A.源点 B.终点 C.加工 D.模块 11. 模块内聚度越高,说明模块内各成分彼此结合的程度越( B )。 A.松散 B.紧密 C.无法判断 D.相等 12. 软件测试方法中,黑盒、白盒测试法是常用的方法,其中黑盒测试主要用于测试( B )。 A.结构合理性 B.软件外部功能 C.程序正确性 D.程序内部逻辑 13. 面向对象开发方法中, ( C )是占主导地位的标准建模语言。 A.Booch 方法 B.Coad 方法 C.UML 语言 D.OMT 方法 14. 软件需求分析的主要任务是准确地定义出要开发的软件系统是( C ) A.如何做 B.怎么做 C.做什么 D.对谁做 15. 结构化程序设计的一种基本方法是( C ) A.筛选法 B.迭代法 C.逐步求精法 D.递归法 二、填空题 1. 目前使用最广泛的软件工 程学方法分别是传统方法学和(面向对象方法学 ) )和事务流。 文档 ) 。 ( 重复 )三种结构。 自顶向下 的集成测试方法,对软件结构中下层使 6. 软件维护包括 ( 改正性维护 )、适应性维护、完善性维护、预防性维护。 7. 面向对象方法学建模得到的三个基本子模型是 (对象建模 ) .动态模型、功能模型。 8. 复杂大型问题的对象模型通常由主题 2. 数据流图中信息流的类型有(变换流 3. 软件的定义是:软件 =程序+数据+ 4. 经典结构程序设计包括顺序、选择和 5. 集成测试时对软件结构中上层使用 用 ( 自底向上 ) 的集成测试方法。 软件工程试题(附答案) 《软件工程》作业 班级2000(春)计算机本科姓名罗国南学号001000490 成绩____________ 一、判断题 可行性研究的最根本的任务是对以后的行动方针提出建议。√ PDL语言是详细设计的重要工具,可方便地实现程序的自动生成。√ 模块的控制域应该在作用域之内。 面向对象方法把对象作为数据及可以施加在这些数据上的操作所构成的统一体。√ 软件是一种逻辑实体,而不是具体的物理实体。√ 软件测试时经常要输入无效的,不合理的数据进行测试。√ 高级程序设计语言从应用的角度看,可以分为基础语言、结构化语言和专用语言三大类。√ 软件维护的前提是不能失去原有软件的基本功能。√ Gantt图可以明确地表示出各子任务之间的依赖与制约关系。× 与其它开发的方法相比较,结构化方法的主要优点之一是对用户需求的变更响应迅速。× 适应性维护的目的是为了适应计算机软、硬件环境的变化。√ 系统流程图可以描述系统的逻辑模型,它的基本思想是用图形符号以黑盒子形式描绘系统里 的每个部件。× 工程网络图可以描绘各子任务作业的工作时间和可以机动(延长)时间。√ 在面向对象方法中,对象是进行处理的主体。√ 调试是在测试出错误之后,找到错误的位置并改正的过程。√ 不允许使用GOTO语句是结构程序的特征。× 面向对象技术的最大优点是减少了软件的开发时间。× 用盒图和PAD图设计出来的算法必定是结构化的。√ 逻辑输入数据流是离物理输入端最远,且沿同一输入路径输入的数据流。√ 可行性研究的结果有可能将软件开发项目否定。√ 在面向对象方法学中,使用“对象”不仅需要知道它向外界提供的接口形式,而且必须知道它的内部实现算法。× 传统的流程框图不能用来进行结构化程序设计。× 一个模块执行时,必须引用另一个模块的某些数据,则这个模块的独立性不强。√ 成功的测试是没有发现错误的测试。× 地大考研复试班-中国地质大学(北京)心理学考研复试经验分享中国地质大学的前身是1952年由北京大学、清华大学、天津大学和唐山铁道学院等院校的地质系(科)合并组建的北京地质学院。1960年被评为“北京市文教战线红旗学院”,跻身于64所全国重点高校行列。1970年迁校,1978年在邓小平同志直接关怀下,在北京原校址恢复办学。1987年成立中国地质大学,在京汉两地相对独立办学,是我国首批试办研究生院的33所高校之一,并首批进入"211工程"、"985"优势学科创新平台建设行列。2000年2月,中国地质大学由国土资源部整体划转教育部管理。2005年3月,大学总部撤销,京汉两地独立办学。2006年9月,教育部和国土资源部共建中国地质大学。2017年9月,学校入选世界一流学科建设高校。 学校现有中国科学院院士8人。在数十万名毕业生中,有37人成为两院院士,200余人成为省部级以上劳动模范。经过60余年的建设,学校逐步成为以地质、资源、环境、地学工程技术为主要特色,理、工、文、管、经、法相结合的多科性全国重点大学,成为我国地学人才培养的摇篮和地学研究的重要基地。学校现有17个教学单位,42个本科专业,2个国家一级重点学科,8个国家二级重点学科,14个省部级重点学科,16个一级学科博士学位授权点,33个一级学科硕士学位授权点,14个工程硕士领域和MBA、MPA等11个类型的专业学位授权点,13个博士后流动站。在职教职工1400余人,全日制在校生15000余人,继续教育和网络远程教育在读生10万余人。现任党委书记马俊杰,校长邓军。 启道考研复试班根据历年辅导经验,编辑整理以下关于考研复试相关内容,希望能对广大复试学子有所帮助,提前预祝大家复试金榜题名! 专业介绍 本专业培养具备心理学的基本理论、基本知识、基本技能,能在科研部门、高等和中等学校、企事业单位等从事心理学科学研究、教学工作和管理工作的高级专门人才。 应用心理学是心理学中迅速发展的一个重要学科分支。由于人们在工作及生活方面的需要,多种主题的相关研究领域形成心理学学科。应用心理学研究心理学基本原理在各种实际领域的应用,包括工业、工程、组织管理、市场消费、社会生活、医疗保健、体育运动以及军事、司法、环境等各个领域。随着经济、科技、社会和文化迅速发展,应用心理学有着日益广阔的前景。 复试科目与人数 软件工程考试题库 Final approval draft on November 22, 2020 一填空题 1.用原型过程代替全部开发阶段,这种快速原型是(实验型或演化型)原型。 2.可行性研究实质上是进行一种简化、压缩了的(需求分析和设计)。 3.结构图的主要内容有(模块)、(模块的控制关系)、(模块的信息传递)。 4.模块之间的联系越紧密,其耦合性就越(强),模块的独立性就越(差)。 5.软件工程研究的主要内容包括软件开发技术和软件开发管理两个方面,在软件开发技术方面,主要是研究(软件开发方法)、(软件开发过程)、(软件开发工具和环境),在软件开发管理方面,主要是研究(软件管理学)、(软件经济学)、(软件心理学)。 6.状态图反映了(状态)与(事件)的关系,状态图确定了由事件序列引起的(状态序列)。 7.可行性研究实质上是进行一种简化、压缩了的(需求分析和设计)。 8.在数据流图中,(数据流)是数据在系统内传播的路径,因此由一组(成分固定的数据项)组成,加工(又称为数据处理)是对数据流进行某些(操作或交换)。 9.(偶然内聚)指一个模块内的各处理元素之间没有任何联系,这是内聚程度最(差)的内聚。 10假如n个相同的系统(硬件或软件)进行测试,它们的失效时间分别是t1,t2,tn,则平均失效等待时间MTTF=(1/n )。 11(维护申请报告)是一种由用户产生的文档,它用作计划维护任务的基础。 12在软件开发和维护过程中,一个软件往往有许多版本,版本控制工具用来存储、更新、恢复和管理一个软件的(多个版本)。 13软件工具通常由工具、(工具接口)和用户工具三个部分组成。 14类的实例化是(对象)。 15形式化规约语言由(语法)、(语义)和(一组关系)组成。 16 软件质量保证应从(产品计划和设计)开始,直到投入使用和售后服务的软件生存期的每一个阶段中的每一步骤。 17 为了提高软件的质量,软件质量保证的任务大致可归结为以下8类:(正确定义用户要求)、(技术方法的应用)、(提高软件开发的工程能力)、(软件的复用)、(发挥每个开发者的能力)、(组织外部力量协作)、(排除无效劳动)、(提高计划和管理质量)。 18 软件测试时需要的三类信息,分别是(软件配置)、(测试配置)、(测试工具)。 19 在面向对象方法中,信息隐蔽通过对象的(封装性)来实现,类结构分离了(接口)与(实现),从而支持了信息隐蔽。 20 增量模型在开发工程中以一系列(增量方式)开发系统,推迟某阶段的(细节),从而(尽早)产生工作软件。 二选择题 1.(A)是计算机程序及其说明程序的各种文档。 A 软件 B文档 C 数据 D 程序 2.软件生存周期包括可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、(B)和维护等活动。 A 应用 B 测试 C 检测 D 以上答案都不正确 3.建立原型的目的不同,实现原型的途径也有所不同,下列不正确的类型是(B)。 A 用于验证软件需求的原型 B 垂直原型 C 用于验证设计方案的原型 D 用于演化出目标系统的原型 《软件工程导论》期末考试-试题与答案 一、填空题 1.软件工程中的结构化分析 SA 是一种面向________的分析方法。 2.软件模块独立性的两个定性度量标准是_________________。 3.软件开发是一个自顶向下逐步细化和求精的过程,而软件测试是一个________的过程。 4. ________和数据字典共同构成了系统的逻辑模型 5. ___________是一种黑盒测试技术,这种技术把程序的输入域划分为若干个数据类,据此导出测试用例。二、单选 题 1.在软件危机中表现出来的软件质量差的问题,其原因是_______。A.软件 研发人员素质太差B.用户经常干预软件系统的研发工作C.没有软件质量标 准 D.软件开发人员不遵守软件质量标准2.在软件质量因素中,软件在异常条件下仍能运 行的能力成为软件的_____。A.安全性B.健壮性C.可用性D.可靠性 3.在下列测试技术中,______不属于黑盒测试技术。A.等价 划分B.边界值分析C.错误推测D.逻辑覆盖 4.软件工程方法是在实践中不断发展着的方法,而早期的软件工程方法主要是指______。A.原型化方法B.结构化方法C.功能化方法D.面向对象方法 5. ______是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是 隐蔽的,外界只能通过有限的接口与对象发生联系。A.多态 B.继承C.封装D.消息 6. Jackson 方法是在软件开发过程中常用的方法,使用 Jackson 方法时可以实现______。A.从数据结构导出程序结构B.从数据流图导出初始结构图C.从模块结构导出数据结构D.从模块结构导出程序结构 7.软件测试时为了________而执行程序的过程。A.纠正 错误B.发现错误 C.避免错误 D.证明错误 8.在软件系统中,一个模块应具有什么样的功能,这是由_____决定的。A.总体 设计B.需求分析C.详细设计D.程序设计 9.面向对象分析是对系统进行_________的一种方法。A.需求 分析B.程序设计C.设计评审D.测试验收 10.软件文档是软件工程实施中的重要部分,它不仅是软件开发各阶段的重要依据,而 且影响软件的_______。A.可理解 性B.可维护性C.可扩展性D.可 移植 地大考研复试班-中国地质大学(北京)物理学考研复试经验分享中国地质大学的前身是1952年由北京大学、清华大学、天津大学和唐山铁道学院等院校的地质系(科)合并组建的北京地质学院。1960年被评为“北京市文教战线红旗学院”,跻身于64所全国重点高校行列。1970年迁校,1978年在邓小平同志直接关怀下,在北京原校址恢复办学。1987年成立中国地质大学,在京汉两地相对独立办学,是我国首批试办研究生院的33所高校之一,并首批进入"211工程"、"985"优势学科创新平台建设行列。2000年2月,中国地质大学由国土资源部整体划转教育部管理。2005年3月,大学总部撤销,京汉两地独立办学。2006年9月,教育部和国土资源部共建中国地质大学。2017年9月,学校入选世界一流学科建设高校。 学校现有中国科学院院士8人。在数十万名毕业生中,有37人成为两院院士,200余人成为省部级以上劳动模范。经过60余年的建设,学校逐步成为以地质、资源、环境、地学工程技术为主要特色,理、工、文、管、经、法相结合的多科性全国重点大学,成为我国地学人才培养的摇篮和地学研究的重要基地。学校现有17个教学单位,42个本科专业,2个国家一级重点学科,8个国家二级重点学科,14个省部级重点学科,16个一级学科博士学位授权点,33个一级学科硕士学位授权点,14个工程硕士领域和MBA、MPA等11个类型的专业学位授权点,13个博士后流动站。在职教职工1400余人,全日制在校生15000余人,继续教育和网络远程教育在读生10万余人。现任党委书记马俊杰,校长邓军。 启道考研复试班根据历年辅导经验,编辑整理以下关于考研复试相关内容,希望能对广大复试学子有所帮助,提前预祝大家复试金榜题名! 专业介绍 物理学专业培养掌握物理学的基本理论与方法,具有良好的数学基础和实验技能,能在物理学或相关的科学技术领域中从事科研、教学、技术和相关的管理工作的高级专门人才。 复试科目与人数 ①101思想政治理论②201英语一③610高等数学④816普通物理学 招生人数8人 复试时间地点 中国地质大学硕士生入学考试初试科目及参考书目 199 MBA联考综合能力:2008年工商管理硕士联考大纲,机械工业出版社,2008 211英语:新视野大学英语读写教程(1-3),郑树棠,外语教学与研究出版社 212俄语:走向俄罗斯,王四海,中国广播电视出版社,2003 213日语:新编日语(1-4),周平,上海外语教育出版社,2000 214德语:大学德语(1-2),张书良,高等教育出版社,2001,修订版 215法语:公共法语(上、下),吴贤良、王美华,上海外语教育出版社,1997,修订版 299 MBA联考英语:在职攻读硕士学位全国联考英语考试大纲,科学技术文献出版社,2005 610 高等数学:高等数学、线性代数,同济大学应用数学系主编,高等教育出版社 611自然地理学:自然地理学,伍光和等,高等教育出版社,2000,第三版 614普通地质学:普通地质学简明教程,杨伦等,中国地质大学出版社,1998 619土地资源学:土地资源学,王秋兵等,中国农业出版社,2003 622工艺美术史:中国工艺美术史,姜松荣,湖南美术出版社,2004 623工业设计史:工业设计史,何人可,北京理工大学出版社,2005 世界工业设计史,陈鸿俊,湖南美术出版社,2002 626综合知识:行政法与行政诉讼法(面向21世纪课程教材),姜明安主编,高等教育出版社,2005 民法(面向21世纪课程教材),魏振瀛主编,北京大学出版社,2005 经济法基础理论,漆多俊主编,武汉大学出版社,2005 630社会学理论与方法:社会学导论,风笑天,华中科技大学出版社,1997,各版均可 631公共政策:公共政策,严强、王强,南京大学出版社,2002,第一版 632综合英语:新编英语教程(5-7),李观仪,上海外语教育出版社,2003,修订版 633俄语综合:大学俄语(东方5—6),北京外国语大学、莫斯科普希金俄语学院,外语教学与研究出版社,1998,第一版 634数学分析:数学分析讲义(上、下册),刘玉琏,高等教育出版社,2003,第四版 635教育学:教育学基础,全国十二所重点师范大学联合编写,教育科学出版社,2002 636海洋科学导论:海洋科学导论,冯士笮、李凤岐等,高等教育出版社,1999 637普通物理:大学物理,张三慧主编,清华大学出版社,2000,第二版 638哲学基础:辩证唯物主义和历史唯物主义原理,李秀林等主编,李淮春等修订,中国人民大学出版社, 2004,第五版 639专业综合(含民法学、西方法律思想史): 民法学:民法(面向21世纪课程教材),魏振瀛,北京大学出版社,2005 西方法律思想史:西方法律思想史(21世纪法学规划教材),严存生,法律出版社,2004 640马克思主义基本原理:马克思主义基本原理概论,陶德麟、石云霞主编,武汉大学出版社, 2006 641体育学专业基础综合:体育概论,体育院校通用教材,人民体育出版社,2005 运动生理学,体育院校通用教材,人民体育出版社,2002 教育学,王道俊、王汉澜,人民教育出版社,1999 642传播学理论与方法:传播学教程,郭庆光,中国人民大学出版社,1999,第一版 643艺术学基础理论:艺术概论,王宏建,文化艺术出版社,2000 美学原理,王旭晓,上海人民出版社,2001 645生物化学:生物化学,王镜岩,高等教育出版社, 2002,第三版 646材料晶体学:结晶学及矿物学,赵珊茸等,高等教育出版社,2002 647无机化学:无机化学,大连理工大学无机化学教研室, 高等教育出版社,2006,第五版 一、填空题(在下划线上填写正确的答案,每题2分,共20分) 1.等价划分是一种黑盒测试技术,这种技术把程序的输入域划分为若干个数。 2.数据流图和数据字典共同构成了系统的逻辑模型。 3.盒图也称为 N-S图。这种表达方式取消了流程线,它强迫程序员以结构化方式思考和解决问题。 4.软件有效性,指软件系统的时间和空间效率。 5.IPO 6.数据流图有四种基本成分:源、终点,处理,存储,数据流。 7. 其中数据项是组成数据流和数据存储的最小元素。 8.软件工程中的结构化分析SA是一种面向数据流的分析方法。 9.软件开发是一个自顶向下逐步细化和求精的过程,而软件测试是一个由下而上的过程。 10.耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚、低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。 1.常用的软件开发模型有瀑布模型、原型模型、增量模型、螺旋模型、喷泉模型。 2.软件生存周期一般可分为问题定义、可行性研究、需求分析、设计、编码、 单元测试、运行与维护阶段。 3.软件测试的步骤:单元、集成、系统、验收。 4.数据流图的基本符号包括加工、数据流、数据存储文件、汇点。5.IPO图由输入、处理和输出三个框组成。这个图的特点是能够直观的显示三者之间的关系。 6.面向对象方法是一种运用类、实例、属性、重载、消息传送、多态性等概念来构造系统的软件开发方法。 7.分析已有的程序,寻求比源代码更高级的抽象表现形式,这就是软件的逆向工程。 8.程序测试是对编码阶段的语法错、语义错和运行错进行查找的编码执行活动。 9.为了获得较高的模块独立性,尽量设计出具有高内聚和低藕合性能的模块。 10.常用的测试方法有黑盒测试和白盒测试。 1.可行性研究,应从技术可行性、经济可行性、运行可行性和法律和 社会效益可行性等方面研究。 2.构化程序设计中程序主要的3种基本控制结构是顺序结构、选择结构、循环 结构。 3.软件生存周期中时间最长、花费精力和费用最多的一个阶段是维护 阶段。 4.需求分析阶段,分析人员要确定对问题的综合需求,其中最主要的是功 能需求。 软件工程导论期末考试试题 一.选择(20分) 1、瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和( C)。 A、详细计划 B、可行性分析 C、运行阶段 D、测试与排错 2、从结构化的瀑布模型看,在它的生命周期中的八个阶段中,下面的几个选项中哪个环节出错,对软件的影响最大(C )。 A、详细设计阶段 B、概要设计阶段 C、需求分析阶段 D、测试和运行阶段 3、在结构化的瀑布模型中,哪一个阶段定义的标准将成为软件测试中的系统测试阶段的目标(A )。 A、需求分析阶段 B、详细设计阶段 C、概要设计阶段 D、可行性研究阶段 4、软件工程的出现主要是由于(C )。 A.程序设计方法学的影响 B.其它工程科学的影响 C. 软件危机的出现 D.计算机的发展 5、软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是(C ) A、硬件环境 B、软件开发的环境 C、软件开发工具和软件开发的环境 D、开发人员的素质 6、软件开发常使用的两种基本方法是结构化和原型化方法,在实际的应用中,它们之间的关系表现为 ( B) A、相互排斥 B、相互补充 C、独立使用 D、交替使用 7、UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法(C ) A、基于瀑布模型的结构化方法 B、基于需求动态定义的原型化方法 C、基于对象的面向对象的方法 D、基于数据的数据流开发方法 8、在下面的软件开发方法中,哪一个对软件设计和开发人员的开发要求最高(B ) A、结构化方法 B、原型化方法 C、面向对象的方法 D、控制流方法 9、结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对象的(B ) A、控制流 B、数据流 C、程序流 D、指令流 10、软件开发的结构化生命周期方法将软件生命周期划分成(A ) A、计划阶段、开发阶段、运行阶段 B、计划阶段、编程阶段、测试阶段 C、总体设计、详细设计、编程调试 D、需求分析、功能定义、系统设计 二.填空(20分) 21.系统流程图是描述物理模型的传统工具,用图形符号表示系统中各个元素 表达了系统中各种元素之间的(信息流动)情况。 22.成本效益分析的目的是从(经济)角度评价开发一个项目是否可行。 23.自顶向下结合的渐增式测试法,在组合模块时有两种组合策略:深度优先 策略和(宽度优先策略) 。 24.独立路径是指包括一组以前没有处理的语句或条件的一条路径。从程序图 来看,一条独立路径是至少包含有一条(在其他独立路径中未有过)的边的路径。 25.汇编语言是面向(机器) 的,可以完成高级语言无法完成的特殊功能,如与外部设备之间的一些接口工作。 26.在JSP方法中解决结构冲突的具体办法是(中间数据结构或中间文件)。 27.详细设计的任务是确定每个模块的内部特性,即模块的算法、(使用的数据)。 28.所有软件维护申请报告要按规定方式提出,该报告也称( 软件问题)报告。 29.有两类维护技术:在开发阶段使用来减少错误、提高软件可维护性的面向 维护的技术;在维护阶段用来提高维护的效率和质量的(维护支援)技术。 30.科学工程计算需要大量的标准库函数,以便处理复杂的数值计算,可供选 择的语言有:(FORTRAN语言)、PASCAL语言、C语言和PL/1语言。三.判断(10分) 地大考研法语语法复习4 5、Imparfait未完成过去时 1)Formation构成 由直陈式现在时第一人称复数去掉词尾-ons, 换成词尾:-ais, -ais, -ait, -ions, -iez ,-aient 特殊形式: commencer je commen?ais nous commenc i ons manger je mang e ais nous mang i ons étudier j’étudiais nous étudi i ons voir je vo y ais nous vo yi ons 2)Emploi用法 A. 表示过去的某一段时间延续进行的动作或存在的状态(其起迄时间不明) e.g. Sa famille habitait dans une vieille maison quand il était tout petit. Elle était paysanne avant d’entrer à l’université. B. 重复发生或具有习惯性的过去动作 e.g. L’été dernier, je me levais de bonne heure et j’aidais ma mère à faire des courses. C. 描写过去时间里的人物、景色、故事背景 e.g. Il était minuit. Il faisait froid. La ville était calme. D. 在主从复合句中使用,表示过去和另一个动作同时发生,其中一个动作正在进行(用未完成过去时),另一个动作突然发生(用复合过去时) e.g. Ma soeur faisait ses devoirs quand vous lui avez téléphoné. 若两个都是正在进行的动作,则均用未完成过去时 e.g. Les enfants jouaient pendant que (while) leur père réparait la voiture. E. 用于si引导的感叹句,表示愿望、遗憾等,相当于英语中的if only 软件工程概述 一单项选择 1.软件生命周期一般包括:软件开发期和软件运行期,下述(D)不是软件开发期所应包含的内容。 A需求分析B结构设计C程序编制D软件维护 2.软件是一种逻辑产品,它的开发主要是(A)。 A研制B拷贝C再生产D复制 3.以文档作为驱动,适合于软件需求很明确的软件项目的生存周期模型是(C)。 A喷泉模型B增量模型C瀑布模型D螺旋模型 4.在软件生存周期中,(B)阶段必须要回答的问题是“要解决的问题是做什么?”。 A详细设计B可行性分析和项目开发计划C概要设计D软件测试 5.软件产品与物质产品有很大区别,软件产品是一种(C)产品 A有形B消耗C逻辑D文档 6.(C)把瀑布模型和专家系统结合在一起,在开发的各个阶段上都利用相应的专家系统来帮助软件人员完成开发工作。 A原型模型B螺旋模型C基于知识的智能模型D喷泉模型 7.(B)阶段是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。 A概要设计B详细设计C编码D测试 8.下列软件开发模型中,适合于那些不能预先确切定义需求的软件系统的开发的模型是(A)。 A原型模型B瀑布模型C基于知识的智能模型D变换模型 9.下列软件开发模型中,以面向对象的软件开发方法为基础,以用户的需求为动力,以对象来驱动的模型是(C)。 A原型模型B瀑布模型C喷泉模型D螺旋模型 10.下列软件开发模型中,支持需求不明确,特别是大型软件系统的开发,并支持多种软件开发方法的模型是(D)。 A原型模型B瀑布模型C喷泉模型D螺旋模型 11.软件特性中,使软件在不同的系统约束条件下,使用户需求得到满足的难易程度称为(C)。 A可修改性B可靠性C可适应性D可重用性 12.软件特性中,一个软件能再次用于其他相关应用的程度称为(B)。 A可移植性B可重用性C容错性D可适应性 13.软件特性中,(A)是指系统具有清晰的结构,能直接反映问题的需求的程度。 A可理解性B可靠性C可适应性D可重用性 14.软件特性中,软件产品交付使用后,在实现改正潜伏的错误、改进性能、适应环境变化等方面工作的难易程度称为(B)。 A可理解性B可维护性C可适应性D可重用性 15.软件特性中,软件从一个计算机系统或环境移植到另一个上去的难易程度指的是(C). A可理解性B可修改性C可移植性D可重用性 16.软件特性中,在给定的时间间隔内,程序成功运行的概率指的是(D)。 A有效性B可适应性C正确性D可靠性 17.软件特性中,允许对软件进行修改而不增加其复杂性指的是(A)。 A可修改性B可适应性C可维护性D可移植性 18.软件特性中,多个软件元素相互通讯并协同完成任务的能力指的是(B)。 A可理解性B可互操作性C可维护性D可追踪性 19.软件特性中,根据软件需求对软件设计、程序进行正向追踪,或根据程序、软件设计对软件需求进行逆向 软件工程导论期末考试试 题和答案 It was last revised on January 2, 2021 1.软件生存周期一般可分为__问题定义__、可行性研究、_需求分析_____、设计编 码、__测试________、运行与维护阶段。 2.按软件的功能进行划分,软件可以划分为系统软件、支撑软件和应用 软件。 3.可行性研究主要集中在以下四个方面经济可行性、技术可行性、法律 可行性和抉择。 4.用户界面的可使用性是用户界面设计最重要的也是最基本的目标。 5.常见的软件概要设计方法有3大类:以数据流图为基础构造模块结构的___结构化 设计方法_________,以数据结构为基础构造模块的__jackson方法__________,以对象、类、继承和通信为基础的__面向对象设计方法__________。 6.__数据流图________和__数据字典___共同构成系统的逻辑模型。 7.软件测试的方法有__分析方法________和___非分析方法_______(即黑盒法)。 8.单元测试一般以___白盒_____________测试为主,___黑盒______测试为辅。 9.成本估计方法主要有__自底向上估计________、_自顶向下估计_________和算法 模型估计三种类型。 1.下列哪个阶段不属于软件生存周期的三大阶段( C )。 A、计划阶段 B、开发阶段 C、编码阶段 D、维护阶段 2.需求分析是( A )。 3. A、软件开发工作的基础 B、软件生存周期的开始 4. C、由系统分析员单独完成的 D、由用户自己单独完成的 5.原型化方法是软件开发中一类常用的方法,它与结构化方法相比较,更需要 ( B )。 6. A、明确的需求定义 B、完整的生命周期 7. C、较长的开发时间 D、熟练的开发人员 8.软件维护时,对测试阶段未发现的错误进行测试、诊断、定位、纠错,直至修改 的回归测试过程称为( A )。 9. A、改正性维护 B、适应性维护 10.? C、完善性维护 D、预防性维护 11.一般说来,投入运行的软件系统中有错误( A )。 A、不是不可以理解的 B、是不能容忍的 C、是要求退货的理由 D、是必然的 1.在进行总体设计时应加强模块间的联系。( N ) 2.系统结构图是精确表达程序结构的图形表示法。因此,有时也可以将系统结 构图当作系统流程图使用。( N ) 3.用黑盒法测试时,测试用例是根据程序内部逻辑设计的。( N ) 4.在程序调试时,找出错误的位置和性质比改正该错误更难。( Y ) 5.以对象、类、继承和通信为基础的面向对象设计方法(OOD)也是常见的软 件概要设计方法之一。( Y ) 6.如果通过软件测试没有发现错误,则说明软件是正确的。( N ) 7.快速原型模型可以有效地适应用户需求的动态变化。( Y ) 育明教育 中国考研专业课辅导第一品牌 八年专注于中国地质大学行政管理考研专业课辅导。 2014年,育明教育共有7名学员成功考上中国地质大学公共管理专业,包括解xie学员(二本,育明集训营学员,382分)、李chang学员(二本,育明集训营学员,372分),霍学员(二本,育明1对1学员,389分)、田xinyu学员(二本,育明1对1学员,364分)。 更有8+2(少干)名学员成功考上北大行管,12名学员成功考上中国人民大学公共管理学院。 2015年中国地质大学公共管理考研全程班(基础+强化+冲刺)优惠价2500元!赠送阅卷人指导一对一指导!通过率高达百分之九十以上! 中国地质大学(北京)公共管理考研招生专业目录 注:中国地质大学是211学校,工科类的学校,考试难度并不是非常大,难度和中国矿业大学、北京林业大学的难度相当,关键是掌握住地大自主命题专业课的考试信息、出题的 难点、以及最新变化的信息。其中科目三大家可以选考610高等数学或者619管理学概论,工科背景跨考的话选择610是有优势的,但是要尽量考到120分以上,地大的录取分数线近几年都是维持在360分以上。育明每年都有二本、三本的学员考上,也可以帮助学员发表论文,大家有什么疑问欢迎咨询育明教育!考研咨询热线400-6998-626 ,QQ1559022430 2015年地大公共管理考研参考书(官方版) 619管理学概论 《管理学》(第十一版),罗宾斯,中国人民大学出版社; 837行政管理学综合 《行政管理学》(第三版),夏书章,中山大学出版社,高教出版社;《公共政策学》,陈振明,中国人民大学出版社。 中国地质大学公共管理考研初试备考须知 一、出题老师简介 赵连荣:女,1965——,公共管理教研室主任,硕士生导师,研究方向:行政管理,社会保障 近年来教学工作情况:企业经营管理,管理学原理,国际企业管理,国际标准与认证,生产管理,行政管理学,政治学原理,市政管理学,公共关系学 二、复习方法和经验推荐 基础复习阶段(开始复习-2014年8月) 本阶段主要用于跨专业考生学习《管理学》,《行政管理学》,《公共政策学》,要求吃透参考书内容,做到准确定位,事无巨细地对涉及到的各类知识点进行地毯式的复习,夯实基础,训练思维,掌握一些基本概念,全面了解书中内容,对书中提到的大标题概念要能记住属于哪一章哪一类内容。 三、强化提高阶段(2014年9月-2014年11月) 本阶段,考生要对《管理学》,《行政管理学》,《公共政策学》进行深入复习,加强知识点的前后联系,建立整体框架结构,分清重难点,对重难点基本掌握,并完成参考书配有的习题训练。在理清概念的基础上,做到识记基本概念,做历年真题,弄清考试形式、题型设置和难易程度等内容,能基本做到用所学知识分析社会现象。做到举一反三。 四、冲刺阶段(2014年12月-2015年1月) 总结所有重点知识点,包括重点概念、理论和模型等,查漏补缺,回归教材。要对基本问题的答题模式驾轻就熟,温习专业课笔记和历年真题,做育明教育专业课模拟试题。调整心态,保持状态,积极应考。 中国地质大学(北京)2015年考研复试经验分享 复试结束了,本来昨天想写的,实在有点累,上午体检,下午面试,晚上数学,一条龙。写点面试的经历吧,2点到海洋楼有个美女助理拿来一袋号码纸,让抽签,据说有92个,猜我抽到几号了? 91号!不一会老师们都进场了,分了4个面试房间,按号面试,其实人数没这么多,还剩了一些号码。 本着看一看的态度,等了一会,看面试的同学一个接一个进出,大家得到了一点信息,先英语,应该是别人的专业论文上摘的一部分先读,再翻译,然后是专业知识,读图,回答问题。最后就是自我介绍之类的聊聊。 每个人10分钟左右吧,由于我的体检还没弄完,晚上还有数学加试,就想早点面试,于是果断抢了个空号进去面试里面是实验室,一排桌子,对面有几个老教授把,也不是很老,中年吧,还有个美女助理,进去问好之后一个教授示意我坐在对面然后拿着一叠打印的论文,用英语给我说,大概意思就是:这有六个段落,从里面选一个,读一遍,然后试着翻译一遍。 那个老师的口音有点汉语英语的味道,倒也不难听懂(个人觉得汉语口音英语,有点抑扬顿挫的感觉,外国人口音感觉是直的,比较顺畅。)我选了一段,然后他把论文给我,看了一遍大概有四五句,有几个专业词汇完全搞不懂,就第一句翻译的马马虎虎把,然后我说有两个单词不知道,把剩余的翻译完。又让我选个图片,图片都是盖着的,上面是地质图,下面有几个问题。 我选的那个感觉比较简单吧,问题是1.图中有哪些不整合,属于什么类型的?2.岩浆岩产出的时代。3,图中有哪些褶皱?轴面产状是什么?属于里查德分类中那种类型?4,简述构造演化史 那个图上有一个褶皱,向斜加背斜,一个断层,一片岩浆岩,一个角度不整合,一个平行不整合。感觉考的挺全的。 然后我看了一会,一一回答,只有轴面产状不知道,然后老师们提问,有个老师问你如何确定岩浆岩的产出时代,这个很简单,图中岩浆岩覆盖了二叠,然后被侏罗覆盖,所以是三叠的。那个老师又问岩浆岩侵入会有什么效应,我就说周围的岩石会变质,如果侵入断层/节理会形成脉状体,如果侵入两个岩层之间有时会形成整合的侵入体,然后有个老师就问这个叫什么?我说岩席或岩盆吧。 然后一个老师问我褶皱轴面产状,我说不知道,他让我再看看,然后我说了一个,也不知道对不对,然后他又问我理查德分类属于哪一类,还有理查德分类的依据,这个倒是知道,然后有个老师就说做个自我介绍吧,用汉语的,不用英语。中国地质大学武汉2020考研大纲:87
中国地质大学(武汉)普通地质学历年考研真题解析
软件工程练习题
软件工程导论期末考试题
软件工程试题(附答案)
地大考研复试班-中国地质大学(北京)心理学考研复试经验分享
软件工程考试题库
软件工程导论》期末考试试题与答案
地大考研复试班-中国地质大学(北京)物理学考研复试经验分享
中国地质大学硕士生入学考试初试科目及参考书目
软件工程复习试题及答案
软件工程导论期末试题
地大考研法语语法复习4
软件工程考试题库
软件工程导论期末考试试题和答案
2015年地大行管考研状元复习笔记最权威的辅导资料
中国地质大学(北京)2015年考研复试经验分享