设为首页 加入收藏

TOP

2017ZZUACM省赛选拔试题部分题解----谨以纪念我这卡线滚粗的美好经历(三)
2017-10-12 18:16:01 】 浏览:4337
Tags:2017ZZUACM 选拔 试题 部分 题解 ---- 纪念 卡线滚 美好 经历
zhi;
int res; int maxv=1000000+7; int ss() { int len=0; b[0]=0; for(int i=weizhi;i<shumu;i++) { if(jm[i]>b[len]) { len++; b[len]=jm[i]; } else { for(int j=1;j<=len;j++) { if(jm[i]<=b[j]) { b[j]=jm[i]; break; } } } } return len; } int xj() { int len=0; b[0]=maxv; for(int i=0;i<weizhi+1;i++) { if(jm[i]<b[len]) { len++; b[len]=jm[i]; } else { for(int j=1;j<=len;j++) { if(jm[i]>=b[j])//大于等于都换,否则长度算出来有问题 { b[j]=jm[i]; break; } } } } return len; } int main() { int T; cin>>T; for(int i=0;i<T;i++) { cin>>shumu; int yc=0; memset(jm,0,sizeof(jm)); for(int j=0;j<shumu;j++) { cin>>jm[j]; } res=shumu; for(int k=0;k<shumu;k++) { weizhi=k; int m,n; m=ss();n=xj(); if(m==1||n==1) { continue; } int u=shumu-m-n+1; if(res>u)res=u; } if(res<shumu-2) { cout<<res<<endl; } else { cout<<"No Solution"<<endl; } } return 0; }

题目 D :最佳地址

Time Limit: 2 Sec  Memory Limit: 128 MB
Description
某地区M座煤矿,其中第i号矿每年产量为Ai吨,现有火力发电厂一个,每年需用煤B吨,
每年运行的固定费用(包括折旧费,不包括煤的运费)为H元,每吨原煤从第i号矿运到
原有发电厂的运费为Ci0(i
=12,…,M)。  现规划新建一个发电厂,M座煤矿每年开采的原煤将全部供给这两座发电厂。现有N个备选
的厂址。若在第j号备选厂址建新厂,每年运行的固定费用为Hj元。每吨原煤从第i号矿运
到j号备选厂址的运费为Cij(i
=12,…,M;j=12,…,N)。  试问:应把新厂厂址选取在何处?M座煤矿开采的原煤应如何分配给两个发电厂,才能使
每年的总费用(发电厂运行费用与原煤运费之和)为最小。 
Input 第一行: T     表示以下有T组测试数据(
1≤T ≤5) 对每组测试数据: 第1行:       M  B  H  N  第2行:       A1  A2 …  Am               (0<=Ai<=500,   A1+A2+...+An>=B) 第3行:      H1  H2 …  Hn               (0<=Hi<=100) 第4行:       C10  C20 … Cm0               第5行:       C11  C21 … Cm1                                …   …  第n+4行:  C1n  C2n … Cmn              (0<=Cij<=50) Output 每组测试数据,输出占一行,两个整数,即新厂址编号和总费用。如果有多个编号满足要求,输出最小的。 Sample Input 1 4 2 7 9 3 1 10 3 6 3 7 1 10 2 7 4 9 1 2 4 3 6 6 8 2 4 10 8 4 10 2 9 2 7 6 6 2 9 3 7 1 2 1 6 9 3 1 10 9 4 2 1 8 2 1 3 4 Sample Output 8 49

题解:哈哈,这题写出来时间空间复杂度都超级低,嘿嘿(学长用时200+ms,我的0-4ms左右)。大概思路呢就是先不管原发电厂要多少煤求出最小费用,然后在此期间,分别用了两个结构体数组记忆运到原发电厂比新建发电厂贵的费用差和具有的煤的数量(rem0),以及新建发电厂比原发电厂贵的费用差和具有的煤的数量(rem),然后看一下不管条件的最小费用后的给原发电厂的煤是多了还是少了,如果多了,就从rem0里按每吨煤价值差小(sort)的在前面先算,一吨吨卸下来(类似部分背包)。反之同理。

如诺手机查看代码不好看请转:http://paste.ubuntu.com/24387745/

  1 #include <bits/stdc++.h>
  2 
  3 using namespace std;
  4 const int maxn=105;
  5 struct Rem
  6 {
  7     int va
首页 上一页 1 2 3 4 下一页 尾页 3/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇bzoj3289 -- 莫队+树状数组 下一篇C++实现的控制台-贪吃蛇

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目