文章

10

粉丝

179

获赞

5

访问

27.2k

头像
直接搜索,让路的数组为2500,不用再单独考虑最后一个点
P1739 华东师范大学2020年机试题
发布于2023年2月11日 15:35
阅读数 2.7k

#include <bits/stdc++.h>
using namespace std; 
typedef long long ll;
const int INF=1e9;
int N=0,M=0,K=0;
string str,a,b;
int strshu,x,y;
int sum=0;
int road[2500]={0};
//stringstream ss;

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    while(cin>>N){
        cin>>M>>K;
        
        for(int i=0;i<M;i++){
            
            cin>>x;
            
            road[x]=1;
            for(int j=1;j<=K;j++){ //让路灯安装处的左右k处的点都点亮
                if(x-j>=1) road[x-j]=1;//若左边到了边界,要特殊考虑
                road[x+j]=1;//因为数组足够大,所以不用考虑右边边界问题
            }
            
        }
        
        for(int i=1;i<=N;i++){  //探索整条路的照亮情况
            if(road[i]==0){ //当有的点还没被照亮
                sum++;//要安装的路灯数加一
                int tem=i+K;//让点移动到左边k处,分别让它照亮左边k处和右边k处
                road[tem]=1;
                for(int j=1;j<=K;j++){
                if(tem-j>=1) road[tem-j]=1;
     ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发