【题解】vijos P1071 新年趣事之打牌

新年趣事之打牌 题解 新年趣事之打牌 题目描述 过年的时候,大人们最喜欢的活动,就是打牌了。xiaomengxian不会打牌,只好坐在一边看着。 这天,正当一群人打牌打得起劲的时候,突然有人喊道:“这副牌少了几张!”众人一数,果然是少了。于是这副牌的主人得意地说:“这是一幅特制的牌,我知道整副牌每一张的重量。只要我们称一下剩下的牌的总重量,就能知道少了哪些牌了。”大家都觉得这个办法不错,于是称出剩下的牌的总重量,开始计算少了哪些牌。由于数据量比较大,过了不久,大家都算得头晕了。 这时,xiaomengxian大声说:“你们看我 阅读详情

相对复杂的背包问题。首先注意是判断组成总质量-剩下牌总重量的组成。利用类似的判断背包内数字组合的方法,只不过这次不是判断能不能组合而是求组合数目,利用这个数目=0就输出0,>1就输出-1可以AC6个点。对于=1时求牌编号的情况,由于这种情况一定是唯一的,所以我们可以在求组合数目的时候就用fa数组记录下一个质量的上一个质量,用num数组记录这个质量由上一个质量推过来的编号。注意要判断编号被覆盖的情况(例如特例4 3 4 3 3 应当输出2 3结果是3 3)因此如果这个质量已经有了上一个质量的编号就不更新编号了。vector存编号,另外注意要排序把结果按照字典序输出。

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<vector>
using namespace std;
int total,n,sum=0;
int dp[1000010];
int w[110];
int fa[1000010];
int num[110];
int main()
{
	cin>>total>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>w[i];
		sum+=w[i];
	}
	total=sum-total;
	dp[0]=1;
	for(int i=1;i<=n;i++)
		for(int j=sum;j>=0;j--)
			if(j-w[i]>=0)
			{
				if(dp[j-w[i]]==1) 
				{
					dp[j]+=dp[j-w[i]];
					fa[j]=j-w[i];
					if(num[j]==0)	num[j]=i;
				}					
			}
	vector<int> ans;
	if(dp[total]==0) cout<<"0";
	if(dp[total]>1) cout<<"-1";
	if(dp[total]==1)
	{
		while(total!=0)
		{
			ans.push_back(num[total]);
			total=fa[total];
		}
		sort(ans.begin(),ans.end());
		for(int i=0;i<ans.size();i++)
		{
			cout<<ans[i]<<' ';
		}
	}	
	
	return 0;
}

 

vijos 1071 新年趣事之打牌 01背包问题,要求能否填满整个背包,由于要求出那几张牌丢失,所以不能使用滚动数组.. 这种情况下把dp[0][0]置0,其他的置为无穷小,再进行普通的01背包. 如果dp[N][TotalW] != TotalW那么说明没有解. 再判断是否dp[i][TotalW- W[i]] + W[i] == TotalW,如果是那么就可以通过第i张牌和前面i - 1张牌中的某几张牌组成totalW,如 阅读详情

相关推荐

Vijos P1071 新年趣事之打牌(动态规划,背包,统计方案数)

状态转移方程中已经考虑了所有的方案数,所以只要将求最大值是的max换成sum,就可以实现方案数的统计。 因为要输出未现在的牌的序号,所以另设数组c,记录当达到重量j时,所需要用的牌号

qq_35855297的博客 1010

新年趣事之打牌

题目: 代码如下: #include&lt;bits/stdc++.h&gt; using namespace std; #define MAX 2000005 int dp[MAX],a[MAX],path[MAX],res; void print(int k) { if(k){ print(k - a[path[k]]);//找到上一个质量 if(k == res) cou...

qq_41998938的博客 1051

立创开源TinyAWG:基于ZYNQ7010的35MHz带宽200MSa/s任意波形发生器设计与实现

本文详细解析了立创开源TinyAWG的设计与实现,这是一款基于ZYNQ7010芯片的低成本高性能任意波形发生器。项目实现了35MHz带宽和200MSa/s采样率,核心采用ARM+FPGA协同架构,FPGA负责高速DDS信号生成,ARM运行Linux并搭载LVGL图形界面。文章涵盖了硬件选型、电路设计、软件逻辑及性能测试,为复刻和学习ZYNQ系统设计、高速DAC应用提供了完整参考。

weixin_42576467的博客 436

