题意:给定n堆石子,第i堆的个数为i,要求构造出一种方案将其分成k堆,使得这k堆每堆数量之和相等且堆数相等

保证k是n的一个约数

n<=1e5

思路:先把非法的情况判掉

n/k为偶数的方法及其简单

n/k为奇数就先构造出n=3k的情况然后减掉,剩下的就是n/k为偶数

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef pair<ll,ll> Pll;
typedef vector<int> VI;
typedef vector<PII> VII;
//typedef pair<ll,ll>P;
#define N 1000010
#define M 200010
#define fi first
#define se second
#define MP make_pair
#define pb push_back
#define pi acos(-1)
#define mem(a,b) memset(a,b,sizeof(a))
#define rep(i,a,b) for(int i=(int)a;i<=(int)b;i++)
#define per(i,a,b) for(int i=(int)a;i>=(int)b;i--)
#define lowbit(x) x&(-x)
#define Rand (rand()*(1<<16)+rand())
#define id(x) ((x)<=B?(x):m-n/(x)+1)
#define ls p<<1
#define rs p<<1|1 const int MOD=1e9+,inv2=(MOD+)/;
double eps=1e-;
int INF=1e9;
int inf=0x7fffffff;
int dx[]={-,,,};
int dy[]={,,-,}; VI c[N]; int read()
{
int v=,f=;
char c=getchar();
while(c<||<c) {if(c=='-') f=-; c=getchar();}
while(<=c&&c<=) v=(v<<)+v+v+c-,c=getchar();
return v*f;
} int main()
{
int cas=read();
while(cas--)
{
int n=read(),k=read();
ll s=1ll*n*(n+)/;
if(s%k>||k==n&&k>)
{
printf("no\n");
continue;
}
printf("yes\n");
if(n==&&k==)
{
printf("1\n");
continue;
}
int t=n/k;
rep(i,,k) c[i].clear();
if(t>=&&t%==)
{
int x=k/,m=n;
rep(i,,k)
{
c[i].pb(m);
m--;
}
rep(i,x+,k)
{
c[i].pb(m);
m--;
}
rep(i,,x)
{
c[i].pb(m);
m--;
}
int y=m;
per(i,k,x+)
{
c[i].pb(m);
m-=;
}
m=y-;
per(i,x,)
{
c[i].pb(m);
m-=;
}
n-=*k;
}
t=;
rep(i,,n/)
{
t++;
if(t==k+) t=;
c[t].pb(i);
}
t=;
per(i,n,n/+)
{
t++;
if(t==k+) t=;
c[t].pb(i);
} rep(i,,k)
{
rep(j,,(int)c[i].size()-) printf("%d ",c[i][j]);
printf("\n");
}
}
return ;
}

最新文章

  1. Backbone源码解析(六):观察者模式应用
  2. vim简明教程
  3. 让IE8在win7下面能显示使用window.showmodaldialog弹出窗口的地址状态栏
  4. GDI+ 绘制经验
  5. .NET软件开发与常用工具清单(转)
  6. centOS目录结构
  7. iOS socket TCP UDP
  8. 理解和解决MySQL乱码问题
  9. IDOC、ALE、EDI三者之间的区别于联系
  10. 46 关于Linux的I/O重定向
  11. iOS 9之分屏多任务(Split View)
  12. Struts国际化
  13. 【代码笔记】Web-CSS-CSS id和Class选择器
  14. vue开发记录--element-ui的form表单label和placeholder国际化遇到的小问题
  15. Vue-devtools 安装浏览器调试
  16. Java容器---字符容器StringBuffer &amp; StringBuilder
  17. 改变codeblocks里面各种注释的颜色。
  18. ajex 相关参数
  19. VS2008编译错误:error C2065: &#39;PMIB_TCPSTATS&#39; : undeclared identifier c:\program files (x86)\microsoft sdks\windows\v7.0a\include\iphlpapi.h 411
  20. Python学习之路:MINST实战第一版

热门文章

  1. nw打包vue项目exe
  2. 通过命令直接修改jar包中的静态文件
  3. Python笔记(二十七)_魔法方法_容器
  4. 【opencv】opencv图像识别的一些基础的基础函数的使用方法
  5. C#中拼音模糊匹配汉字智能搜索
  6. JS和C#后台获取网站URL
  7. git --&gt; 工作使用流程
  8. win10系统Mysql5.7服务启动报:&quot;1053错误:服务没有及时响应启动或控制请求&quot;
  9. P3188 [HNOI2007]梦幻岛宝珠
  10. usleep和sleep