链接:http://qscoj.cn/problem/41/
喵哈哈村的七十六
发布时间: 2017年3月14日 20:02 最后更新: 2017年3月14日 20:03 时间限制: 1000ms 内存限制: 128M
描述
为了拯救喵哈哈村,这个世界必须要存在英雄。
一名英雄七十六站了出来!
但是七十六需要一把强大的武器,于是他走进了武器商店。
第$i$把武器需要$b[i]$元,能提供$c[i]$的武力值。
他现在有$a$元,他只能购买一把武器,请问他最多能够增加多少武力值呢?
如果什么都买不了,就输出0。
输入
本题包含若干组测试数据。
第一行两个整数n,a,分别表示武器店的武器数量、七十六拥有的金钱数量。
接下来n行数据,每行两个整数b[i],c[i]。
满足:
1<=n<=100,0<=a<=100000
0<=b[i],c[i]<=100000
输出
对于每组数据,输出答案。
样例输入1
3 5 1 5 2 10 3 7
样例输出1
10
题解 :比大小
#include<bits/stdc++.h> using namespace std; int main(){ int n,a; while(cin>>n>>a){ int ans=0; for(int i=1;i<=n;i++){ int b,c; cin>>b>>c; if(a>=b) ans=max(ans,c); } cout<<ans<<endl; } }
喵哈哈村的麦克雷
发布时间: 2017年3月14日 20:02 最后更新: 2017年3月14日 20:03 时间限制: 1000ms 内存限制: 128M
描述
为了拯救喵哈哈村,这个世界必须要存在英雄。
一名叫做麦克雷的英雄站了出来!他现在面临一个难题:
给定一个N x M的01矩阵,其中1表示陆地,0表示水域。对于每一个位置,求出它距离最近的水域的距离是多少。
矩阵中每个位置与它上下左右相邻的格子距离为1。
输入
本题包含若干组测试数据:
第一行包含两个整数,N和M。
以下N行每行M个0或者1,代表地图。
数据保证至少有1块水域。
满足,1 <= N, M <= 100
输出
输出N行,每行M个空格分隔的整数。每个整数表示该位置距离最近的水域的距离。
每行的末尾都请加一个空格……
样例输入1
4 4 0110 1111 1111 0110
样例输出1
0 1 1 0 1 2 2 1 1 2 2 1 0 1 1 0
题解:BFS
#include<bits/stdc++.h> using namespace std; const int maxn = 805; string s[maxn];//地图 int mp[maxn][maxn];//记录距离 int dx[4]={0,0,1,-1};//方位 int dy[4]={1,-1,0,0}; int N,M; int main(){ while(cin>>N>>M){ queue<int> QX,QY; for(int i=0;i<N;i++)cin>>s[i]; memset(mp,-1,sizeof(mp)); for(int i=0;i<N;i++) for(int j=0;j<M;j++){ if(s[i][j]==‘0‘){//如果是水域,距离就为1 mp[i][j]=0; QX.push(i);QY.push(j); } } while(!QX.empty()){ int nx=QX.front();int ny=QY.front(); QX.pop();QY.pop(); for(int i=0;i<4;i++){ int nex=nx+dx[i];int ney=ny+dy[i]; if(nex<0||nex>=N)continue; if(ney<0||ney>=M)continue; if(mp[nex][ney]!=-1)continue;//是否访问 mp[nex][ney]=mp[nx][ny]+1;//原来距离+1 QX.push(nex);QY.push(ney); } } for(int i=0;i<N;i++){ for(int j=0;j<M;j++)cout<<mp[i][j]<<" "; cout<<endl; } } }
时间: 2024-12-14 18:46:21