【动态规划】Vijos P1071 新年趣事之打牌

需要在状态转移的时候记录转移的路径,注释中标出的一行代码非常重要。 题目链接:https://vijos.org/problems/P1071 #include #include #include #include #define SIZE 100005 using namespace std; int main(){ int totalW,sum; int n,wei[1

BananaTree 1566

工业界实战:小红书推荐系统中的AB测试策略解析——分层、Holdout与反转实验

本文深入解析了小红书推荐系统在工业界实践中采用的AB测试核心策略。重点阐述了分层实验如何解决多实验并行与干扰问题,Holdout机制如何作为评估黄金标准提供稳定基准,以及反转实验如何作为全量上线后的终极安全网进行风险控制。这些策略共同构成了科学、严谨的线上评估体系,是保障推荐系统迭代效果与决策质量的关键。

transformer2023的博客 477

本地部署ComfyUI:开源AI生图与视频生成完整实战指南

在生成式AI应用快速普及的今天,云端工具常受制于排队、积分和素材管理等问题,而本地化部署正成为开发者与创作者的高效替代方案。其核心思路是基于开源工作流引擎,将图像生成、视频生成与后期处理整合到同一套可离线运行的系统中。ComfyUI作为当前最受关注的节点式工作流平台,凭借灵活的模块组合和强大的自定义能力,降低了从图像模型调用到视频扩展的工程门槛。本文从环境配置与依赖安装入手,系统讲解如何部署ComfyUI、加载Checkpoint模型、跑通文生图基础流程,再通过自定义节点接入视频生成能力,同时介绍API批量

weixin_30985047的博客 587

Vijos P1071 新年趣事之打牌

P1071新年趣事之打牌 Accepted 描述 过年的时候,大人们最喜欢的活动,就是打牌了。xiaomengxian不会打牌,只好坐在一边看着。 这天,正当一群人打牌打得起劲的时候,突然有人喊道:“这副牌少了几张!”众人一数,果然是少了。于是这副牌的主人得意地说:“这是一幅特制的牌,我知道整副牌每一张的重量。只要我们称一下剩

getAC 851

20220601超简单百度地图街景图片爬取+绿视率计算

真的不难咯。

weixin_39676904的博客 1万+

vijos P1071新年趣事之打牌

01背包,网上看了好些记录方法都不太喜,自己就写了个 #include #include int dp[100005], a[105], vis[100005], put[105]; int main() { int n, i, j, v, sum, flag, tp, ok; scanf("%d %d", &v, &n); sum = 0; for(i = 0;i < n;i++)

KeyboardPianist的博客 951

《Zephyr OS 入门与实战》第5章:内存管理策略

【代码】《Zephyr OS 入门与实战》第5章:内存管理策略。

2301_79143213的博客 349

cesium 深度图(获取区域最高最低点位)

文章摘要: Cesium深度图技术可用于获取区域地形高程数据,核心实现步骤包括:1)通过离屏相机构建独立渲染环境,使用正交投影确保采样精度;2)采用离屏渲染技术获取均匀分布的地形点数据。关键技术点包含多边形外包矩形计算、后台相机配置(5km高度正交投影)、1024×1024像素离屏视图设置,以及深度数据解析(RGBA格式转换和三维坐标还原)。该方法避免了主视图干扰,可精准获取区域内地形高程信息,为填挖方分析等应用提供基础数据支持。

God's asylum的博客 283

1090. [Vijos 1071] 新年趣事之打牌

#include<iostream> #include<cstdio> #include<string> #include<cstring> #define LL long long using namespace std; int we,n,a[1050],i,j,dp[110005],num[101000],ans[1050...

weixin_34392906的博客 238

【OpenFOAM】-olaFlow-算例4- irreg45degTank

不规则波浪模拟

ou_no的博客 2117

vijosP1071 新年趣事之打牌

vijosP1071 新年趣事之打牌   链接:https://vijos.org/p/1071   【思路】    01背包+路径输出。    用d[][]记录[][]可转移的数目,>=2则输出-1,0输出0,否则输出路径。对于路径可以写一个递归过程print完成。    本题的数据着实有些坑,需要注意的有数组的范围,使用LL。题目中为什么没有交待?   【代码】    

hahalidaxin的专栏 495

Motoman机器人离线编程——Motocom32开发简介

