题意:

给你重量分别为1到n的n个石头,让你分成重量相等,数量也相等的k组,保证k是n的约数。问你能不能分配,如果能,输出具体的分配方案。

题解:

首先,如果1到n之和不能整除k,那么一定不能如题意分配。

否则一定能。

设m=n/k。m是每组分到的石头块数。我们把n块石头排成这样m*k的矩阵,假设12块石头,分成3组。

$\begin{bmatrix}
(1) & 2 & 3\\
(4) & 5 & 6\\
7 & 8 & (9)\\
10 &11  &(12) 
\end{bmatrix}$

每组一定是从每行各拿一个。如果m为偶数,那么,第一个人从前一半的行里拿第一个,后一半的行里拿最后一个,第2个人拿前一半行的第二个,后一半行的倒数第二个,以此类推。

m为奇数的情况就比较难搞,假设15块石头,分成5组

将后两列之和构造成从上到下递增1,然后剩下的奇数个,一行构造成递增,一行构造成递减。

另外,k=1的时候需要特判,比赛最后半小时被卡测评,然后赛后知道因为这个点wa了,心酸。

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int M = 1e5 + ;
int t;
int n, k;
LL sum;
void solve1(int n,int k){
int tot, cnt;
tot = n / k;
cnt = ;
printf("yes\n");
for (int i = ; i <= n / ; i++)
{
printf("%d %d", i, n - i + );
cnt += ;
if (cnt == tot)
{
printf("\n");
cnt = ;
}
else
{
printf(" ");
}
}
}
void solve2(int n,int k){
int tot = n / k;
int cnt = ;
int tot2 = +*k-k/;
int tmp = ;
printf("yes\n");
for (int i = ; i <= k; i++){
for (int j = ; j <= tot - ; j++){
if (j & ){
printf("%d ", n - (j - )*k - (i - ));
}else{
printf("%d ", n - j * k + + i - );
}
}
printf("%d %d\n", tmp, tot2 - tmp);
tot2++;
tmp += ;
if (tmp > k)tmp = ;
}
}
int main(){
scanf("%d", &t);
while (t--){
scanf("%d%d", &n, &k);
sum = (LL)n*(n + ) / ;
if(k==){
printf("yes\n");
for(int i=;i<=n;i++){
printf("%d ",i);
}
printf("\n");
}else if (sum%k){
printf("no\n");
continue;
}else{
if ((n / k) % ){
solve2(n,k);
}else{
solve1(n,k);
}
}
}
}

hdu多校第四场 1003 (hdu6616) Divide the Stones 机智题的更多相关文章

  1. 2018 HDU多校第四场赛后补题

    2018 HDU多校第四场赛后补题 自己学校出的毒瘤场..吃枣药丸 hdu中的题号是6332 - 6343. K. Expression in Memories 题意: 判断一个简化版的算术表达式是否 ...

  2. Harvest of Apples (HDU多校第四场 B) (HDU 6333 ) 莫队 + 组合数 + 逆元

    题意大致是有n个苹果,问你最多拿走m个苹果有多少种拿法.题目非常简单,就是求C(n,0)+...+C(n,m)的组合数的和,但是询问足足有1e5个,然后n,m都是1e5的范围,直接暴力的话肯定时间炸到 ...

  3. HDU 多校第四场题解

    对于 D 题的原题意,出题人和验题人赛前都没有发现标算存在的问题,导致了许多选手的疑惑和时间的浪费,在此表示真诚的歉意! 预计难度分布: Easy - DJKL, Medium - ABCEG, Ha ...

  4. hdu多校第十场 1003 (hdu6693) Valentine's Day 贪心/概率

    题意: 有许多物品,每个物品有一定概率让女朋友开心.你想让女朋友开心且只开心一次,让你挑一些物品,使得这个只开心一次的概率最大,求最大概率. 题解: 设物品i让女朋友开心的概率为$p_i$ 若你挑选了 ...

  5. hdu多校第八场 1003 (hdu6659) Acesrc and Good Numbers 数论/打表

    题意: 对于某数k,若数字d在1-k中出现次数恰好为k,则称k为好数. 给定d,x,求x以内,对于d而言最大的好数.k范围1e18. 题解: 打表二分即可. 但是,1e18的表是没法打出来的,只能在o ...

  6. hdu多校第四场 1007 (hdu6620) Just an Old Puzzle 逆序对

    题意: 给你一个数字拼图,问你数字拼图能否能复原成原来的样子. 题解: 数字拼图的性质是,逆序数奇偶相同时,可以互相转化,逆序数奇偶不同,不能互相转化. 因此统计逆序对即可. #include< ...

  7. hdu多校第四场1001 (hdu6614) AND Minimum Spanning Tree 签到

    题意: 一个完全图,某两点边权为这两点编号之按位与,求最小生成树,输出字典序最小的. 题解: 如果点数不为$2^n-1$,则每一点均可找到一点,两点之间边权为0,只需找到该点二进制下其最左边的0是第几 ...

  8. 2018 HDU多校第三场赛后补题

    2018 HDU多校第三场赛后补题 从易到难来写吧,其中题意有些直接摘了Claris的,数据范围是就不标了. 如果需要可以去hdu题库里找.题号是6319 - 6331. L. Visual Cube ...

  9. 牛客多校第四场sequence C (线段树+单调栈)

    牛客多校第四场sequence C (线段树+单调栈) 传送门:https://ac.nowcoder.com/acm/contest/884/C 题意: 求一个$\max {1 \leq l \le ...

