codeforces 632+ E. Thief in a Shop】的更多相关文章

E. Thief in a Shop time limit per test 5 seconds memory limit per test 512 megabytes input standard input output standard output A thief made his way to a shop. As usual he has his lucky knapsack with him. The knapsack can contain k objects. There ar…
E. Thief in a Shop 题目连接: http://www.codeforces.com/contest/632/problem/E Description A thief made his way to a shop. As usual he has his lucky knapsack with him. The knapsack can contain k objects. There are n kinds of products in the shop and an inf…
题目链接 E. Thief in a Shop time limit per test 5 seconds memory limit per test 512 megabytes input standard input output standard output A thief made his way to a shop. As usual he has his lucky knapsack with him. The knapsack can contain k objects. The…
E - Thief in a Shop 题目大意:给你n ( n <= 1000)个物品每个物品的价值为ai (ai <= 1000),你只能恰好取k个物品,问你能组成哪些价值. 思路:我们很容易能够想到dp[ i ][ j ]表示取i次j是否存在,但是复杂度1e12肯定不行. 我们将ai排序,每个值都减去a[1]然后再用dp[ i ]表示到达i这个值最少需要取几次,只需要1e9就能完成, 我们扫一遍dp数组,如果dp[ i ]  <= k 则说明 i + k * a[1]是能取到的.…
E. Thief in a Shop   A thief made his way to a shop. As usual he has his lucky knapsack with him. The knapsack can contain k objects. There are n kinds of products in the shop and an infinite number of products of each kind. The cost of one product o…
C - Thief in a Shop 思路 :严格的控制好k的这个数量,这就是个裸完全背包问题.(复杂度最极端会到1e9) 他们随意原来随意组合的方案,与他们都减去 最小的 一个 a[ i ] 组合的方案数目是不会改变的 那么我们就 dp [ i ]表示 i 这个价格需要的最少 个数.  这样求最小个数保证不会漏解 然后 如果这个  i 能通过 1 - k 个物品组合出来,那么 一定能通过k 个物品组合出 i + k * a [ 1 ]. #include<bits/stdc++.h> us…
Thief in a Shop n个物品每个价值ai,要求选k个,可以重复.问能取到哪几个价值? 1 ≤ n, k ≤ 1000,1 ≤ ai ≤ 1000 题解 将选一个物品能取到的价值的01生成函数k次方即可得到选k个物品得到的某个权值的方案数. 出题人卡NTT模数,998244353和1004535809都会被卡.然而469762049没被卡-- CO int N=1048576; int a[N]; int rev[N],omg[N]; void NTT(int a[],int lim)…
632E:http://codeforces.com/problemset/problem/632/E 参考:https://blog.csdn.net/qq_21057881/article/details/51023067 题意: 给定n个值,让你选择k个数,可以重复选择,问可以得到哪些数字. 思路: 显然最小的值起到很大的作用,我们可以把每个值都减去这个最小值,利用完全背包,建立dp[i]表示,取到 i 这么多值最少需要多少个数.如果取到 i值需要的数值小于等于K,那么k * 最小值 +…
传送门 题意简述:给nnn个物件,物件iii有一个权值aia_iai​,可以选任意多个.现在要求选出kkk个物件出来(允许重复)问最后得到的权值和的种类数. n,k,ai≤1000n,k,a_i\le1000n,k,ai​≤1000 思路: 这是一道很显然的生成函数,我们把选一个物件的生成函数给列出来,然后取它的kkk次方就是答案. 显然可以上一波fftfftfft 成功T飞 在博主卡场无果之后换成了nttnttntt,然后发现cfcfcf的强力数据同时卡掉了998244353998244353…
题意:有N种物品,每种物品有价值\(a_i\),每种物品可选任意多个,求拿k件物品,可能损失的价值分别为多少. 分析:相当于求\((a_1+a_2+...+a_n)^k\)中,有哪些项的系数不为0.做k次FFT求卷积求卷积肯定爆炸,考虑用分治的形式计算,因为中间计算的时候会重复计算一些幂次,所以用记忆化搜索的形式,保留计算结果. 因为只要计算出哪些项不为0,所以卷积之后求结果时,系数非0项用1作系数即可,否则分分钟炸精度. 当然也可以用快速幂求解#. #include <bits/stdc++.…