欢迎关注Jungle的Motoman机器人离线编程专栏系列文章: Motoman机器人离线编程——Motocom32开发简介 Motoman机器人离线编程——Visio Studio环境配置 Motoman机器人离线编程——Motocom32库函数的使用与封装 Motoman机器人离线编程——Motocom32参考文献及注意事项 Motoman机器人离线编程——MotocomES介绍 ...

冯Jungle的个人博客 8714

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

vijos1071:新年趣事之打牌

P1071新年趣事之打牌 Accepted 标签:新年趣事[显示标签] 描述 过年的时候,大人们最喜欢的活动,就是打牌了。xiaomengxian不会打牌,只好坐在一边看着。 这天,正当一群人打牌打得起劲的时候,突然有人喊道:“这副牌少了几张!”众人一数,果然是少了。于是这副牌的主人得意地说:“这是一幅特制的牌,我知道整副牌每一张的...

weixin_30823683的博客 91

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Vijos - P1071 新年趣事之打牌

思路 先用背包求出能否凑成left,还要一边记录路径。 然后递归打印路径即可。 二维数组开不下,滚一下就行。 代码 #include using namespace std; #define LL long long #define MP(a, b) make_pair(a, b) const int MAXN = 100000 + 10; const int INF

一只冰熊 1009

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Vijos P1071新年趣事之打牌

链接:https://vijos.org/p/107 问题描述 过年的时候,大人们最喜欢的活动,就是打牌了。xiaomengxian不会打牌,只好坐在一边看着。 这天,正当一群人打牌打得起劲的时候,突然有人喊道:“这副牌少了几张!”众人一数,果然是少了。于是这副牌的主人得意地说:“这是一幅特制的牌,我知道整副牌每一张的重量。只要我们称一下剩下的牌的总重量,就能知道少了哪些牌了。”大家都觉

爱做菜的橘猫的橘猫 491

|Vijos|动态规划|P1071 新年趣事之打牌

https://vijos.org/p/1071 01背包+输出最优解,在丢失牌的重量中进行01背包 #include #include #include #include #define ms(i,j) memset(i, j, sizeof(i)); using namespace std; int w[105]; int f[100005]; int g[100005];

博客停更,请到"再见,优快云"文章中找新博客地址 679

vijos-p1071 2008.11.9

vijos-p1071 2008.11.9 心得:1.这是一道记录路径的背包问题       2.记录下那个重量可以达到可以用boolean;若,想记录有几种到达方案的话,就给f[0]:=1,红色! 描述 Description   过年的时候,大人们最喜欢的活动,就是打牌了。xiaomengxian不会打牌,只好坐在一边看着。 这天,正当一群人打牌打得起劲的时候,突然有人喊道:“这副

Batman_的博客 495

vijosp1071-01背包&记录组合&细节-新年趣事之打牌

https://vijos.org/p/1071 给定一群牌,和他的重量。 再给某个牌堆重量和,问在这个牌堆中那些牌没有出现。 如果没有,就输出0. 如果有,就从小到大输出。 如果有多种情况,就输出-1. 思路:先用背包判断是否会有多种情况(牌堆 或者牌堆剩下的数 都可以)。 如果只有一种。那么就背包牌堆数,然后记录当前重量时 使用的牌号。(这种方法显然无法计算最优解,只是用来计数。)

天与云与山与水 561

Vijos 1071 && caioj 1411 动态规划2:打牌 (背包方案输出)

非常奇怪的是,我在Vijos 1071能AC,在caioj 就只有50分 可以和前面一道题一样算方案,如果大于1就是多解 然后就输出方案就好了 #include<cstdio> #include<cstring> #define REP(i, a, b) for(int i = (a); i < (b); i++) using ...

weixin_34010566的博客 126

【动态规划】新年趣事之打牌

问题 来源: vijos P1071 【问题描述】 过年的时候,大人们最喜欢的活动,就是打牌了。xiaomengxian不会打牌,只好坐在一边看着。 这天,正当一群人打牌打得起劲的时候,突然有人喊道:“这副牌少了几张!”众人一数,果然是少了。于是这副牌的主人得意地说:“这是一幅特制的牌,我知道整副牌每一张的重量。只要我们称一下剩下的牌的总重量,就能知道少了哪些牌了。”大家都觉得这个办法不...

weixin_30361641的博客 186
上一篇: 【题解】vijos P1059 积木城堡(背包)
下一篇: 【题解】vijos P1250 最勇敢的机器人(并查集 背包)
Rem_Inory
博客等级 码龄8年 4粉丝 140原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值