D.引水工程

Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 118  Solved: 41 [Submit][Status][Web Board]

Description

南水北调工程是优化水资源配置、促进区域协调发展的基础性工程,是新中国成立以来投资额最大、涉及面最广的战略性工程,事关中华民族长远发展。 “南水北调工程”,旨在缓解中国华北西北地区水资源短缺的国家战略性工程。就是把中国长江流域丰盈的水资源抽调一部分送到华北和西北地区。我国南涝北旱,南水北调工程通过跨流域的水资源合理配置,促进南北方经济、社会与人口、资源、环境的协调发展。

整个工程分东线、中线、西线三条调水线。东线工程位于东部,因地势低需抽水北送至华北地区。中线工程从汉水与其最大支流丹江交汇处的丹江口水库引水,自流供水给黄淮海平原大部分地区,20多座大中城市;西线工程在青藏高原上,由长江上游向黄河上游补水。

现在有N个区域需要建设水资源工程,它们可以自建水库解决缺水问题,也可以从已有水源的地区建立管道引水过来。当然,这些建设都需要大量投资。

你能不能给出一个优化水资源配置方案,在保证每个区域都能用上水的前提下,使得整个引水工程费用最低。

Input

第一行:     K           表示有多少组测试数据。

接下来对每组测试数据:

第1行:      N               表示有N个区域( 1<=N<=300 )

第2 行:    W1  W2  …. WN  Wi表示第i个区域自建水库需要的费用

再有N行:   Pi1  Pi2   ….  Pin   Pij表示建立第i个区域与第j个区域引水管道的费用

1≤k≤10      1≤N≤200    1≤Wi  Pij≤100000    Pij = Pji   Pii=0 (i=1,…, N)

所有数据都是整数。 数据之间有一个空格。

Output

对于每组测试数据,输出占一行,即建立整个引水工程的最小费用。

Sample Input

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

Sample Output

10

HINT

 

Source

第八届河南省赛

题解:克鲁斯卡尔ac,然而我的prime wawawa;克鲁斯卡尔想法,把0代表引水花费,然后最小生成树就可以了,prime想复杂了,想着比较连接城市的花费与直接引水花费比较的;但是wa;

改成克鲁斯卡尔想法,prime也过了;

克鲁斯卡尔:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<set>
using namespace std;
#define mem(x,y) memset(x,y,sizeof(x))
#define SI(x) scanf("%d",&x)
#define SL(x) scanf("%lld",&x)
#define PI(x) printf("%d",x)
#define PL(x) printf("%lld",x)
#define P_ printf(" ")
const int INF=0x3f3f3f3f;
const double PI=acos(-1.0);
typedef long long LL;
const int MAXN=350;
struct Node{
int u,v,w;
Node init(int x=0,int y=0,int z=0)/*:u(x),v(y),w(z)*/{
u=x;v=y;w=z;
}
friend bool operator < (Node a,Node b){
return a.w<b.w;
}
}dt[1010];
int ans;
int pre[MAXN];
int find(int x){
return pre[x]=x==pre[x]?x:find(pre[x]);
}
void merge(Node a){
int f1=find(a.u),f2=find(a.v);
if(f1!=f2)pre[f1]=f2,ans+=a.w;
}
int main(){
int K,N;
SI(K);
while(K--){
SI(N);
int x,k=0;
for(int i=0;i<=N;i++)
for(int j=1;j<=N;j++){
SI(x);
if(i<j){
dt[k++].init(i,j,x);
}
}
sort(dt,dt+k);
//for(int i=0;i<k;i++)printf("%d %d %d\n",dt[i].u,dt[i].v,dt[i].w);
for(int i=0;i<=N;i++)pre[i]=i;
ans=0;
for(int i=0;i<k;i++)merge(dt[i]);
printf("%d\n",ans);
}
return 0;
}

  prime  ac:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<set>
