当前位置: 首页 > news >正文

NEUQ week11题解

P1796 汤姆斯的天堂梦

汤姆斯的天堂梦

题目描述

汤姆斯生活在一个等级为 0 0 0 的星球上。那里的环境极其恶劣,每天 12 12 12 小时的工作和成堆的垃圾让人忍无可忍。他向往着等级为 N N N 的星球上天堂般的生活。

有一些航班将人从低等级的星球送上高一级的星球,有时需要向驾驶员支付一定金额的费用,有时却又可以得到一定的金钱。

汤姆斯预先知道了从 0 0 0 等级星球去 N N N 等级星球所有的航线和需要支付(或者可以得到)的金钱,他想寻找一条价格最低(甚至获得金钱最多)的航线。

输入格式

第一行一个正整数 N N N N ≤ 100 N \le 100 N100),接下来的数据可分为 N N N 个段落,每段的第一行一个整数 K i K_i Ki K i ≤ 100 K_i \le 100 Ki100),表示等级为 i i i 的星球有 K i K_i Ki 个。

接下来的 K i K_i Ki 行中第 j j j 行依次表示与等级为 i i i,编号为 j j j 的星球相连的等级为 i − 1 i - 1 i1 的星球的编号和此航线需要的费用(正数表示支出,负数表示收益,费用的绝对值不超过 1000 1000 1000)。

每行以 0 0 0 结束,每行的航线数 ≤ 100 \le 100 100

输出格式

输出所需(或所得)费用。正数表示支出,负数表示收益。

样例 #1

样例输入 #1

3
2
1 15 0
1 5 0
3
1 -5 2 10 0
1 3 0
2 40 0
2
1 1 2 5 3 -5 0
2 -19 3 -20 0

样例输出 #1

-1

提示

对于 100 % 100 \% 100% 的数据, 1 ≤ N ≤ 100 1 \le N \le 100 1N100 1 ≤ K i ≤ 100 1 \le K_i \le 100 1Ki100

样例解释:

思路

动态规划,以i为等级,j为编号,L表示第i级编号j的星球到第i-1级编号k动态规划方程:f[i,j]=min{f[i-1,j]+L}

代码

#include<bits/stdc++.h>
using namespace std;
int n,a,b,c,f[2000][2000];
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a;
		for(int j=1;j<=a;j++) 
		{
			f[i][j]=0x7ffffff;
			cin>>b; 
			while (b!=0) 
			{
				cin>>c;
				f[i][j]=min(f[i-1][b]+c,f[i][j]);
				cin>>b;
			}
		}
	}
	int minn=0x7ffffff;
	for (int i=1;i<=a;i++)
	  minn=min(f[n][i],minn);
	cout<<minn<<endl;
	return 0;
}

P1806 跑步

跑步

题目描述

路人甲准备跑 n n n 圈来锻炼自己的身体,他准备分多次( > 1 \gt1 >1)跑完,每次都跑正整数圈,然后休息下再继续跑。

为了有效地提高自己的体能,他决定每次跑的圈数都必须比上次跑的多。

可以假设他刚开始跑了 0 0 0 圈,那么请问他可以有多少种跑完这 n n n 圈的方案?

输入格式

一行一个整数,代表 n n n

输出格式

一个整数表示跑完这 n n n 圈的方案数。

样例 #1

样例输入 #1

212

样例输出 #1

995645335

提示

数据规模与约定

对于 100 % 100\% 100% 的数据,保证 5 ≤ n ≤ 500 5\le n\le 500 5n500

思路

动态规划,数组的第i个下标表示前i圈的方案总数

代码

#include<bits/stdc++.h>
using namespace std;
long long n,ans[501]; 
int main()
{
    scanf("%d",&n);
    ans[0]=1;
    for (int i=1;i<=n;i++)
		for (int j=n;j>=i;j--) 
		    ans[j]+=ans[j-i];
	cout<<ans[n]-1<<endl;
    return 0;
}

P8742 [蓝桥杯 2021 省 AB] 砝码称重

[蓝桥杯 2021 省 AB] 砝码称重

题目描述

你有一架天平和 N N N 个砝码, 这 N N N 个砝码重量依次是 W 1 , W 2 , ⋯   , W N W_{1}, W_{2}, \cdots, W_{N} W1,W2,,WN 。 请你计算一共可以称出多少种不同的重量?

注意砝码可以放在天平两边。

输入格式

输入的第一行包含一个整数 N N N

第二行包含 N N N 个整数: W 1 , W 2 , W 3 , ⋯   , W N W_{1}, W_{2}, W_{3}, \cdots, W_{N} W1,W2,W3,,WN

输出格式

输出一个整数代表答案。

样例 #1

样例输入 #1

3
1 4 6

样例输出 #1

10

提示

【样例说明】

能称出的 10 种重量是: 1 、 2 、 3 、 4 、 5 、 6 、 7 、 9 、 10 、 11 1 、 2 、 3 、 4 、 5 、 6 、 7 、 9 、 10 、 11 123456791011

1 = 1 2 = 6 − 4 (  天平一边放  6 ,  另一边放 4)  3 = 4 − 1 4 = 4 5 = 6 − 1 6 = 6 7 = 1 + 6 9 = 4 + 6 − 1 10 = 4 + 6 11 = 1 + 4 + 6 \begin{aligned} &1=1 \\ &2=6-4(\text { 天平一边放 } 6, \text { 另一边放 4) } \\ &3=4-1 \\ &4=4 \\ &5=6-1 \\ &6=6 \\ &7=1+6 \\ &9=4+6-1 \\ &10=4+6 \\ &11=1+4+6 \end{aligned} 1=12=64( 天平一边放 6, 另一边放 4) 3=414=45=616=67=1+69=4+6110=4+611=1+4+6

【评测用例规模与约定】

对于 50 % 50 \% 50% 的评测用例, 1 ≤ N ≤ 15 1 \leq N \leq 15 1N15

对于所有评测用例, 1 ≤ N ≤ 100 , N 1 \leq N \leq 100, N 1N100,N 个砝码总重不超过 1 0 5 10^5 105

蓝桥杯 2021 第一轮省赛 A 组 F 题(B 组 G 题)。

思路

动态规划

相关文章:

  • 如何做网站可以吗/百度搜索广告投放
  • 莆田网站建站建设/自动点击器永久免费版
  • wordpress页面文本编辑评论/黑龙江新闻头条最新消息
  • 旅游景区网站建设方案/2024年新冠第三波症状分析
  • 武汉学做网站/seo关键词布局技巧
  • 网站制作新手教程/做手机关键词快速排名软件
  • 【华为OD机试真题2023 JAVA】查找树中元素
  • (小甲鱼python)函数笔记合集三 函数(III)总结 函数的收集参数*args **args 解包参数详解
  • Tomcat 三种简单网站部署方式
  • 【蓝桥杯】历届真题 双向排序(省赛)Java
  • SpringBoot项目练习
  • VueUse(中文)——简介
  • python学习笔记---Python基础【廖雪峰】
  • 架构设计导论
  • 手动部署SQL审计平台Archery(连接mysql8.x)
  • [有人@你]请查收你的年终总结报告
  • 第10章 FreeRTOS
  • 【MyBatis】第三篇:传递参数