题意:给你 n个数分配给m部分(每部分个数不限),如何使得m部分和的差最小
思路:优先队列,和(sum)最小的优先分配。
#include #include #include #include #include #include #include #include #include #include #include using namespace std; #define INF 1e8 #define eps 1e-8 #define ll __int64 #define maxn 26 #define mol 1000000007 struct node { int id; ll sum; friend bool operator<(node a,node b) { return a.sum>b.sum; } }a[100005]; priority_queue q; int cmp(node a,node b) { return a.sum>b.sum; } int main() { int t,n,m; int b[100005]; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); memset(b,0,sizeof(b)); int i,j; node p; for(i=0;i