题目传送门


题目描述

小$C$在了解了她所需要的信息之后,让兔子们调整到了恰当的位置。小$C$准备给兔子们分成若干个小组来喂恰当的胡萝卜给兔子们吃。
此时,$n$只兔子按一定顺序排成一排,第$i$只兔子的颜色是$a_i$。由于顺序已经是被调整好了的,所以每个小组都应当是序列上连续的一段
在分组前,小$C$发现了一个规律:有些兔子会两两发生矛盾。并且,两只兔子会发生矛盾,当且仅当代表他们的颜色的数值之和为一个正整数的平方。比如,$1$色兔子和$2$色兔子不会发生矛盾,因为$3$不是任何一个正整数的平方;而$1$色兔子却会和$3$色兔子发生矛盾,因为$4=2^2$。
小$C$认为,只要一个小组内的矛盾不要过大就行。因此,小$C$定义了一个小组的矛盾值$k$,表示在这个小组里,至少需要将这个组再一次分成$k$个小团体;每个小团体并不需要是序列上连续的一段,但是需要使得每个小团体内任意两只兔子之间都不会发生矛盾。
小$C$要求,矛盾值最大的小组的矛盾值$k$不超过$K$就可以了。当然,这样的分组方法可能会有很多个;为了使得分组变得更加和谐,小$C$想知道,在保证分组数量最少的情况下,字典序最小的方案是什么。你能帮帮她吗?
字典序最小的方案是指,按顺序排列分组的间隔位置,即所有存在兔子$i$和$i+1$在不同组的位置。


输入格式

输入第1行两个正整数$n,K$。
输入第2行$n$个正整数,第$i$个数表示第$i$只兔子的颜色$a$。


输出格式

输出第$1$行一个正整数$m$,为你至少需要将兔子分为多少个小组。
输出第$2$行$m-1$个从小到大的排列的正整数,第$i$个数$s_i$表示$s_i$和$s_{i+1}$在你的方案里被分到了两个小组。如果$m=1$,那么请输出一个空行。


样例

样例输入1:

5 2
1 3 15 10 6

样例输出1:

2
1

样例输入2:

319 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319

样例输出2:

6
7 31 71 127 199


数据范围与提示

样例$1$解释:

如果将五只兔子全部分到同一个小组的话,那么$(1,3)(3,6)(6,10)(10,15)(1,15)$均不能分到同一个小团体;因为最多分成两个小团体,所以为了满足前4对限制,只能分为$\{\{1,6,15\},\{3,10\}\}$,但此时不满足$(1,15)$,所以不存在一种组数为$1$的方案满足全部限制。
如果将五只兔子分为两个小组的话,一种字典序最小的可行的分组方案是$\{1\},\{3,15,10,6\}$,此时第二组内的小团体数量不超过$2$的一种分法是$\{\{3,10\},\{15,6\}\}$。

数据范围:

任务会给出部分测试数据的特点。如果你在解决题目中遇到了困难,可以尝试只解决一部分测试数据。
每个测试点的数据规模及特点如下表:

测试点       $K$           $n$                 $a_i,c_j$               特殊性质$1$           特殊性质$2$
    $1$             $1$           $2$                 $\leqslant 131072$              $\surd$                          $\times$
    $2$             $1$           $4$                 $\leqslant 131072$              $\times$                          $\times$
    $3$             $1$          $16$               $\leqslant 131072$               $\times$                          $\times$
    $4$             $1$          $256$             $\leqslant  131072$              $\surd$                          $\times$
    $5$             $1$          $1024$          $\leqslant 131072$              $\surd$                          $\times$
    $6$             $1$          $1024$          $\leqslant 131072$              $\times$                          $\times$
    $7$             $1$          $131072$     $\leqslant 2$                          $\surd$                          $\times$
    $8$             $1$          $131072$     $\leqslant 131072$              $\surd$                          $\times$
    $9$             $1$          $131072$     $\leqslant 131072$              $\times$                          $\surd$
    $10$           $1$         $131072$      $\leqslant 131072$              $\times$                          $\times$
    $11$           $2$         $2$                  $\leqslant 131072$              $\surd$                          $\times$
    $12$           $2$         $4$                  $\leqslant 131072$              $\times$                          $\times$
    $13$           $2$         $8$                  $\leqslant 131072$              $\times$                          $\times$
    $14$           $2$         $16$               $\leqslant 131072$               $\times$                          $\times$
    $15$           $2$         $256$             $\leqslant 131072$              $\surd$                          $\times$
    $16$           $2$         $256$             $\leqslant 131072$              $\times$                          $\surd$
    $17$           $2$         $1024$           $\leqslant 2$                          $\surd$                          $\times$
    $18$           $2$         $1024$           $\leqslant 131072$              $\times$                          $\times$
    $19$           $2$         $4096$           $\leqslant 2$                          $\times$                           $\times$
    $20$           $2$         $4096$           $\leqslant 131072$              $\times$                          $\times$
    $21$           $2$

