【牛客 - 696D】小K的雕塑(dp,鸽巢原理,01背包类问题)

题干:

链接:https://ac.nowcoder.com/acm/contest/696/D
来源:牛客网
 

小K有n个雕塑,每个雕塑上有一个整数
若集合T中的每一个元素在n个雕塑上都能找得到,则称这个集合为一个优秀的集合

小K想知道所有大小<=k优秀的集合的价值和是多少

一个优秀的集合的价值可以用来表示

输入描述:

两个整数n,k,分别表示雕塑的数量与集合大小的上限 
接下来n个整数表示第i个雕塑上的数字aiai是多少

输出描述:

一行表示所有大小<=k优秀集合的权值和

示例1

输入

复制

3 0
1 2 3

输出

复制

1

示例2

输入

复制

3 1
1 2 3

输出

复制

7

示例3

输入

复制

3 2
1 2 3

输出

复制

18

示例4

输入

复制

3 3
1 2 3

输出

复制

24

示例5

输入

复制

8 1
1 6 35 45 65 3 56 8

输出

复制

220

备注:

 

有10%10%的数据满足k=1

有30%30%的数据满足k=n

以上两个部分包含在100%100%的数据中,但不包含在前30%30%的数据中

对于前30%30%的数据,满足k≤n≤5k≤n≤5

对于100%100%的数据,满足n≤106,1≤ai≤5×103n≤106,1≤ai≤5×103

由于答案可能过大请对109+7取模后输出

解题报告:

  题意好难懂啊、、、

 注意到集合的性质:互异性。

根据鸽巢原理,很容易知道最多有m=5e3个数(去重之后)

然后设F[n][k]表示前n个数,取k个数的价值。(且已知这k个数一定互不相同。因为集合的互异性)

    F[n][k]=F[n-1][k]+F[n-1][k-1]*a[i]

效率O(m^2)。 

