首页 > 代码库 > qscoj 喵哈哈村 40,41

qscoj 喵哈哈村 40,41

链接: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

对于每组数据,输出答案。

 
3 5
1 5
2 10
3 7
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个空格分隔的整数。每个整数表示该位置距离最近的水域的距离。
每行的末尾都请加一个空格……

 
4 4  
0110  
1111  
1111  
0110
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;
        }
            
    }
}

 

 
 
 
 

qscoj 喵哈哈村 40,41