您的位置:首页 > 其它

第三届CCF软件能力认证

2015-09-01 18:45 162 查看

1.门禁系统

问题描述

  涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。每位读者有一个编号,每条记录用读者的编号来表示。给出读者的来访记录,请问每一条记录中的读者是第几次出现。

输入格式

  输入的第一行包含一个整数n,表示涛涛的记录条数。
  第二行包含n个整数,依次表示涛涛的记录中每位读者的编号。

输出格式

  输出一行,包含n个整数,由空格分隔,依次表示每条记录中的读者编号是第几次出现。

样例输入

5
1 2 1 1 3

样例输出

1 1 2 3 1

评测用例规模与约定

  1≤n≤1,000,读者的编号为不超过n的正整数。

# include <iostream>
# include <cstdio>
# include <cstring>
# include <algorithm>
# include <cmath>
# define LL long long
using namespace std ;

int n ;
const int MAXN=1010;
const int MAXM=200010;
int F[MAXN];
struct Edge
{
int u,v,w;
}edge[MAXM];

int tol;
void addedge(int u,int v,int w)
{

edge[tol].u=u;
edge[tol].v=v;
edge[tol++].w=w;
}
bool cmp(Edge a,Edge b)
{
return a.w<b.w;
}
int find(int x)
{
if(F[x]==-1)return x;
else return F[x]=find(F[x]);
}
int Kruskal()
{
memset(F,-1,sizeof(F));
sort(edge,edge+tol,cmp);
int cnt=0;
int ans=0;
for(int i=0;i<tol;i++)
{
int u=edge[i].u;
int v=edge[i].v;
int w=edge[i].w;
int t1=find(u);
int t2=find(v);
if(t1!=t2)
{
ans+=w;
F[t1]=t2;
cnt++;
}
if(cnt==n-1)break;
}
if(cnt<n-1)return -1;
else return ans;
}

int main()
{
//freopen("in.txt","r",stdin) ;
int m ;
scanf("%d %d" , &n , &m) ;
int i ;
int u , v , w ;
tol = 0 ;
while(m--)
{
scanf("%d %d %d" , &u , &v , &w) ;
addedge(u , v , w) ;
addedge(v , u , w) ;
}
int k = Kruskal() ;
printf("%d\n" , k) ;

return 0 ;
}
View Code

 

5.

货物调度

问题描述

  某公司要处理一个周期性的物流问题。
  有n个城市,第i个城市在每周的第j(1≤j≤7) 天会生产aij吨某种货物,同时需要消耗bij吨该种货物。已知每周的产量等于消耗量(即aij之和等于bij之和)。
  城市之间有m条道路,第k条道路连接了城市sk和tk。一条道路上运输1吨货物有一个固定的成本ck。道路都可以双向使用。每天运输的货物量没有限制。城市之间的距离并不远,货物可以从任意一个城市运输到任意另一个城市并且在当天到达。
  货物如果在当天没有被消耗掉,就需要存放在仓库里过夜。第i个城市的仓库容量为vi,存放1 吨货物过一夜所需的成本是wi。
  请你计算该公司如果每周循环性地按照一个固定的流程调度货物的话,该公司在最优方案下每周需要为货物的运输和存储消耗多少成本。

输入格式

  输入的第一行有两个正整数n和m,即城市的个数和道路的条数。
  接下来有n行,每行包含16个整数,用以描述第i个城市的相关数据。其中第i行包含的数为ai1, ai2, ai3, ai4, ai5, ai6, ai7, bi1, bi2, bi3, bi4, bi5, bi6, bi7, vi, wi。
  接下来有m行,每行包含3个整数,用以描述一条道路的相关数据。其中第k行包含的数为sk, tk和ck。
  输入数据中城市的编号均为1到n之间。输入数据的每行的行首行尾均保证没有空格,两个数之间恰好被一个空格隔开。

输出格式

  你只需要输出一个数,即最优方案下每周的支出。

样例输入

3 3
0 0 0 0 5 0 0 0 0 0 0 0 0 0 2 4
0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 1
0 0 0 0 0 0 0 0 0 3 0 0 0 0 2 5
1 2 1
1 3 5
2 3 1

样例输出

67

样例说明

  城市1 每周五生产5 吨货物,把其中2 吨运到存储费用低廉的城市2 存储,把1 吨运到城市3 存储,剩下的2 吨留在城市1。
  在次周一的时候城市2 会消耗掉存放在那里的2 吨货物。为了节约存储成本,将囤放在城市1 的货物运到城市2 存放。周三再将所有货物运到城市3 以满足该城市的需求。
  在此方案下,每周的运输成本为8,每周的存储成本为59,因此每周的总支出为67。

评测用例规模与约定

  对于100%的数据,1≤n≤100,1≤m≤500,0≤aij,bij,vi≤100,1≤wi,ck≤100。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: