2017 Multi-University Training Contest - Team 5 :Rikka with Subset
2017-08-09 15:22
615 查看
题目链接
原文链接
贴个代码:
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
const int maxn = 1e5;
int a[maxn];
int b[maxn];
int dp[maxn];
int main()
{
int t,n,m;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
memset(dp,0,sizeof(dp));
for(int i = 0; i <= m; i++)
scanf("%d",&b[i]);
int cnt = 0;
dp[0] = 1; ///dp[i]代表当前和为i的子集有多少个
for(int i = 0; i < m; i++)
{
int rest = b[i]-dp[i];
///dp[i]代表当前的a序列中子集和为dp[i]的个数。b[i]-dp[i]就是a序列中还要添加几个数字i
for(int j = 1; j <= rest; j++)
{
a[cnt++] = i; ///每添加一个i
for(int k = m; k >= i; k--) ///k-i这个数+i能构成k。
dp[k] += dp[k-i];
}
}
printf("%d",a[0]);
for(int i = 1; i < cnt; i++)
{
printf(" %d",a[i]);
}
printf("\n");
}
return 0;
}
原文链接
贴个代码:
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
const int maxn = 1e5;
int a[maxn];
int b[maxn];
int dp[maxn];
int main()
{
int t,n,m;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
memset(dp,0,sizeof(dp));
for(int i = 0; i <= m; i++)
scanf("%d",&b[i]);
int cnt = 0;
dp[0] = 1; ///dp[i]代表当前和为i的子集有多少个
for(int i = 0; i < m; i++)
{
int rest = b[i]-dp[i];
///dp[i]代表当前的a序列中子集和为dp[i]的个数。b[i]-dp[i]就是a序列中还要添加几个数字i
for(int j = 1; j <= rest; j++)
{
a[cnt++] = i; ///每添加一个i
for(int k = m; k >= i; k--) ///k-i这个数+i能构成k。
dp[k] += dp[k-i];
}
}
printf("%d",a[0]);
for(int i = 1; i < cnt; i++)
{
printf(" %d",a[i]);
}
printf("\n");
}
return 0;
}
相关文章推荐
- 2017 Multi-University Training Contest - Team 5 1008 Rikka with Subset
- 【2017 Multi-University Training Contest - Team 5】Rikka with Subset
- 2017 Multi-University Training Contest - Team 5-1008 & hdu6092、Rikka with Subset
- 2017 Multi-University Training Contest - Team 5-Rikka with Subset
- 【2017 Multi-University Training Contest - Team 5】Rikka with Competition
- 2017 Multi-University Training Contest - Team 5:Rikka with Number
- 2017 Multi-University Training Contest - Team 5 1006 Rikka with Graph
- 【2017 Multi-University Training Contest - Team 5】Rikka with Graph
- 2017 Multi-University Training Contest - Team 5:1006&hdu6090、 Rikka with Graph
- 2017 Multi-University Training Contest - Team 5:1011&hdu6095、Rikka with Competition
- 2017 Multi-University Training Contest - Team 5 Rikka with Graph
- HDU 6093 Rikka with Number (2017 Multi-University Training Contest - Team 5)
- 2017 Multi-University Training Contest - Team 5 Rikka with Competition
- HDU 6088 - Rikka with Rock-paper-scissors | 2017 Multi-University Training Contest 5
- HDU 6086 Rikka with String(2017 Multi-University Training Contest 3)
- 2017 Multi-University Training Contest 5 solutions 1006 Rikka with Graph
- 2017 Multi-University Training Contest 5 solutions 1011 Rikka with Competition
- 【2017 Multi-University Training Contest - Team 7】Hard challenge
- 【2017 Multi-University Training Contest - Team 2】 Is Derek lying?
- HDU-6033 Add More Zero - 2017 Multi-University Training Contest - Team 1(水之崩心态题)