转载于:https://www.cnblogs.com/wzc521/p/11297146.html

[洛谷P3940]:分组(贪心+并查集)相关推荐

  1. 【洛谷 P7299】 【并查集】 Dance Mooves S

    [洛谷 P7299] [并查集] Dance Mooves S 题目 解题思路 可以先求出k轮后i能到达next[i] 可以发现将会组成由很多个简单环组成的图,它们能到达的点可以共享给同一个环内的 所 ...

  2. 洛谷 P1967货车运输 并查集+贪心 不需要用LCA!

    题目链接 题目链接 题解 要求所有的路径中最小边长的最大值! 我们贪心的加边,依照边从大往小的方式往里添加,然后合并并查集. 每次当查询分布在两个待合并的并查集的时候,当前的边长就是这次查询的答案. ...

  3. 洛谷 - P1111 - 修复公路 - 并查集

    https://www.luogu.org/problemnew/solution/P1111 并查集的水题,水题都错了好多发. 首先并不是有环就退出,而是连通分支为1才退出,每次合并成功连通分支才会 ...

  4. 洛谷P1551 亲戚(并查集)

    题目链接 思路: 并查集的模板题目 关于并查集相关知识可以看此博客 AC代码 #include<iostream> #include<cstdio> #include<a ...

  5. 每日一题——洛谷 P1551 亲戚 (并查集)

    大家好,我是爬行系,今天打卡并查集相关例题 文章目录 并查集 1.概念 2.模板 例题 1.题目描述 2.AC代码 更多练习题 总结 并查集 1.概念 并查集的思想是用一个数组表示了整片森林(pare ...

  6. 洛谷 - P4997 - 不围棋 - 并查集 - 模拟

    https://www.luogu.org/problemnew/show/P4997 首先是改变气的定义,使得容易计算,这个很好理解. 然后使用并查集,因为要维护整个连通块的性质. 最后的难点在于, ...

  7. 解题:洛谷3402 可持久化并查集

    题面 滚下去补学考之前更一发 基于可持久化线段树实现(我不很喜欢"主席树"这个名字),注意不能路径压缩,首先这与可持久化的思想冲突(即尽量利用之前已有的部分,只修改有修改的部分,路 ...

  8. 【洛谷1892】团伙 并查集

    题意 题面说的很清楚 同noip2010关押罪犯 传送门:http://blog.csdn.net/dadatu_zhao/article/details/78806584 #include<i ...

  9. F 魏迟燕的自走棋(思维+贪心+并查集维护联通块/左部点配对边<=2的匈牙利)

    https://ac.nowcoder.com/acm/contest/9984/F 参考:F 魏迟燕的自走棋(贪心+并查集) 将每个人看成一个点,武器的能力值抽象成边,这样就转化成图论的模型了. 然 ...

最新文章

  1. 【经典书单】NLP秘笈汇总,从入门到进阶
  2. C++知识点4——vector与string简述
  3. 优胜教育暴雷之后,线下一对一还是门好生意吗?
  4. ajax如何实现、readyState五中状态的含义
  5. python入门——P40类和对象:一些相关的BIF
  6. 1304: 防御导弹 (未完)
  7. podman,ctr镜像导入导出
  8. 世界需要简化第四篇:从地面发射人造卫星或战术导弹,如何控制其运行轨道?——算法经高度抽象简化,所有下标经仔细核对
  9. Affymetrix SNP6.0芯片分析
  10. 国庆长假自驾游推荐路线
  11. llvm greedy register allocator
  12. 微信开发获取access_token(凭证)接口的详解
  13. Docker的数据管理
  14. 分享一个吐血三升的GNS3 ASAv9.X直连ping不通的原因
  15. 程序员知识体系探索:点、线、面、体
  16. 406错误 java
  17. 云南省增值税发票综合平台(新网址):https://fpdk.yunnan.chinatax.gov.cn/
  18. 怎么用u盘安装win764位系统
  19. springboot基于vue焕心眼镜商城的设计与实现毕业设计源码091546
  20. BUC算法及其Python实现

热门文章

  1. 安卓手机玩游戏卡顿怎么解决_解决安卓手机卡顿反应慢的9个技巧
  2. 如何使用Win10自带的截图工具截屏
  3. LAMMPS—fix命令超详细解析
  4. 简单python爬取微博并写入excel
  5. SpringBoot 整合WebSocket 简单实战案例
  6. [药品飞检]六大部门检查要点(38个子项目)
  7. php手机号登陆,ecshop登录支持手机号码登录、邮箱登录
  8. 企业档案管理实务:档案的检索方法知多少
  9. 计算机考证相关的证书
  10. Pycharm如何更改运行(run)的快捷键