国庆开始只切了几道水题,想了想还是记录一下吧
来源:互联网 发布:淘宝卖家开店时间查询 编辑:程序博客网 时间:2024/05/21 14:42
最大岛屿
- 描述
神秘的海洋,惊险的探险之路,打捞海底宝藏,激烈的海战,海盗劫富等等。加勒比海盗,你知道吧?杰克船长驾驶着自己的的战船黑珍珠1号要征服各个海岛的海盜,最后成为海盗王。 这是一个由海洋、岛屿和海盗组成的危险世界。面对危险重重的海洋与诡谲的对手,如何凭借智慧与运气,建立起一个强大的海盗帝国。
杰克船长手头有一张整个海域的海图,上面密密麻麻分布着各个海屿的位置及面积。他想尽快知道整个海域共有多少岛屿以及最大岛屿的面积。
- 输入
- 第1行:M N T,表示海域的长,宽及一个单位表示的面积大小
接下来有M行 ,每行有N个01组成的序列以及其中穿插一些空格。0表示海水,1表示陆地,其中的空格没用,可以忽略掉。 - 输出
- 输出一行,有2个整数,一个空格间隔,表示整个海域的岛屿数,以及最大岛屿的面积
- 样例输入
8 16 99
00000000 00000000
0000110011000000
0001111000111000
0000000 00 0000000
00111 111000001 10
001110000 0000000
0100001111 111100
0000000000000000
- 样例输出
5 990
- 提示
- ①若一个陆地八个方向之一(上、下、左、右、左上、右上、左下、右下)的位置也是陆地,则视为同一个岛屿。
② 假设第一行,最后一行,第一列,最后一列全为0.
③ 1<M, N≤500 1<T≤100000
注意空格的处理
ac代码:
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>#define MAXN 550#define MAX(a,b) a>b?a:busing namespace std;int n,m,sum;int dir[8][2]={{0,1},{0,-1},{1,0},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1}};int map[MAXN][MAXN];int v[MAXN][MAXN];int check(int xx,int yy){if(map[xx][yy]==0||xx<0||xx>=n||yy<0||yy>=m)return 0;if(v[xx][yy])return 0;return 1;}void dfs(int x,int y){if(check(x,y)){sum++;v[x][y]=1;for(int i=0;i<8;i++){dfs(x+dir[i][0],y+dir[i][1]);}}}int main(){int i,j,k;char s[MAXN];while(scanf("%d%d%d",&n,&m,&k)!=EOF){getchar();for(i=0;i<n;i++){gets(s);int cnt=0;int len=strlen(s);for(j=0;j<len;j++){if(s[j]!=' ')map[i][cnt++]=s[j]-'0';}}memset(v,0,sizeof(v));int num=0;int M=-1;for(i=0;i<n;i++){for(j=0;j<m;j++){if(map[i][j]==1&&!v[i][j]){num++;sum=0;dfs(i,j);M=MAX(M,sum);}}}printf("%d %d\n",num,M*k);} return 0;}
引水工程
- 描述
南水北调工程是优化水资源配置、促进区域协调发展的基础性工程,是新中国成立以来投资额最大、涉及面最广的战略性工程,事关中华民族长远发展。“南水北调工程”,旨在缓解中国华北和西北地区水资源短缺的国家战略性工程。就是把中国长江流域丰盈的水资源抽调一部分送到华北和西北地区。我国南涝北旱,南水北调工程通过跨流域的水资源合理配置,促进南北方经济、社会与人口、资源、环境的协调发展。
整个工程分东线、中线、西线三条调水线。东线工程位于东部,因地势低需抽水北送至华北地区。中线工程从汉水与其最大支流丹江交汇处的丹江口水库引水,自流供水给黄淮海平原大部分地区,20多座大中城市;西线工程在青藏高原上,由长江上游向黄河上游补水。
现在有N个区域需要建设水资源工程,它们可以自建水库解决缺水问题,也可以从已有水源的地区建立管道引水过来。当然,这些建设都需要大量投资。
你能不能给出一个优化水资源配置方案,在保证每个区域都能用上水的前提下,使得整个引水工程费用最低。
- 输入
- 第一行: K 表示有多少组测试数据。
接下来对每组测试数据:
第1行: N 表示有N个区域( 1<=N<=300 )
第2 行: W1 W2 …. WN Wi表示第i个区域自建水库需要的费用
再有N行: Pi1 Pi2 …. Pin Pij表示建立第i个区域与第j个区域引水管道的费用 - 输出
- 对于每组测试数据,输出占一行,即建立整个引水工程的最小费用。
- 样例输入
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
- 样例输出
10
建一个虚拟结点,表示自建水库的费用,然后就是prim就行了
ac代码:
#include<stdio.h>#include<string.h>#include<math.h>#include<iostream>#include<algorithm>#define MAXN 330#define INF 0xfffffff#define MIN(a,b) a>b?b:ausing namespace std;int pri[MAXN][MAXN];int dis[MAXN];int self[MAXN];int v[MAXN];int n,sum;void prime(){int i,j,k,M;memset(v,0,sizeof(v));for(i=0;i<=n;i++)dis[i]=pri[0][i];for(i=0;i<=n;i++){M=INF;for(j=0;j<=n;j++){if(dis[j]<M&&!v[j]){k=j;M=dis[j];}}if(M==INF)return;v[k]=1;sum+=M;for(j=0;j<=n;j++){if(pri[k][j]<dis[j]&&!v[j])dis[j]=pri[k][j];}}}int main(){int t,i,j,num;scanf("%d",&t);while(t--){scanf("%d",&n);for(i=1;i<=n;i++){scanf("%d",&pri[0][i]);pri[i][0]=pri[0][i]; }for(i=1;i<=n;i++){for(j=1;j<=n;j++){scanf("%d",&num);pri[i][j]=num;}}sum=0; prime();printf("%d\n",sum);}return 0;}
Interference Signal
- 描述
Dr.Kong’s laboratory monitorsome interference signals. The interference signals can be digitized into aseries of positive integer. May be, there areN integers a1,a2,…,an.
Dr.Kong wants toknow the averagestrength of a contiguous interference signal block.the block mustcontain at least M integers.
Pleasehelp Dr.Kong tocalculate themaximumaverage strength, giventhe constraint.
- 输入
- The input contains K test cases. Each test case specifies:
* Line 1: Two space-separated integers, N and M.
* Lines2~line N+1: ai (i=1,2,…,N)
1 ≤ K≤ 8, 5 ≤ N≤ 2000, 1 ≤ M ≤ N, 0 ≤ ai ≤9999 - 输出
- For each test case generate a single line containing a single integer that is 1000 times the maximal average value. Do not perform rounding.
- 样例输入
2 10 6
6
4
2
10
3
8
5
9
4
1
5 2
10
3
8
5
9
- 样例输出
6500
7333
题意:一个数组,求连续的长度至少为m的一段数组的最大平均值
直接暴力
ac代码:
#include<stdio.h>#include<string.h>#include<math.h>#include<iostream>#include<algorithm>#define MAXN 2010#define INF 0xfffffff#define MAX(a,b) a>b?a:busing namespace std;int num[MAXN];int main(){int t,i,j,n,m,k;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);for(i=1;i<=n;i++)scanf("%d",&num[i]);int M,max=-1;int sum;for(k=m;k<=n;k++){M=-1;for(i=1;i<=n-k+1;i++){sum=0;for(j=i;j<=i+k-1;j++){sum+=num[j];}M=MAX(sum,M);}M=M*1000/k;max=MAX(max,M); }printf("%d\n",max);}return 0;}
啊啊啊啊,写着写着不想写了,太水了,不写了!!!!
- 国庆开始只切了几道水题,想了想还是记录一下吧
- 开始写IT博客了,纪念一下吧!
- 记录一下吧,不然又要开始浪费时间和资源了
- 国庆了
- 开始N次了,还是开始了。
- 还是想你了
- 开始记录了~~~
- 开始记录东西了
- 开始想她了
- 今天开始记录一点一滴了
- 我要开始记录了!
- 还是花3-5秒存一下吧,以后不该吃的不能吃了
- 从这一客开始我的博客只记录人生,再不刻意做关键字排名了
- 明天就是国庆了
- 国庆回家了
- 准备回家“国庆”了
- 国庆了,启程~
- 国庆了!休息休息!
- oponcv运行时无法找到、打开PDB文件(cannot find or open pdb file),程序已经退出,返回值-1(0xffffff)
- runtime
- struct 大小的计算
- Python核心编程笔记 - 第11章 函数式编程
- SSH网上商城(一)---用户注册激活邮件
- 国庆开始只切了几道水题,想了想还是记录一下吧
- 教学相长—导师制
- sqlite的配置
- 特殊的矩阵
- C++学习笔记之多态(虚函数)
- hdu 5430(几何)
- wordCount源码分析
- note: please rebuild precompiled header ..... /UIKit-2DYE2I2D1B3GL.pcm 解决方案
- Linux--进程组、会话、守护进程 http://www.cnblogs.com/forstudy/archive/2012/04/03/2427683.html