打了好多个代码。

对于测试点1,11:手动模拟。

  1. void QJ1_11()
  2. {
  3. if(n==)
  4. {
  5. int tk;
  6. if(pd(a[]+a[]))tk=;
  7. else tk=;
  8. if(tk<=k)
  9. {
  10. puts("");
  11. puts("");
  12. }
  13. else
  14. {
  15. puts("");
  16. printf("%d\n",);
  17. }
  18. exit();
  19. }
  20. }

对于测试点2~6:

可以用贪心的方法,从后往前扫,每遇到一个数,判断是否可以加入当前段,不行则断开。复杂度$n^2$.

  1. void QJ2_6()
  2. {
  3. if(k==)
  4. {
  5. if(n==||n==||n==||n==)
  6. {
  7. LL l=n,num=;
  8. for(int i=n;i;i--)
  9. {
  10. for(int j=l;j>i;j--)
  11. if(pd(a[i]+a[j]))
  12. {
  13. num++,ans[++cnt]=i,l=i;break;
  14. }
  15. }
  16. if(ans[cnt]==&&cnt!=){cnt--;}
  17. else num++;
  18. printf("%lld\n",num);
  19. for(int i=cnt;i;i--)
  20. printf("%lld ",ans[i]);
  21. exit();
  22. }
  23. }
  24. }

对于测试点7~10:

n=131072,那么换一种枚举方法,判断是否存在啊a[j]+a[i]=x^2,开一个桶,只需要枚举x(1~512)即可。复杂度n*√n。

  1. void QJ7_10()
  2. {
  3. if(k==)
  4. {
  5. if(n==)
  6. {
  7. int num=;
  8. for(int i=n;i;i--)
  9. {
  10. for(int j=;j&&j*j>a[i];j--)
  11. if(t[j*j-a[i]])
  12. {
  13. num++,ans[++cnt]=i;ma(t);break;
  14. }
  15. t[a[i]]=;
  16. }
  17. if(ans[cnt]==&&cnt!=){cnt--;}
  18. else num++;
  19. printf("%d\n",num);
  20. for(int i=cnt;i;i--)
  21. printf("%lld ",ans[i]);
  22. exit();
  23. }
  24. }
  25. }

对于测试点12~25:

同样的贪心方法,将矛盾的两只兔子连边,如果此时是一张二分图,那么一定可以将其分成两个小团体使其不发生矛盾,k=2,否则就断开。理论复杂度$n^2$,实际上因为点比较水(可能出题人觉得这是$n^3$,所以没有卡这个算法),可以A掉,跑的还挺快。

  1. void QJ12_25()
  2. {
  3. if(k==)
  4. // if(n==4||n==8||n==16)
  5. {
  6. int num=,l=n;
  7. for(re int i=n;i;i--)
  8. {
  9. for(re int j=l;j>i;j--)
  10. if(pd(a[i]+a[j]))
  11. add(i,j),add(j,i);
  12. for(re int j=l;j>=i;j--)co[j]=;
  13. if(!dfs(i,))
  14. {
  15. l=i;num++;ans[++cnt]=i;
  16. for(re int j=l;j>=i;j--)first[j]=;
  17. num_e=;
  18. }
  19. }
  20. if(ans[cnt]==&&cnt!=){cnt--;}
  21. else num++;
  22. printf("%d\n",num);
  23. for(re int i=cnt;i;i--)
  24. printf("%lld ",ans[i]);
  25. exit();
  26. }
  27. }

同样对k=2的正解:

这个我还没打,先坑着。