随机推荐

  1. Linux 进程间通信 有名管道(fifo)

    有名管道特点: 1)无名管道只能用于具有亲缘关系的进程之间,这就限制了无名管道的使用范围 2)有名管道可以使互不相关的两个进程互相通信. 3)有名管道可以通过路径名来指出,并且在文件系统中可见,但内容 ...

  2. 【学术篇】2.28测试T2 线段 拓扑排序

    题目: 思路: 看到这种找前后的题目... 第一反应就是拓扑排序_(:з」∠)_ 每条线段都有左右两个端点咯, 然后就乱搞吧.. 我们用\(i\)和\(i'\)分别表示第\(i\)条线段的左右端点.. ...

  3. SSH连接时,长时间不操作就断开的解觉办法

    1.第一次尝试失败 修改/etc/ssh/sshd_config文件, 找到 ClientAliveInterval 0 ClientAliveCountMax 3 并将注释符号("#&qu ...

  4. js 404页面跳转

    非原创 <script type="text/javascript"> var num = 5; function redirect() { num--; docume ...

  5. Session监听类HttpSessionListener介绍及在listener里取得request

    Session监听类HttpSessionListener介绍及在listener里取得request servlet-api.jar中提供了监听类HttpSessionListener,主要方法有两 ...

  6. NOIp2018集训test-9-6(pm)

    T1T2是洛谷原题.Orz辉神290,被辉神吊起来打. 题 1 包裹快递 二分答案.这题似乎卡精度,不开long double二分500次都过不去. //Achen #include<algor ...

  7. C++从string中删除所有的某个特定字符【转载】

    转载自https://www.cnblogs.com/7z7chn/p/6341453.html C++中要从string中删除所有某个特定字符, 可用如下代码 str.erase(std::remo ...

  8. 4 丑数 Ⅱ-找出第n个丑数

    原题网址:http://www.lintcode.com/zh-cn/problem/ugly-number-ii/ 设计一个算法,找出只含素因子2,3,5 的第 n 小的数. 符合条件的数如:1, ...

  9. HDU-1850-Being a Good Boy in Spring Festival-nim博弈

    一年在外 父母时刻牵挂春节回家 你能做几天好孩子吗寒假里尝试做做下面的事情吧 陪妈妈逛一次菜场悄悄给爸爸买个小礼物主动地 强烈地 要求洗一次碗某一天早起 给爸妈用心地做回早餐 如果愿意 你还可以和爸妈 ...

  10. 20140319 const sizeof define 编译时分配内存

    1.面试宝典预处理,const,sizeof Define作用定义函数: //用一个宏定义FIND求一个结构体struc里某个变量相对于struc的偏移量,如FIND(student,a)//等于0 ...