我只做出来了第一道和第三道,我把第三道贴出来吧 思路就是:生成一个最小生成树,找出最深的节点。从根到最深都是花费1,其他的节点都是一步花费2。 #include<bits/stdc++.h> using namespace std; int a[1001] = {0}; int main(){ memset(a, -1, 1000); int n, k; cin >> n >> k; int tmp; for(int i = 0; i < n-1;i++){ cin >> tmp; if(tmp > i+1){ a[tmp] = i+1; }else{ a[i+1] = tmp; } } int b[1001] = {0}; for(int i = n-1; i >= 0 ;i--){ b[a[i]] = b[a[i]] > (b[i]+1) ? b[a[i]] : (b[i]+1); } for(int i = 0; i < n ;i++){ cout << b[i] << " "; } if(k <= b[0]){ cout << b[0] + 1; }else{ cout << (k - b[0])/2 + b[0] + 1; } return 0; }
1 1

相关推荐

一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
oppo 应用软开 22*15+0.5*12
拿到了ssp完美:真的坎坷,但是你至少拿到这么多offer了!
点赞 评论 收藏
分享
牛客网
牛客企业服务