【HDOJ6616】Divide the Stones(构造)】的更多相关文章

Problem Description There are n stones numbered from 1 to n.The weight of the i-th stone is i kilograms. We divide the stones into k groups.Each group consists of exactly stones.We define the weight of each group is sum of the stones’ weights in the…
题意:给定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 l…
题目链接: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,…
题意: 给你重量分别为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 …
题意:给你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 #defi…
Codeforces 题目传送门 & 洛谷题目传送门 显然,直接暴力枚举是不可能的. 考虑将点按横纵坐标奇偶性分组,记 \(S_{i,j}=\{t|x_t\equiv i\pmod{2},y_t\equiv j\pmod{2}\}(i,j\in[0,1])\),说白了就是横坐标为偶数.纵坐标为偶数:横坐标为偶数.纵坐标为奇数:横坐标为奇数.纵坐标为偶数:横坐标为奇数.纵坐标为奇数的点集. 然后考虑以下算法: 若 \(S_{0,0},S_{1,1}\) 以及 \(S_{0,1},S_{1,0}\)…
目录 题面 中文题意 比赛惨状 我的走不通的思路 \(m\)是偶数的情况 \(m\)是奇数的情况 题解的思路 另一些思路 源代码 题面 Time limit 3000 ms Memory limit 131072 kB Special judge Yes OS Windows 中文题意 把\(n\)块石头分成\(k\)堆,要求每堆石头的重量之和相等.输出是否可以实现要求.如果可以实现,还要输出每堆石头里每一块石头的重量 比赛惨状 赛场上看见的第一反应--dp?不会.然后就先扔给有点思路队友,写另…
Solved Pro.ID Title Ratio(Accepted / Submitted)   1001 AND Minimum Spanning Tree 31.75%(1018/3206)   1002 Colored Tree 0.00%(0/105)   1003 Divide the Stones 10.35%(126/1217)   1004 Enveloping Convex 0.00%(0/125)   1005 Good Numbers 17.65%(9/51)   100…
A. AND Minimum Spanning Tree solved by rdc 21min -1 数组开小了,解体了一次. 题意 给一棵树,两点之间边权为 x & y,求最小生成树. 做法 比赛时,打表找规律.emmmm 其实可以冷静分析一下的,每个点连向最低位 0 的位置即可 C. Divide the Stones 题意 \(n\) 个石头,第 \(i\) 个质量为 \(i\),分成 \(k\) 堆,每堆总质量相等. 做法 \(\frac{n}{k}\) 为偶数. \(\frac{n}…
题解 A AND Minimum Spanning Tree 参考代码: #include<bits/stdc++.h> #define maxl 200010 using namespace std; int n,ans1; ]; int ans[maxl]; inline void prework() { scanf("%d",&n); } inline int find(int x) { ;j<=;j++) ) return mi[j]; } inlin…