HZOJ 分组的更多相关文章

  1. 一条Sql语句分组排序并且限制显示的数据条数

    如果我想得到这样一个结果集:分组排序,并且每组限定记录集的数量,用一条SQL语句能办到吗? 比如说,我想找出学生期末考试中,每科的前3名,并按成绩排序,只用一条SQL语句,该怎么写? 表[TScore ...

  2. xamarin android ListView手动分组

    xamarin的listview控件其实自带有分组方法,关于xamarin listview的自带分组方法请自行参考官方文档,我这里只写自己写的分组方法.xamarin自带的分组好是好,功能多,但是加 ...

  3. [Java Collection]List分组之简单应用.

    前言 今天有一个新需求, 是对一个List进行分组, 于是便百度到一些可用的代码以及我们项目使用的一些tools, 在这里总结下方便以后查阅. 一: 需求 现在我们一个数据库表t_series_val ...

  4. TSQL 分组集(Grouping Sets)

    分组集(Grouping Sets)是多个分组的并集,用于在一个查询中,按照不同的分组列对集合进行聚合运算,等价于对单个分组使用“union all”,计算多个结果集的并集.使用分组集的聚合查询,返回 ...

  5. SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段值)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段: 方法二:使用拼接SQL, ...

  6. SolrNet高级用法(分页、Facet查询、任意分组)

    前言 如果你在系统中用到了Solr的话,那么肯定会碰到从Solr中反推数据的需求,基于数据库数据生产索引后,那么Solr索引的数据相对准确,在电商需求中经常会碰到菜单.导航分类(比如电脑.PC的话会有 ...

  7. MongoDB分组汇总操作,及Spring data mongo的实现

    转载请在页首注明作者与出处 一:分组汇总 1.1:SQL样例 分组汇总的应用场景非常多,比如查询每个班级的总分是多少,如果用关系形数据库,那么sql是这样子的 ),class from score g ...

  8. 利用XML FOR PATH 合并分组信息

    -- ================================================ -- Description:合并分组内容 -- Author:夏保华 -- Date:2009 ...

  9. sql 分组取最新的数据sqlserver巧用row_number和partition by分组取top数据

    SQL Server 2005后之后,引入了row_number()函数,row_number()函数的分组排序功能使这种操作变得非常简单 分组取TOP数据是T-SQL中的常用查询, 如学生信息管理系 ...

随机推荐

  1. 在Spring应用中创建全局获取ApplicationContext对象

    在Spring应用中创建全局获取ApplicationContext对象 1.需要创建一个类,实现接口ApplicationContextAware的setApplicationContext方法. ...

  2. oracle习题-简单查询

    题一 1 实现将已知表中的数据插入到另一个表中 学生表:stu1 向表中插入两条数据   学生信息表2:stuinfo 将stu1表中的两条数据导入到stuinfo表中,执行下列语句 此时查看一下st ...

  3. js里面的this指向

    1.  this是动态绑定的,或者说是在代码运行期绑定而不是在书写期 function fire () { console.log(this.a) } var obj = { a: 1, fire: ...

  4. 使用Gradle构建项目

    使用gradle构建项目之前,咱们先聊聊maven,使用maven构建项目和配置主要 接下来正式使用gradle来构建项目的和步骤: 1.下载源码 2.下载gradle 1.下载地址:https:// ...

  5. day38 17-Spring的Bean的属性注入:注解方式

    这个类已经可以由Spring控制反转了,那么属性呢?属性分为普通属性和对象属性两部分. JSR是一个组织,和W3C一样是定义一些标准的.它里面也定义了一歌注解,Spring对这个注解也是支持的.其实这 ...

  6. 阿里云linux服务器到期后续费,网站打不开解决方法之一

    续费后打不开网站,可能会出现不同情况,这里只记录我遇到的问题 问题描述:服务器到期后续费,网站打不开. 解决尝试: 1.重启服务器nginx    /etc/init.d/nginx restart ...

  7. 数据库lib7第4题创建存储过程

    1. 传入2个字符串变量,其中,每个字符串是用分号(:)分隔的字串形式, 比如str1=’ab12;ab;cccc;tty’, str2=’1;6sf;8fffff;dd’, 注意,字符串是用户输入的 ...

  8. Spring_自动组件扫描和 基于注解配置bean

    自动组件扫描 启用Spring组件扫描功能. 使用@Component注释来表示这是类是一个自动扫描组件.  package com.tanlei.dao; import org.springfram ...

  9. 对快速排序的分析 Quick Sort

    快速排序 快排的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序.通常可选第一个记录为基准 ...

  10. Servlet容器container

    通俗点说,所谓容器,就是放东西的地方.Servlet容器自然就是放Servlet的地方.J2EE开发,是有分工的.一般的程序员,写得都是应用开发,我们会按照一定的规则,开发我们的系统,比如用Servl ...