【BZOJ5060】魔方国 特判
【BZOJ5060】魔方国
Description
小奇和魔法猪打开了战狂的遗迹,穿越到了东元20年。东元元年,战狂率领一千万士兵毁灭了一个又一个文明,并建立起了新文明——昌和帝国,招募了八位伟人:大将军、海军上将、大科学家、大预言家、大工程师、大艺术家、大音乐家、大作家。东元15年,伟大的革命领袖方方方召集仅存的几个文明,组成联盟对抗战狂。方方方设计先后杀死了大作家和大艺术家,并重创了战狂。东元20年,方方方率军进攻大将军,大将军花重金(1600奥术之尘)请来了砰砰博士,炸死了方方方。随后,大将军占领了联盟数座城市并包围了联盟首都。这时,小奇和魔法猪从天而降。它们听说了方方方的英勇事迹,十分感动,决定帮助联盟对抗战狂。在接下来一个月的时间里,小奇和魔法猪夺回了n-1座城市。为了纪念方方方,小奇把联盟改名为魔方国,并打算修建m条道路。一条道路必须要连接两个不同的城市(首都也算城市),两个城市之间可以有多条道路。在修建完道路后,小奇会在一些城市中放置魔法守卫。一个魔法守卫会守护它所在的城市以及与从它所在的城市出发,经过不超过k条边所能到达的城市。在守护所有城市的基础上,小奇会使魔法守卫的数量尽可能少。显然,每一种修建道路的方案都会对应一个最少守卫数。现在,小奇想知道最少守卫数可能是多少
Input
输入一行三个数,分别为n,m,k。
n,m<=100000,k<=100
Output
输出两行,第一行一个数表示最少守卫数的数量,第二行从小到大依次输出
所有可能的最少守卫数。
Sample Input
3 2 1
Sample Output
2
1 2
1 2
题解:由于可以连重边,所以。。。傻题。
特判:n=1且m>0连不了边;k=0;n<=m;m=0。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <cstdio> int main() { int n,m,k,a,b; scanf ( "%d%d%d" ,&n,&m,&k),a=(n<=m)?1:n-m,b=(!m)?n:n-1; if (n==1&&m) printf ( "0" ); else if (!k) printf ( "1\n%d" ,n); else { printf ( "%d\n" ,b-a+1); while (a<b) printf ( "%d " ,a++); printf ( "%d" ,b); } return 0; } |
| 欢迎来原网站坐坐! >原文链接<
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架