2017 ACM暑期多校联合训练 - Team 5 1008 HDU 6092 Rikka with Subset (找规律)
Problem Description
As we know, Rikka is poor at math. Yuta is worrying about this situation, so he gives Rikka some math tasks to practice. There is one of them:
Yuta has n positive A1−An and their sum is m. Then for each subset S of A, Yuta calculates the sum of S.
Now, Yuta has got 2n numbers between [0,m]. For each i∈[0,m], he counts the number of is he got as Bi.
Yuta shows Rikka the array Bi and he wants Rikka to restore A1−An.
It is too difficult for Rikka. Can you help her?
Input
The first line contains a number t(1≤t≤70), the number of the testcases.
For each testcase, the first line contains two numbers n,m(1≤n≤50,1≤m≤104).
The second line contains m+1 numbers B0−Bm(0≤Bi≤2n).
Output
For each testcase, print a single line with n numbers A1−An.
It is guaranteed that there exists at least one solution. And if there are different solutions, print the lexicographic minimum one.
Sample Input
2
2 3
1 1 1 1
3 3
1 3 3 1
Sample Output
1 2
1 1 1
Hint
In the first sample, \(A\) is \([1,2]\). \(A\) has four subsets \([],[1],[2],[1,2]\) and the sums of each subset are \(0,1,2,3\). So \(B=[1,1,1,1]\)
题意:
给定数组b,保存的数组a中的所有子集和的个数,让找个这个数组a,并且按照字典序输出来。
分析:
b数组里面除了第一个元素b[0]肯定为1之外(表示空集的个数有且仅有一个),其余的第一次出现的b[i]==j(j!=0),那么就表示i这个数字肯定在a数组中存在,而且为第一个并且为最小的元素,同时将这个数的个数减减(相当于减去单独自己本身一个自己的情况),记录下标i。
这样循环的往后加b数组的元素下标偏移i个单位,如果此时两个数的个数均不为0,也就意味这后面的那个数,可以由前面这个数构成,然后让当前下标的数减去b[i],得到的那个数减去b[i]的个数,(相当于减去这个数可以由b[i]组合而成的个数)剩下的肯定就是这个数字本身的个数
就这样循环着往下找
代码:
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxm = 1100002;
int b[maxm];
int m;
int a[maxm];
int main()
{
int t;
scanf( "%d", &t );
while( t-- )
{
int n;
scanf( "%d%d", &n, &m );
for( int i = 0; i <= m; i++ )
{
scanf( "%d", b+i );
}
b[0] = 0;///空集的情况,不用任何的元素构成,将其赋值为0,不影响后面的计算
for( int i = 0; i < n; i++ )///循环得到a数组中的第i个元素
{
int j;
for( j = 0; j <= m; j++ )///找到当前的第一个不为0的
{
if( b[j] ) break;
}
b[j]--;///相当于有一个本身构成的元素
a[i] = j;///那么就肯定有一个这个元素,而且为当前的最小值
for( int k = j; k <= m; k++ )///找后面的所有可以由j组合而成的是数
{
if( k+j <= m && b[k] && b[k+j] )
{
b[k+j] -= b[k];
}
}
}
for( int i = 0; i < n; i++ )
{
i == 0 ? printf( "%d", a[i] ) : printf( " %d", a[i] );
}
printf( "\n" );
}
return 0;
}
2017 ACM暑期多校联合训练 - Team 5 1008 HDU 6092 Rikka with Subset (找规律)的更多相关文章
- 2017 ACM暑期多校联合训练 - Team 9 1008 HDU 6168 Numbers (模拟)
题目链接 Problem Description zk has n numbers a1,a2,...,an. For each (i,j) satisfying 1≤i<j≤n, zk gen ...
- 2017 ACM暑期多校联合训练 - Team 3 1008 HDU 6063 RXD and math (莫比乌斯函数)
题目链接 Problem Description RXD is a good mathematician. One day he wants to calculate: ∑i=1nkμ2(i)×⌊nk ...
- 2017 ACM暑期多校联合训练 - Team 4 1007 HDU 6073 Matching In Multiplication (模拟)
题目链接 Problem Description In the mathematical discipline of graph theory, a bipartite graph is a grap ...
- 2017 ACM暑期多校联合训练 - Team 4 1012 HDU 6078 Wavel Sequence (模拟)
题目链接 Problem Description Have you ever seen the wave? It's a wonderful view of nature. Little Q is a ...
- 2017ACM暑期多校联合训练 - Team 7 1010 HDU 6129 Just do it (找规律)
题目链接 Problem Description There is a nonnegative integer sequence a1...n of length n. HazelFan wants ...
- 2017ACM暑期多校联合训练 - Team 2 1006 HDU 6050 Funny Function (找规律 矩阵快速幂)
题目链接 Problem Description Function Fx,ysatisfies: For given integers N and M,calculate Fm,1 modulo 1e ...
- 2017ACM暑期多校联合训练 - Team 8 1008 HDU 6140 Hybrid Crystals (模拟)
题目链接 Problem Description Kyber crystals, also called the living crystal or simply the kyber, and kno ...
- 2017ACM暑期多校联合训练 - Team 7 1008 HDU 6127 Hard challenge (极角排序)
题目链接 Problem Description There are n points on the plane, and the ith points has a value vali, and i ...
- 2017ACM暑期多校联合训练 - Team 6 1008 HDU 6103 Kirinriki (模拟 尺取法)
题目链接 Problem Description We define the distance of two strings A and B with same length n is disA,B= ...
随机推荐
- 增加响应header让ajax支持跨域
ajax请求数据步骤 发送请求--->浏览器接受响应--->判断是否是同域下 是的话,就把响应数据返回给ajax.不是的话就提醒禁止跨域请求. 现在可以在响应头重增加 header(&qu ...
- Laravel 框架集成 UEditor 编辑器的方法
㈠. 背景 在项目开发的过程中,免不了使用修改功能,而富文本编辑器是极为方便的一种推荐,当然,个人认为 MarkDown 更为简单,但是感觉暂时只适合程序猿 此文介绍如何在 Laravel5.5 ...
- PictureBox使用异常
PictureBox的使用 代码: 显示部分 当我切换不同位置之间的照片时,出现这种问题: 但是当我代码改成下面的代码时,则错误消除 但我并不清楚原因
- mysql中一些表选项
表选项列表 表选项就是,创建一个表的时候,对该表的整体设定,主要有如下几个: charset = 要使用的字符编码, engine = 要使用的存储引擎(也叫表类型), auto_increment ...
- 【前端学习笔记05】JavaScript数据存储Cookie相关方法封装
//Cookie设置 //设置新cookie function setCookie(name,value,duration){ var date = new Date(); date.setTime( ...
- document.readyState的使用
document.readyState:判断文档是否加载完成.firefox不支持. 这个属性是只读的,传回值有以下的可能: 0-UNINITIALIZED:XML 对象被产生,但没有任何文件被加载. ...
- MariaDB插入中文出现???情况
本来打算创建一个测试表进行一个简单的实验,发现创建完python_test表后插入数据后,select发现所有中文都变成问号了,这一看就是出现了乱码 MariaDB [lhc]> create ...
- html/css/js 学习笔记 - 牛客网试卷:前端工程师能力评估
display属性 : block : CSS1 块对象的默认值.将对象强制作为块对象呈递,为对象之后添加新行 可以定义高度和宽度 none : CSS1 隐藏对象.与 visibility 属性 ...
- 转:机器学习 规则化和模型选择(Regularization and model selection)
规则化和模型选择(Regularization and model selection) 转:http://www.cnblogs.com/jerrylead/archive/2011/03/27/1 ...
- 【EF】EntityFramework DBFirst的使用
一.前言 久闻EF大名,之前做C/S产品用的是Dapper对SqlLite进行ORM.然后接触公司授权系统后发现用的是EntityFramework对SQLSever进行ORM.授权系统 ...