题意:给你n和k (k|n) 有n个数 第i个数权值为i 要你求权值相同且分成k组 且每组的个数为n/k

思路:恶心构造题,首先对于总权值不能分为k份的 显然不能分成 然后 我们把n/k 分奇偶 我们可以发现 偶数我们可以每k个当成一组

对于奇数 我们可以先处理前3*k 然后同样处理剩下的数

#include <bits/stdc++.h>
#define ls(x) T[x].ch[0]
#define rs(x) T[x].ch[1]
#define fa(x) T[x].fa
#define root T[0].ch[1]
using namespace std;
const int N = 1e5+7;
const int inf = 0x3f3f3f3f;
typedef long long ll;
const ll mod = 1e9+7;
int vis[N];
vector<ll> v[N];
ll te[N];
int main(){
//ios::sync_with_stdio(false);
//cin.tie(0); cout.tie(0);
int t; scanf("%d",&t);
while(t--){
ll n,k; scanf("%lld%lld",&n,&k);
for(int i=0;i<k;i++) v[i].clear();
memset(te,0,sizeof(te));
ll x=(n*(n+1))/2; bool f=1;
if(n==1&&k==1){
printf("yes\n");
printf("1\n");
continue;
}
if(x%k!=0) f=0;
if(f&&n>(x/k)) f=0;
if(f){
if((n/k)%2==0){
for(ll i=1;i<=n/2;i++){
v[i%k].push_back(i);
v[i%k].push_back(n-i+1);
}
printf("yes\n");
for(int i=0;i<=k-1;i++){
for(int j=0;j<v[i].size();j++)
if(j==0) printf("%lld",v[i][j]);
else printf(" %lld",v[i][j]);
printf("\n");
}
}else{
if(k&1){
for(ll i=1;i<=k;i++){
v[i%k].push_back(i);
te[i%k]+=i;
}
for(ll i=1;i<=k;i++){
v[(i-k/2+k)%k].push_back(i+k);
te[(i-k/2+k)%k]+=(i+k);
}
for(ll i=1;i<=k;i++){
v[i%k].push_back((1+3*k)*3/2-te[i%k]);
}
for(ll i=1;i<=(n-3*k)/2;i++){
v[i%k].push_back(i+3*k);
v[i%k].push_back(n-i+1);
}
printf("yes\n");
for(int i=0;i<=k-1;i++){
for(int j=0;j<v[i].size();j++)
if(j==0) printf("%lld",v[i][j]);
else printf(" %lld",v[i][j]);
printf("\n");
}
}else{
printf("no\n");
}
}
}else{
printf("no\n");
}
}
return 0;
}

2019 Multi-University Training Contest 4.Divide the Stones(贪心)的更多相关文章

  1. 2018 Multi-University Training Contest 1 Distinct Values 【贪心 + set】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6301 Distinct Values Time Limit: 4000/2000 MS (Java/Ot ...

  2. 2016 Multi-University Training Contest 5 Divide the Sequence

    Divide the Sequence 题意: 给你一个序列A,问你最多能够分成多少个连续子序列,使得每个子序列的所有前缀和均不小于0 题解: 这题是比赛时候的水题,但我比的时候也就做出这一题, = ...

  3. 2019 Nowcoder Multi-University Training Contest 4 E Explorer

    线段树分治. 把size看成时间,相当于时间 $l$ 加入这条边,时间 $r+1$ 删除这条边. 注意把左右端点的关系. #include <bits/stdc++.h> ; int X[ ...

  4. 2019 Nowcoder Multi-University Training Contest 1 H-XOR

    由于每个元素贡献是线性的,那么等价于求每个元素出现在多少个异或和为$0$的子集内.因为是任意元素可以去异或,那么自然想到线性基.先对整个集合A求一遍线性基,设为$R$,假设$R$中元素个数为$r$,那 ...

  5. 2018 Multi-University Training Contest 1 Balanced Sequence(贪心)

    题意: t组测试数据,每组数据有 n 个只由 '(' 和 ')' 构成的括号串. 要求把这 n 个串排序然后组成一个大的括号串,使得能够匹配的括号数最多. 如()()答案能够匹配的括号数是 4,(() ...

  6. 2015 Multi-University Training Contest 8 hdu 5385 The path

    The path Time Limit: 2000ms Memory Limit: 65536KB This problem will be judged on HDU. Original ID: 5 ...

  7. 2019 Multi-University Training Contest 8

    2019 Multi-University Training Contest 8 C. Acesrc and Good Numbers 题意 \(f(d,n)\) 表示 1 到 n 中,d 出现的次数 ...

  8. 2019 Multi-University Training Contest 7

    2019 Multi-University Training Contest 7 A. A + B = C 题意 给出 \(a,b,c\) 解方程 \(a10^x+b10^y=c10^z\). tri ...

  9. 2019 Multi-University Training Contest 1

    2019 Multi-University Training Contest 1 A. Blank upsolved by F0_0H 题意 给序列染色,使得 \([l_i,r_i]\) 区间内恰出现 ...

随机推荐

  1. Head First 设计模式 —— 08. 外观 (Facade) 模式

    思考题 想想看,你在 JavaAPI 中遇到过哪些外观,你还希望 Java 能够新增哪些外观? P262 println.log 日志接口.JDBC 接口 突然让想感觉想不出来,各种 API 都用得挺 ...

  2. C# 修改PNG图片metadata信息 (含转载fancyblogs博文)

    WPF中使用 metadata-extractor可以轻松获取 PNG图片metadata信息 NuGet 获取地址: PM> Install-Package MetadataExtractor ...

  3. oracle range分区表已经有了MAXVALUE 分区,如何添加分区?要不能删除MAXVALUE分区里的数据,不影响在线应用。

    来做个实验说明该问题:1.创建个分区表SQL> create table p_range_test 2 (id number,name varchar2(100)) 3 partition by ...

  4. Loadrunner与kylinPET的能力对比测试--web动态请求

    概述 在<性能测试工具选择策略--仿真度对比测评分析报告>一文详细分析了使用相同的web页面,分别使用LoadRunner,Jmeter,kylinTOP工具进行录制脚本并执行得出在静态请 ...

  5. 微信小程序request请求的封装

    目录 1,前言 2,实现思路 3,实现过程 3.1,request的封装 3.2,api的封装 4,实际使用 1,前言 在开发微信小程序的过程中,避免不了和服务端请求数据,微信小程序给我们提供了wx. ...

  6. 软碟通制作win10镜像,无法打开install.wim的问题

    打开软碟通,单击左上角"文件"→"打开",选择.iso文件的存放目录,再选择.iso映像文件打开,即可看到映像文件全部加载到UltraISO了,如下图.   将 ...

  7. Azure App object和Service Principal

    为了把Identity(身份)和Access Management function(访问管理功能)委派给Azure AD,必须向Azure AD tenant注册应用程序.使用Azure AD注册应 ...

  8. 你这样用过DO循环吗?

    DATA: BEGIN OF text,        word1(4) TYPE c VALUE 'This',        word2(4) TYPE c VALUE 'is',         ...

  9. EXPORT和IMPORT使用示例

    1 report ztestprog. 2 data:begin of itab1 occurs 0, 3 ff(10), 4 end of itab1. 5 data:itab2 like itab ...

  10. Springmvc中参数的绑定

    .处理器适配器在执行Handler之前需要把http请求的key/value数据绑定到Handler方法形参数上. 1.默认支持的参数类型: HttpServletRequest,HttpServle ...