2010福建 收稻子

最短路径/旅行商简化版 旅行商简化版 Description 【题目背景】    欧几里德旅行商(Euclidean Traveling Salesman)问题也就是货郎担问题一直是困扰全世界数学家、计算机学家的著名问题。现有的算法都没有办法在确定型机器上在多项式时间内求出最优解,但是有办法在多项式时间内求出一个较优解。   为了简化问题,而且保证能在多项式时间内求出最优解,J.L.Bentley提出了一种叫做bit... 阅读详情

Description

  农夫有n块农田,农田里种满了稻子。秋天到了,稻子熟了,每块农田都有一定数量的稻子。我们可以把农田看成n个点,编号是1到n。农夫起点编号是1。恰好有n-1条道路连接这些点,每条道路长度都为1,并且任意2点都是可达的。每条道路都有一定的长度。现在农夫从起点出发,到农田收割稻子。农夫每经过一块农田就能收割该农田里的稻子。但是农夫是如此的懒惰,他可不想走过的总路程超过m。农夫应该如何选择一种收割方案使得到的稻子最多。农夫最后可以停在任意点!

Input

  第一行一个正整数n(1<=n<=100)表示农田数;
  第二行n个整数(不大于1000)表示每块农田的稻子数。
  接着n-1行每行两个整数a,b,表示a和b之间有一条长度为1的道路,道路是双向的。
  最后一行一个整数m(0<=m<=200)表示农夫最多走m的路程。

Output

  输出一个整数,表示农夫能得到最多的稻子。

Sample Input

2

1 1

1 2

1

Sample Output

2

md考试的时候脑子一抽数组开小了。。。

这是一道树上背包的一类模板题。写的时候注意几个细节:

1、更新的时候从大到小(嗯,背包的做法)

2、注意处理的顺序,保证用第i棵子树时,前i-1的答案不会被重复优化

#include<bits/stdc++.h>
using namespace std;
const int N = 110;
struct Edge{
	int cnt,h[N],to[N<<1],next[N<<1];
	inline void add(int x,int y){
		next[++cnt]=h[x];
		to[cnt]=y;
		h[x]=cnt;
	}
}e;
int n,m,a[N];
inline void init(){
	scanf("%d",&n);
	for(register int i=1;i<=n;++i)scanf("%d",&a[i]);
	for(int i=1;i<n;++i){
		int x,y;scanf("%d%d",&x,&y);
		e.add(x,y),e.add(y,x);
	}
	scanf("%d",&m);
}
int f[110][210];//以i为根, 
int g[110][210];//不回到根 
#define to e.to[p]
void dp(int x,int fa){
	f[x][0]=g[x][0]=a[x];
	for(int p=e.h[x];p;p=e.next[p])if(to^fa){
		dp(to,x);
		for(int i=m;i>0;--i)
			for(int j=0;i-j-2>=0;++j)
				f[x][i]=max(f[x][i],g[to][j]+f[x][i-j-2]);
		for(int i=m;i>0;--i)
			for(int j=0;i-j-1>=0;++j)
				f[x][i]=max(f[x][i],g[x][j]+f[to][i-j-1]);
		for(int i=m;i>0;--i)
			for(int j=0;i-j-2>=0;++j)
				g[x][i]=max(g[x][i],g[x][j]+g[to][i-j-2]);
	}
	for(int i=1;i<=m;++i)
		f[x][i]=max(f[x][i],f[x][i-1]),g[x][i]=max(g[x][i],g[x][i-1]);
}
int main(){
	init();
	dp(1,0);
	cout<<f[1][m]<<"\n";
	return 0;
}
//5
//10 11 32 41 35
//1 2
//1 3
//2 5
//2 4
//10

 

