[2019杭电多校第四场][hdu6616]Divide the Stones
2024-09-05 05:14:46
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6616
题意是说n个数分别为1-n,将n个数分成k堆,能否满足每堆个数相等,数值之和相等。保证n%k=0。
构造题神马的太烦了略略略
我的构造方式是这样的,先判断每堆的个数,然后分奇偶讨论一下
每堆个数为偶时:
可以将n个数分成n/2对,如n为12时,分成1-12,2-11,3-10,4-9,5-8,6-7这样。
然后根据每堆的个数将n/2对分别放入每堆中。
如n=12,k=3时:
第一堆为1-12,2-11。
第二堆为3-10,4-9。
第三堆为5-8,6-7。
这样很好想。
每堆个数为奇时:
先用蛇型方式构造出k堆的前m-2项(m为每堆的个数)
如n=15,k=3时:
1 6 7 X X
2 5 8 X X
3 4 9 X X
三堆分别如上。
然后发现每堆现在的和为14 15 16单调递增。所以我们用剩余元素构造出一个单调递减的序列即可。
剩余元素为10 11 12 13 14 15,我们用15-11,13-12,14-10,构造出一个递减序列即可。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn = 1e5 + ;
int main() {
int t;
scanf("%d", &t);
while (t--) {
ll n, m, k;
scanf("%lld%lld", &n, &k);
m = n / k;
ll sum = n * (n + ) / ;
if (k == ) {
printf("yes\n");
for (int i = ; i <= n; i++)
printf("%d%c", i, i == n ? '\n' : ' ');
}
else if (sum%k) {
printf("no\n");
continue;
}
else {
if (m & ) {
int num = ;
int tot = sum / k;
int tmp = n;
printf("yes\n");
for (int i = ; i <= k; i++) {
for (int j = ; j <= m - ; j++) {
int x;
if (j & )
printf("%d ", x = (j - )*k + i);
else
printf("%d ", x = j * k - i + );
if (i == )
tot -= x;
}
printf("%d %d\n", tmp, tot - tmp);
tot--;
tmp -= ;
if (tmp < n - k)tmp = n - ;
}
}
else {
int cnt = ;
printf("yes\n");
for (int i = ; i <= n / ; i++) {
cnt += ;
printf("%d %d", i, n - i + );
if (cnt == m) {
printf("\n");
cnt = ;
}
else
printf(" ");
}
}
}
}
}
最新文章
- 安卓图标IconFont使用
- IntelliJ 支持web
- 在github上创建新分支
- 2.openstack之mitaka搭建控制节点数据库和消息队列
- 彻底删除mysql方法
- 最短路&;&;最小生成树水题
- 中文版Windows 7下设置日语格式布局的键盘
- SQL SERVER 2008 R2 SP3 发布
- PostgreSQL的 initdb 源代码分析之二十一
- ubuntu apt 命令参数(转)
- Populating Next Right Pointers in Each Node II 解答
- TCP粘包/拆包问题的解决
- SocketServer模块
- LeetCode 538 Convert BST to Greater Tree 解题报告
- 2017-2018 ACM-ICPC Latin American Regional Programming Contest GYM101889
- java的排序类 Collections
- 001_TCP/IP TIME_WAIT状态原理及监控实战
- IHttpModule 和 IHttpHandler 配置方法
- 基于Centos7的比特币源码编译
- 修改微软RDP远程桌面端口
热门文章
- css3圆角边框
- 15 Spring Boot Shiro 验证码
- java获取当前时间的年周月季度等的开始结束时间
- Android开发实践:Android.mk模板
- WWW基本概念
- luogu P1217 [USACO1.5]回文质数 Prime Palindromes x
- mysqldump mysql数据库导入导出
- E. You Are Given Some Strings...
- elasticsearch堆内存的配置建议
- [CSP-S模拟测试]:计数(DP+记忆化搜索)