Rikka with Subset(hdu6092)
来源:互联网 发布:网络摄像头ip地址破解 编辑:程序博客网 时间:2024/05/22 21:41
Yuta has
Now, Yuta has got
Yuta shows Rikka the array
It is too difficult for Rikka. Can you help her?
For each testcase, the first line contains two numbers
The second line contains
It is guaranteed that there exists at least one solution. And if there are different solutions, print the lexicographic minimum one.
22 31 1 1 13 31 3 3 1
1 21 1 1HintIn 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]$
题意:一共有T组测试样例,然后n和m,有m+1个数代表B数列,表示为A数列子集的和为i的有多少种;
解题思路:很多个较小的数字随机组合会求出多个很大的数字,所以从B0向Bm推导,在每求出A序列的一部分这个过程中,更新后续的B序列,更新完的B[i]就是 i 在A序列中出现的次数。
分析完后,主要的难点就是怎么去让已求出来的A序列随机组合,更新后续的B序列直接减就可以了。看成01背包问题,让m为背包去装 i,初始值为dp[0] = 1,由于i依次增大,A子集随机组合不会重复#include <iostream>#include <cstdio>#include <cstring>using namespace std;typedef long long ll;int n,m;int ans[10005],tmp[10005],dp[10005];int da[10005];int main(){ int T; scanf("%d",&T); while(T--) { scanf("%d %d",&n,&m); for(int i=0;i<=m;i++) scanf("%d",&da[i]); memset(dp,0,sizeof(dp)); memset(ans,0,sizeof(ans)); memset(tmp,0,sizeof(tmp)); dp[0]=1; int p=0; for(int i=1;i<=m;i++) { tmp[i]=da[i]-dp[i]; for(int j=0;j<tmp[i];j++) { ans[p]=i; p++; for(int k=m;k>=i;k--) { dp[k]+=dp[k-i];//和为k的子集不断更新 } } } for(int i=0;i<n-1;i++) printf("%d ",ans[i]); printf("%d\n",ans[n-1]); } return 0;}
- Rikka with Subset(hdu6092)
- HDU6092 Rikka with Subset
- HDU6092-Rikka with Subset
- hdu6092 Rikka with Subset
- HDU6092(Rikka with Subset)
- HDU6092-Rikka with Subset
- hdu6092 Rikka with Subset (反向背包)
- HDU6092 Rikka with Subset【DP】
- HDU6092-Rikka with Subset(背包)
- Hdu6092 Rikka with Subset(2017多校第5场)
- hdu6092 Rikka with Subset(母函数+思维)
- 【2017多校】HDU6092 Rikka with Subset 【DP】
- HDU6092 Rikka with Subset[母函数]
- HDU6092 Rikka with Subset(01背包+思路)
- HDU6092---Rikka with Subset(2017多校联赛:逆向dp)
- HDU6092-2017多校5&&背包&贪心-Rikka with Subset
- 2017多校训练Contest5: 1008 Rikka with Subset hdu6092
- (hdu6092) 2017杭电多校联赛第5场-Rikka with Subset 动态规划
- 内省(Introspector) — JavaBean
- Servlet应用程序(1)----基于Servlet Controller的MVC
- 二阶指针和一阶指针实例区分
- 1.VMware安装3个ubuntu14.05
- Xamarin.Forms 用户界面——控件——ListView——List外观
- Rikka with Subset(hdu6092)
- springboot 热部署 idea
- linux下开启SSH,并且允许root用户远程登录,允许无密码登录
- java的动态代理机制详解
- 排序算法之快速排序
- ubuntu平台下ffmpeg的编译安装方法
- Xamrin.Forms 用户界面——控件——ListView——ListView 交互
- 从Spring HibernateTemplate模板方法设计模式的实现谈起
- 啥是SBC