POJ2411 铺砖问题 Description 有一个W行H列的棋盘,你可以在里放1*2的长方形,长方形之间互相不重叠,问放满整个棋盘有多少种方案数。 Input 输入文件有多组数据,每组数据只有一行为两个整数W和H(1&lt;=W,H&lt;=11)。 Output 每组数据一行为方案总数,若不能够放满整个棋盘输出0。 Sample Input 1 2  1 3  1 4 2 2 2 3 2 4... 阅读详情

相关推荐

锯木厂选址(CEOI2004)

Description   从山顶上到山底下沿着一条直线种植了n棵老树。当地的政府决定把他们砍下来。为了不浪费任何一棵木材,树被砍倒后要运送到锯木厂。   木材只能按照一个方向运输:朝山下运。山脚下有一个锯木厂。另外两个锯木厂将新修建在山路上。你必须决定在哪里修建两个锯木厂,使得传输的费用总和最小。假定运输每公斤木材每米需要一分钱。   你的任务是编写一个程序,从输入文件中读入树的个数和他们的重...

DancingZ的博客 696

【2010福建】收稻子 (校BSOJ1114)

农夫有n块农田,农田里种满了稻子。秋天到了,稻子熟了,每块农田都有一定数量的稻子。我们可以把农田看成n个点,编号是1到n。农夫起点编号是1。恰好有n-1条道路连接这些点,每条道路长度都为1,并且任意2点都是可达的。每条道路都有一定的长度。现在农夫从起点出发,到农田收割稻子。农夫每经过一块农田就能收割该农田里的稻子。但是农夫是如此的懒惰,他可不想走过的总路程超过m。农夫应该如何选择一种收割...

weixin_30807677的博客 401

USACO 2002 February Green 重建道路

Description   一场可怕的地震后,人们用N个牲口棚(1≤N≤150,编号1..N)重建了农夫John的牧场。由于人们没有时间建设多余的道路,所以现在从一个牲口棚到另一个牲口棚的道路是惟一的。因此,牧场运输系统可以被构建成一棵树。John想要知道另一次地震会造成多严重的破坏。有些道路一旦被毁坏,就会使一棵含有P(1≤P≤N)个牲口棚的子树和剩余的牲口棚分离,John想知道这些道路的最小...

DancingZ的博客 556

CQOI2017 酱油记

Day 0 今天下午去重庆邮电大学试机,去往南山的路似乎不堵,但是我依然晕车。 之后去试机时发现座位号贴错了,LLH又过来重新贴。 突然又发现我坐在我左边的是重庆NOIP初三rank1 YHN,%%%%%% 然后就是省选机器真心快啊,空循环20亿次只需要3s,加一个register只需要0.6s。 虽然只是来打酱油的,但是一定不要爆零啊...

a15063149271的博客 258

USACO 2011 Open Gold 修剪草坪

