CF1283D Christmas Trees

张开发
2026/4/9 1:11:06 15 分钟阅读

分享文章

CF1283D Christmas Trees
题目大意有 n 棵圣诞树和 m 个人你已经知道了每个圣诞树的位置你需要确定每个人的位置使得每个人到离自己最近的圣诞树的距离和最小。思路一眼贪心肯定是在每棵圣诞树左右放人否则就是左边的左边或者右边的右边以此类推用队列维护。代码#includebits/stdc.h #define int long long using namespace std; const int N2e55,dx[]{-1,1}; int n,m,x,sum; queueint q; vectorint ans; mapint,int dis; void bfs(){ while(ans.size()m){ int uq.front(); q.pop(); sumdis[u]; if(dis[u]){ ans.push_back(u); } for(int i0;i2;i){ int xxudx[i]; if(dis.count(xx)){ continue; } dis[xx]dis[u]1; q.push(xx); } } } signed main(){ scanf(%lld%lld,n,m); for(int i1;in;i){ scanf(%lld,x); dis[x]0; q.push(x); } bfs(); printf(%lld\n,sum); for(int i0;ians.size();i){ printf(%lld ,ans[i]); } return 0; }

更多文章