using namespace std;
#define mem(x,y) memset(x,y,sizeof(x))
#define SI(x) scanf("%d",&x)
#define SL(x) scanf("%lld",&x)
#define PI(x) printf("%d",x)
#define PL(x) printf("%lld",x)
#define P_ printf(" ")
const int INF=0x3f3f3f3f;
const double PI=acos(-1.0);
typedef long long LL;
const int MAXN=350;
int w[MAXN];
int p[MAXN][MAXN];
int N;
int dis[MAXN];
int vis[MAXN];
int usd[MAXN];
void prim(){
mem(vis,0);
// mem(usd,0); for(int i=0;i<=N;i++)dis[i]=p[0][i];
vis[0]=1;
int ans=0,flot=0;
while(true){
int temp=INF,k;
for(int i=0;i<=N;i++)
if(!vis[i]&&temp>dis[i])temp=dis[k=i];
if(temp==INF)break;
//printf("%d %d %d\n",k,w[k],temp);
// if(temp<w[k])ans+=temp;
// else ans+=w[k],usd[k]=1;
ans+=temp;
vis[k]=1;
for(int i=0;i<=N;i++)
if(!vis[i])dis[i]=min(dis[i],p[k][i]);
}
/*int x=INF;
for(int i=0;i<N;i++)
if(!usd[i])x=min(x,w[i]);*/
printf("%d\n",ans);//
}
int main(){
int K;
SI(K);
while(K--){
SI(N);
//for(int i=0;i<N;i++)SI(w[i]);
for(int i=0;i<=N;i++)
for(int j=1;j<=N;j++)
SI(p[i][j]);
prim();
}
return 0;
}

  

第八届河南省赛D.引水工程(kruthcra+prime)的更多相关文章

  1. POJ-2421Constructing Roads,又是最小生成树,和第八届河南省赛的引水工程惊人的相似,并查集与最小生成树的灵活与能用,水过~~~

    Constructing Roads Time Limit: 2000MS   Memory Limit: 65536K               Description There are N v ...

  2. 第八届河南省赛F.Distribution(水题)

    10411: F.Distribution Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 11  Solved: 8 [Submit][Status] ...

  3. 第八届河南省赛G.Interference Signal(dp)

    G.Interference Signal Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 35  Solved: 17 [Submit][Status ...

  4. 第八届河南省赛C.最少换乘(最短路建图)

    C.最少换乘 Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 94  Solved: 25 [Submit][Status][Web Board] De ...

  5. 第八届河南省赛B.最大岛屿(dfs)

    B.最大岛屿 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 30  Solved: 18 [Submit][Status][Web Board] De ...

  6. zzuoj 10409 10409: D.引水工程

    10409: D.引水工程 Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 96  Solved: 34[Submit][Status][Web Boar ...

  7. 河南省第八届ACM省赛---引水工程

    引水工程 时间限制:2000 ms  |  内存限制:65535 KB 难度: 描述 南水北调工程是优化水资源配置.促进区域协调发展的基础性工程,是新中国成立以来投资额最大.涉及面最广的战略性工程,事 ...

  8. 第八届河南省省赛 A.挑战密室

    挑战密室 时间限制: ms | 内存限制: KB 难度: 描述 R组织的特工Dr. Kong 为了寻找丢失的超体元素,不幸陷入WTO密室.Dr. Kong必须尽快找到解锁密码逃离,否则几分钟之后,WT ...

  9. Nyoj 引水工程(最小生成树)

    描述 南水北调工程是优化水资源配置.促进区域协调发展的基础性工程,是新中国成立以来投资额最大.涉及面最广的战略性工程,事关中华民族长远发展.“南水北调工程”,旨在缓解中国华北和西北地区水资源短缺的国家 ...

随机推荐

  1. org.gradle.process.internal.ExecException:

    com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process ...

  2. 【java】for循环输出数字金字塔

    输出下列数字金字塔.    1  121 123211234321 public class deng { public static void main(String args[]) { int n ...

  3. c/c++实现混合编程

    在开发中大家经常会使用到c与c++混合编程,这样能够更好的实现功能模块.刚学习了一下c和c++的混合编程,参考了网上的相关知识,在这里留下要点,方便以后进行查阅. 1.extern关键字 extern ...

  4. 源码学习之ASP.NET MVC Application Using Entity Framework

    源码学习的重要性,再一次让人信服. ASP.NET MVC Application Using Entity Framework Code First 做MVC已经有段时间了,但看了一些CodePle ...

  5. Java pipeline

    http://cullenprogramming.homelinux.com/PIPEuserguide.htm http://www.cise.ufl.edu/research/ParallelPa ...

  6. Openstack service default port

    Block Storage (cinder) 8776 publicurl and adminurl Compute API (nova-api) 8773 EC2 API 8774 openstac ...

  7. JSON.parse()的异常怎么处理;

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. matlab GUI之 -- 绘图

    1.常用属性 linestyle: 实线 - 虚线 -- 点线 : 点画线 -. marker: 加号 + 圆圈 O 星号 * 方块 S 三角形 ^  <  > 五角星 P color: ...

  9. spring mvc框架 遇到的问题

    web.xml配置文件代码: <?xml version="1.0" encoding="UTF-8"?> <web-app version= ...

  10. java 调用jdbc 实现excel和csv的导入和导出

    jdbc 的连接 实体类 package com.gpdi.mdata.web.manage.database.data;public class DBQueryData {private Strin ...