当然这题也可以用01背包的方法将空间复杂度优化到一维。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define F first
#define S second
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
typedef pair<int,int> PII;
const int MAX = 1e6 + 5;
const ll mod = 1e9+7;
ll dp[5005][5005];
int a[MAX],b[MAX];
int n,k;
int main()
{cin>>n>>k;for(int i = 1; i<=n; i++) cin>>a[i],b[i]=a[i];sort(b+1,b+n+1);int N = unique(b+1,b+n+1) - b - 1;dp[0][0]=1;for(int i = 1; i<=N; i++) {dp[i][0] = 1;for(int j = 1; j<=k; j++) {dp[i][j] = (dp[i-1][j] + dp[i-1][j-1] * b[i])%mod;}}ll ans = 0;for(int i = 0; i<=N && i<=k; i++) ans = (ans + dp[N][i])%mod;cout << ans << endl;return 0 ;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/440363.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机专业需要汇编语言,重点大学计算机专业系列教材·汇编语言程序设计

重点大学计算机专业系列教材汇编语言程序设计语音编辑锁定讨论上传视频本词条缺少概述图&#xff0c;补充相关内容使词条更完整&#xff0c;还能快速升级&#xff0c;赶紧来编辑吧&#xff01;《重点大学计算机专业系列教材汇编语言程序设计》是2009年10月1日清华大学出版社出版…

6.Strings and Dictionaries

目录 Strings 1. String syntax 2、Strings are sequences 3、String methods Strings Python语言真正发挥作用的一个地方是字符串的操作。 本节将介绍Python的一些内置字符串方法和格式化操作。 这种字符串操作模式经常出现在数据科学工作中&#xff0c;并且在这种情况下…

【LightOJ - 1123】Trail Maintenance(在线维护最小生成树,删边思维)

题干&#xff1a; Tigers in the Sunderbans wish to travel freely among the N fields (numbered from 1 to N), even though they are separated by trees. The tigers wish to maintain trails between pairs of fields so that they can travel from any field to any ot…

7.Working with External Libraries

在本课中&#xff0c;我将讨论Python中的imports&#xff0c;提供一些使用不熟悉的库&#xff08;以及它们返回的对象&#xff09;的技巧&#xff0c;并深入研究Python的内容&#xff0c;以及谈谈运算符重载。 Imports 到目前为止&#xff0c;我们已经讨论了内置于该语言的类…

计算机原理期中考试,计算机组成原理期中考试试题

一、单选题(每小题2分&#xff0c;共34分)1&#xff0e;完整的计算机系统应包括__________。A&#xff0e;运算器、存储器、控制器 B&#xff0e; 主机和实用程序C&#xff0e;配套的硬件设备和软件系统 D&#xff0e; 外部设备和主机2&#xff0e;下列数中真值最小的数是_____…

【HDU - 1839】Delay Constrained Maximum Capacity Path(最短路 + 二分)

题干&#xff1a; 考虑一个包含 N 个顶点的无向图&#xff0c;编号从 1 到 N&#xff0c;并包含 M 条边。编号为 1 的顶点对应了一个矿藏&#xff0c;可从中提取珍稀的矿石。编号为 N 的顶点对应了一个矿石加工厂。每条边有相应的通行时间 (以时间单位计)&#xff0c;以及相应…

0.Overview

本文为Kaggle Learn的Python课程的中文翻译&#xff0c;原文链接为&#xff1a;https://www.kaggle.com/learn/python 欢迎来到Kaggle Learn的Python课程。本课程将介绍在开始使用Python进行数据科学之前需要的基本Python技能。这些课程针对那些具有一些编程经验的人&#xff…

量子计算机的体积有多大,量子计算机也能实现摩尔定律

原标题&#xff1a;量子计算机也能实现摩尔定律量子计算机拥有很强大的计算力&#xff0c;但是这对IBM来说&#xff0c;似乎还不够。据CNET消息&#xff0c;IBM制作了一个路线图&#xff0c;表达出了自己在量子计算领域的野心。IBM在图表的纵轴上列出了一个单位“量子体积(Quan…

1.How Models work

Introduction 我们首先概述机器学习模型如何工作以及如何使用它们。如果您之前已完成统计建模或机器学习&#xff0c;这可能会感觉很基础。别担心&#xff0c;我们很快就会建立强大的模型。 本课程将为您构建以下场景的模型&#xff1a; 你的堂兄已经花了数百万美元预测房地产…

【BZOJ - 1059】矩阵游戏(二分图匹配,建图,最小边覆盖)

题干&#xff1a; 小Q是一个非常聪明的孩子&#xff0c;除了国际象棋&#xff0c;他还很喜欢玩一个电脑益智游戏——矩阵游戏。矩阵游戏在一个N *N黑白方阵进行&#xff08;如同国际象棋一般&#xff0c;只是颜色是随意的&#xff09;。每次可以对该矩阵进行两种操作&#xff…

ji计算机一级题库,全国计算机等级考试一级题库0l0ji.doc

全国计算机等级考试一级题库0l0ji全国计算机等级考试一级题库(1)1&#xff0e;微机中1K字节表示的二进制位数是( )。D?   A、1000   B、8x1000   C、1024   D、8x1024??2&#xff0e;计算机硬件能直接识别和执行的只有( )。D?   A、高级语言   B、符号语言   …

2.Explore Your Data

Using Pandas to Get Familiar With Your Data 任何机器学习项目的第一步都是熟悉数据。 您将使用Pandas库。 Pandas是科学家用于挖掘和处理数据的主要工具。 大多数人在他们的代码中将pandas缩写为pd。 我们使用如下命令执行此操作。 [1] import pandas as pd Pandas库中最…

【POJ - 3026】Borg Maze(bfs预处理 + 最小生成树,建图)

题干&#xff1a; The Borg is an immensely powerful race of enhanced humanoids from the delta quadrant of the galaxy. The Borg collective is the term used to describe the group consciousness of the Borg civilization. Each Borg individual is linked to the c…

计算机统考测试,计算机统考专业测试题.doc

文档介绍&#xff1a;应用所有单选题1、下面是某单位主页地址的,其中符合格式的是。A:B:C:D:答案:C知识点:应用部分\和的使用\浏览器的使用\1网页的几个基本术语2、用浏览器浏览网页,在地址栏中输入网址时,通常可以省略的是。A:B:C:D:答案:A知识点:应用部分\和的使用\浏览器的使…

3.Your First Machine Learning Model

Selecting Data for Modeling 你的数据集有太多的变量包裹住你的头。你怎么能把这些压倒性的数据削减到你能理解的东西&#xff1f; 我们首先使用我们的直觉选择一些变量。 后面的课程将向您展示自动确定变量优先级的统计技巧。 要选择变量/列&#xff0c;我们需要查看数据集中…

【POJ - 3020】Antenna Placement (匈牙利算法,二分图最小边覆盖)

题干&#xff1a; The Global Aerial Research Centre has been allotted the task of building the fifth generation of mobile phone nets in Sweden. The most striking reason why they got the job, is their discovery of a new, highly noise resistant, antenna. It …

计算机教室安全预案 博客,校园安全应急预案

校园安全应急预案为了确保师生的人身安全&#xff0c;严格执行上级安全工作的管理要求&#xff0c;保证一旦发生安全事故能够及时处理&#xff0c;特制定我校安全应急预案。一、领导小组组 长&#xff1a;副组长&#xff1a;成 员&#xff1a;全体教师二、主要职责1、组长任校…

4.Model Validation

你已经建立了一个模型。 但它有多好&#xff1f; 在本课程中&#xff0c;您将学习如何使用模型验证来衡量模型的质量。 测量模型质量是迭代改进模型的关键。 What is Model Validation 你几乎要评估你构建的每个模型。在大多数&#xff08;尽管不是全部&#xff09;应用中&am…

【POJ - 2195】Going Home(二分图最优匹配,费用流 或 KM)

题干&#xff1a; On a grid map there are n little men and n houses. In each unit time, every little man can move one unit step, either horizontally, or vertically, to an adjacent point. For each little man, you need to pay a $1 travel fee for every step h…

微机原理实验8254计算机钢琴,GitHub - SincereXIA/PianoMFC: 西电微机原理课设项目,键盘电子乐器演奏程序设计(电子琴),MFC...

PianoMFC西电微机原理课设项目&#xff0c;键盘电子乐器演奏程序设计(电子琴)&#xff0c;MFC需要连接西电微机原理实验室提供的 QTH9054 微机试验箱&#xff0c;使用其蜂鸣器发声&#xff0c;若不连接&#xff0c;程序会直接播放 mp3 文件模拟钢琴声。请在 release 处下载编译…