Description 在一年前赢得了小镇的最佳草坪比赛后,FJ变得很懒,再也没有修剪过草坪。现在,新一轮的最佳草坪比赛又开始了,FJ希望能够再次夺冠。然而,FJ的草坪非常脏乱,因此,FJ只能够让他的奶牛来完成这项工作。FJ有N(1 &lt;= N &lt;= 100,000)只排成一排的奶牛,编号为1...N。每只奶牛的效率是不同的,奶牛i的效率为E_i(0 &lt;= E_i &lt;= 1...

DancingZ的博客 487

使用GDScript(godot)生成仿杀戮尖塔地图

使用GDScript(godot)生成仿杀戮尖塔地图 extends Node2D export (PackedScene) var Ball var 被连接数 = {} # 每个怪物被下层怪物连接的数量 最多为2 var 连接1 = {} # 第一次连接的上层怪物位置 var 连接2 = {} # 第二次连接的上层怪物位置 var 怪物数量 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0] # 每层怪物的数量 var 总层数 =8 # 总层数 var 怪物坐标行 = {} #

weixin_45038716的博客 3010

[NOIP2016] 组合数问题

组合数

Bill_Yang_2016的博客 2533

组态王7.5和SQLsever数据库交互

摘要:本文详细介绍了组态王7.5与SQL Server 2016数据库交互的实现流程,包括建立连接、数据存储与查询操作。主要内容涵盖ODBC数据源配置、数据库表格创建、数据插入及查询功能实现(含日期控件查询)

gsjkwg的博客 1577

【DP】农田个数

Description 你的老家在河北农村。过年时,你回老家去拜年。你家有一片NM农田,将其看成一个NM的方格矩阵,有些方格是一片水域。你的农村伯伯听说你是学计算机的,给你出了一道题: 他问你:这片农田总共包含了多少个不存在水域的正方形农田。   两个正方形农田不同必须至少包含下面的两个条件中的一条:   边长不相等   左上角的方格不是同一方格 Input 输入数据第一行为两个由空格分开的正...

Maple的博客 382

高频电磁场仿真-主题064-伴随变量法与灵敏度分析

在电磁器件优化设计中,梯度信息对于指导优化方向至关重要。考虑一个典型的电磁优化问题: 其中 p=[p1,p2,...,pn]Tp = [p_1, p_2, ..., p_n]^Tp=[p1​,p2​,...,pn​]T 是设计参数向量(如几何尺寸、材料参数等)。传统有限差分法的困境:示例: 一个具有100个设计参数的天线优化问题伴随变量法(Adjoint Variable Method, AVM)通过引入伴随场,将梯度计算复杂度从 O(n)O(n)O(n) 降低到 O(1)O(1)O(1):伴随变量法在计算

kkchenjj的博客 410

机器人控制仿真软件:MATLAB Simulink Control System Toolbox_(1).MATLAB基础知识

MATLAB(Matrix Laboratory)是由MathWorks公司开发的一种高性能数值计算和可视化软件。它广泛应用于科学计算、工程设计、信号处理、控制系统设计、图像处理等领域。强大的矩阵运算能力:MATLAB的核心是矩阵运算,能够高效处理大规模的数值数据。丰富的工具箱:MATLAB提供了大量的工具箱,如Control System Toolbox、Simulink、Signal Processing Toolbox等,这些工具箱覆盖了多个应用领域。易于使用的图形界面。

kkchenjj的博客 904

[NOIP2016] 玩具谜题

模拟

Bill_Yang_2016的博客 811

ESP32 双雷达融合盲区车辆接近预警系统设计与实现

/ 超声波传感器引脚// 触发引脚// 回声引脚// 预警模块引脚// 蜂鸣器引脚// LED引脚// 串口配置(毫米波雷达用UART2)#define BAUD_RATE 115200 // 雷达串口波特率(IWR6843默认配置)// 预警阈值(可根据实际需求调整)// 高危区阈值(3m)// 预警区阈值(10m)// 传感器数据存储// 毫米波雷达距离(m)// 毫米波雷达速度(km/h)// 超声波距离(m)// 融合后距离(m)

weixin_42300449的博客 745

[CQOI2009] 循环赛 - 暴力出奇迹

题目描述   n支队伍打比赛,每两支队伍恰好比赛一场。平局时各得1分,而有胜负时胜者3分,负者0分。   假设三支队伍得分分别为3, 3, 3,则可能有两种情况:      给出n支队伍的最终得分(即所有比赛均已结束),统计有多少种可能的分数表。 输入格式 第一行包含一个正整数n,队伍的个数。第二行包含n个非负整数,即每支队伍的得分。 输出格式 输出仅一行,即可能的

Bill_Yang_2016的博客 843

【Google Play 上架】内部 / 封闭 / 开放 测试全解 — “只跑一个就能上架”?不行!

Google Play新规要求个人开发者账号在2023年11月13日后必须通过封闭测试(Closed testing)才能上架应用。封闭测试需要至少12名测试者连续14天保持参与状态,而内部测试和开放测试不能替代这一要求。三类测试轨道各有特点:内部测试用于快速内部验证,封闭测试是上架必经环节,开放测试面向更广泛用户但非必需。上架流程建议先内部测试修复问题,再启动封闭测试满足14天要求,最后申请生产发布。组织账号和早期个人账号可能不受此限制。开发者应提前规划测试人群,确保持续测试周期,并关注Play Cons

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 2799

使用 Tesseract 在 C# 中进行光学字符识别(OCR)

你可以根据需要对 Tesseract 进行自定义配置,例如设置识别的分辨率、识别模式等。// 只识别数字// 设置自定义变量本文只讲述了简单的使用方法,未涉及字库训练,识别的准确率与训练的字库有关。

仰望星空的博客 4733

LIS系列

一、CEOI1996 友好城市 Description   有一个国家被一条河划分为南北两部分,在南岸和北岸总共有N对城镇,每一城镇在对岸都有唯一的友好城镇。任何两个城镇都没有相同的友好城镇。每一对友好城镇都希望有一条航线来往。于是他们向政府提出了申请。由于河终年有雾。政府决定不允许有任两条航线交叉(如果两条航线交叉,将有很大机会撞船)。   你的任务是写一个程序来帮政府官员决定他们应拨款兴建...

DancingZ的博客 1028

12、认知地图的建模与学习

本博客系统介绍了认知地图的定义、背景及其在机器智能领域的应用,重点探讨了模糊认知地图(FCMs)的建模方法与优势。文章还对比分析了几种主流的认知地图模型(如Axelrod模型、Kosko模型等),并讨论了模型的稳定性条件及实际应用前景。通过智能制造和医疗诊断的具体案例,展示了认知地图在复杂因果推理中的强大能力,并提出了模型优化方向与未来研究展望。

plant的博客 209

简单的序列

Description   从前有个括号序列s,满足|s|=m。  你需要统计括号序列对(p,q)的数量。  其中(p,q)满足|p|+|s|+|q|=n,且p+s+q是一个合法的括号序列。 Input   从文件bracket.in中读入数据。  第一行两个正整数n,m。  第二行一个长度为m的括号序列,表示s。 Output   输出到文件bracket.out中。  输出一行一个整...

DancingZ的博客 685

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

NOIP2009 最优贸易

Description   C国有n个大城市和m条道路,每条道路连接这n个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这m条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的道路在统计条数时也计为1条。   C国幅员辽阔,各地的资源分布情况各不相同,这就导致了同一种商品在不同城市的价格不一定相同。但是,同一种商品在同一个城市的买入价和卖出价始终是相同的。  商人...

DancingZ的博客 558

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

琪露诺——单调队列优化dp

在幻想乡,琪露诺是以笨蛋闻名的冰之妖精。某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来。但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸。于是琪露诺决定到河岸去追青蛙。小河可以看作一列格子依次编号为0到N,琪露诺只能从编号小的格子移动到编号大的格子。而且琪露诺按照一种特殊的方式进行移动,当她在格子i时,她只会移动到i+L到i+R中的一格。你问为什么她这么移动,这还不简单,...

DancingZ的博客 544

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【USACO 2009 OPen】干草塔

Description 为了调整电灯亮度,贝西要用干草包堆出一座塔,然后爬到牛棚顶去把灯泡换掉。干草包会从传送带上运来,共会出现N包干草,第i包干草的宽度是Wi,高度和长度统一为1。干草塔要从底层开始铺建。贝西会选择最先送来的若干包干草,堆在地上作为第一层,然后再把紧接着送来的几包干草包放在第二层,再铺建第三层……重复这个过程,一直到所有的干草全部用完。每层的干草包必须紧靠在一起,不出现缝隙,而...

DancingZ的博客 538
上一篇: 简单的序列
下一篇: BZOJ2594 水管局长(数据加强版)
DancingZ
博客等级 码龄9年 10粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值