[1,n]n个数分成k组,每组n/k个,问k组数和相等的解决方案

首先(1+n)*n/2判定一下是否可以被k整除

n/k为偶数时显然成立

n/k为奇数时每组数前三个很难配,我想了一种玄学的结论,也证明不出来为什么是对的。。

#include<bits/stdc++.h>
using namespace std;
#define maxn 200005
int n,k;
vector<int>G[maxn];
pair<int,int>a[*];
int main(){
int t;cin>>t;
while(t--){
scanf("%d%d",&n,&k);
if(n==){puts("yes");cout<<<<endl;continue;} for(int i=;i<=n;i++)G[i].clear(); int tmp=n/k;//每组的个数
if(tmp%==){
puts("yes");
for(int i=;i<=n;i+=*k){
for(int j=i;j<=i+k-;j++)
G[j-i+].push_back(j);
for(int j=i+k;j<=i+*k-;j++)
G[k-(j-i-k)].push_back(j);
}
for(int i=;i<=k;i++){
cout<<G[i][];
for(int j=;j<n/k;j++)
cout<<" "<<G[i][j];
puts("");
}
}
else {//最后还剩下三组配不出来
if(tmp== || k%==){puts("no");continue;}//每组一个或组数为偶数 int step=k/,p=;
memset(a,,sizeof a);
for(int i=;i<=k;i++){
p+=step;
while(p>k)p-=k;
a[i+p+*k]=make_pair(i+k,p+*k);
}
int sum=(+*k)*/;
for(int i=;i<=k;i++){
G[i].push_back(i);
pair<int,int>b=a[sum-i];
G[i].push_back(b.first);
G[i].push_back(b.second);
} for(int i=*k+;i<=n;i+=*k){
for(int j=i;j<=i+k-;j++)
G[j-i+].push_back(j);
for(int j=i+k;j<=i+*k-;j++)
G[k-(j-i-k)].push_back(j);
}
puts("yes");
for(int i=;i<=k;i++){
cout<<G[i][];
for(int j=;j<n/k;j++)
cout<<" "<<G[i][j];
puts("");
} } }
}

凑出和相等的k组数,玄学结论——hdu6616的更多相关文章

  1. 373. Find K Pairs with Smallest Sums 找出求和和最小的k组数

    [抄题]: You are given two integer arrays nums1 and nums2 sorted in ascending order and an integer k. D ...

  2. 算法进阶面试题02——BFPRT算法、找出最大/小的K个数、双向队列、生成窗口最大值数组、最大值减最小值小于或等于num的子数组数量、介绍单调栈结构(找出临近的最大数)

    第二课主要介绍第一课余下的BFPRT算法和第二课部分内容 1.BFPRT算法详解与应用 找到第K小或者第K大的数. 普通做法:先通过堆排序然后取,是n*logn的代价. // O(N*logK) pu ...

  3. mysql 怎么查询出,分组后的总条数。。。也就是有多少组数。。。。怎么写

    SELECT COUNT(*) AS 多少组数FROM( SELECT id FROM 表 GROUP BY id) subQuery;Mysql,有一个表含有以下字段,uid 发帖人id,title ...

  4. 698. Partition to K Equal Sum Subsets 数组分成和相同的k组

    [抄题]: Given an array of integers nums and a positive integer k, find whether it's possible to divide ...

  5. 基于快速排序的数组划分:2组 3组 K组(sort color)大小写排序 · Partition Array

    2组: [抄题]: 给出一个整数数组 nums 和一个整数 k.划分数组(即移动数组 nums 中的元素),使得: 所有小于k的元素移到左边 所有大于等于k的元素移到右边 返回数组划分的位置,即数组中 ...

  6. 51Nod 1001 数组中和等于K的数对 Label:Water

    给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A:{-1,6,5,3,4,2,9,0,8},所有和等于8的数对包括(-1,9),(0 ...

  7. 码农谷 找出N之内的所有完数

    题目描述 一个数如果恰好等于它的因子之和,这个数就称为"完数". 例如,6的因子为1.2.3,而6=1+2+3,因此6是"完数". 编程序找出N之内的所有完数, ...

  8. 1001 数组中和等于K的数对

    1001 数组中和等于K的数对 基准时间限制:1 秒 空间限制:131072 KB 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A ...

  9. 蓝桥杯之K好数问题

    问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.13.20.22 ...

随机推荐

  1. 转帖 maven(一) maven到底是个啥玩意~

    转载自:https://www.cnblogs.com/whgk/p/7112560.html 我记得在搞懂maven之前看了几次重复的maven的教学视频.不知道是自己悟性太低还是怎么滴,就是搞不清 ...

  2. Android开发 VideoView视频播放详解

    前言 VideoView是Android主要的视频播放View,它其实是对MediaPlayer的再次封装.如果你已经了解过MediaPlayer在使用VideoView是十分简单的.如果你想先了解M ...

  3. 使用appium1.4在android8.0真机上测试程序时报错command failed shell "ps 'uiautomator'"的解决方式

    appium1.4,运行自动化脚本时提示 org.openqa.selenium.SessionNotCreatedException: A new session could not be crea ...

  4. org.springframework.web.servlet.DispatcherServlet异常

    org.springframework.web.servlet.DispatcherServlet: No mapping found for HTTP request with URI [/] in ...

  5. xshell本地上传文件到Ubuntu上及从Ubuntu上下载文件到本地

    1.第一种方法是最常用的 :如果下载了Xshell和Xftp,Ctrl+Alt+F就可以选择文件的互传了!(虚拟机/云服务器通用)--只要相互间能ping得通. 2.第二种方法 :ubuntu环境下安 ...

  6. 接口使用Http发送post请求工具类

    HttpClientKit import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamR ...

  7. 使用canvas给图片添加水印, canvas转换base64,,canvas,图片,base64等转换成二进制文档流的方法,并将合成的图片上传到服务器,

    一,前端合成带水印的图片 一般来说,生成带水印的图片由后端生成,但不乏有时候需要前端来处理.当然,前端处理图片一般不建议,一方面js的处理图片的方法不全,二是有些老版本的浏览器对canvas的支持度不 ...

  8. Cross platform

    值得学习的C/C++语言开源项目 (1)ACE 庞大.复杂,适合大型项目.开源.免费,不依赖第三方库,支持跨平台. http://www.cs.wustl.edu/~schmidt/ACE.html ...

  9. Windows NtQueryInformationProcess()

    { https://www.orcode.com/article/Processes_20126324.html } { 或代码 文章 编程通用 线程,进程及IPC 与NtQueryInformati ...

  10. BZOJ 2005: [Noi2010]能量采集(容斥+数论)

    传送门 解题思路 首先题目要求的其实就是\(\sum\limits_{i=1}^n \sum\limits_{j=1}^m [(gcd(i,j)-1)*2+1)]\),然后变形可得\(-n*m+2\s ...