文章
10
粉丝
179
获赞
33
访问
37.9k
#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;
...
登录后发布评论
暂无评论,来抢沙发