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

P1284 三角形牧场

Portal.

首先,我们需要一些初中数学知识——秦九韶公式(又名海伦公式):
p = a + b + c 2 S = p ( p − a ) ( p − b ) ( p − c ) \begin{align} &p=\dfrac{a+b+c}{2}\\ &S=\sqrt{p(p-a)(p-b)(p-c)} \end{align} p=2a+b+cS=p(pa)(pb)(pc)
假设 f ( k , i , j ) f(k,i,j) f(k,i,j) 表示前 k k k 个木板能否围成两边长为 i i i j j j 的三角形,状态转移时有三种情况:

  1. 把第 k k k 个木板加到边 i i i 中,前 k − 1 k-1 k1 个木板要围成两边长为 i − l k i-l_k ilk j j j 的三角形,即 f ( k − 1 , i − l k , j ) f(k-1,i-l_k,j) f(k1,ilk,j)
  2. 把第 k k k 个木板加到边 j j j 中,同理 f ( k − 1 , i , j − l k ) f(k-1,i,j-l_k) f(k1,i,jlk)
  3. 把第 k k k 个木板加到第三条边中, f ( k − 1 , i , j ) f(k-1,i,j) f(k1,i,j)

三者或运算之后的真假即结果。

可以观察到,转移过程中只跟前 k − 1 k-1 k1 个木板的状态有关,所以我们可以采用背包的滚动数组思想,压掉 k − 1 k-1 k1 这一层。

注意:

  • 要用 double
  • 要反着枚举 i i i j j j,这要参考 01 01 01 背包的思想,如果正着枚举会重复使用某一条边,并且压掉的 k − 1 k-1 k1 这一层循环不能保存之前的状态会被替代。
  • 初始化: f ( 0 , 0 ) = 1 f(0,0)=1 f(0,0)=1

代码如下:

#include <bits/stdc++.h>
using namespace std;int l[45];
bool f[805][805];
double ans;double work(double a,double b,double c)
{double p=(a+b+c)/2;return sqrt(p*(p-a)*(p-b)*(p-c));
}bool check(int a,int b,int c)
{if(a+b>c&&a+c>b&&b+c>a) return 1;return 0;
}int main()
{int n,cc,i,j,k;cin>>n;for(i=1;i<=n;i++) cin>>l[i],cc+=l[i];f[0][0]=1;for(k=1;k<=n;k++)for(i=cc/2;i>=0;i--)for(j=cc/2;j>=0;j--){if(i-l[k]>=0&&f[i-l[k]][j]) f[i][j]=1;else if(j-l[k]>=0&&f[i][j-l[k]]) f[i][j]=1;}ans=-1;for(i=cc/2;i>0;i--)for(j=cc/2;j>0;j--){if(!f[i][j]) continue;if(!check(i,j,cc-i-j)) continue;ans=max(ans,work(i,j,cc-i-j));}if(ans!=-1) cout<<(long long)(ans*100);else cout<<-1;return 0;
}

相关文章:

P1284 三角形牧场

Portal. 首先&#xff0c;我们需要一些初中数学知识——秦九韶公式&#xff08;又名海伦公式&#xff09;&#xff1a; p a b c 2 S p ( p − a ) ( p − b ) ( p − c ) \begin{align} &p\dfrac{abc}{2}\\ &S\sqrt{p(p-a)(p-b)(p-c)} \end{align} ​p2abc​Sp(p…...

【Linux】:Linux开发工具之Linux编辑器vim的使用

&#x1f52b;1.Linux编辑器-vim使用 &#x1f4e4; vi/vim的区别简单点来说&#xff0c;它们都是多模式编辑器&#xff0c;不同的是vim是vi的升级版本&#xff0c;它不仅兼容vi的所有指令&#xff0c;而且还有一些新的特性在里面。例如语法加亮&#xff0c;可视化操作不仅可以…...

PFMEA详解结构分析——Sun FMEA软件

FMEA从1949年诞生到今天已经发生过多次更新&#xff0c;最新版本是2019年6月发布的《AIAG VDA FMEA手册》。新手册借鉴了AIAG的方框图、参数图、流程图等工具的运用&#xff0c;也借鉴了VDA的五步过程导向法&#xff0c;并在此基础上头尾各增加一步&#xff0c;形成了FMEA七步法…...

Qt扫盲-QFutureWatcher理论总结

QFutureWatcher理论总结 一、概述二、转态 一、概述 QFutureWatcher类允许我们使用信号槽的方式去监控QFuture。 QFutureWatcher提供关于QFuture的信息和通知。使用 setFuture() 函数开始监视特定的QFuture。 future()函数通过setFuture()返回 QFuture 集合。 为了方便起见…...

对比学习(contrastive Learning)

起源和定义 自监督学习又可以分为对比学习(contrastive learning)和生成学习(generative learning)两条主要的技术路线。 比学习的核心思想是将正样本和负样本在特征空间对比&#xff0c;从而学习样本的特征表示&#xff0c;使得样本与正样本的特征表示尽可能接近。正样本和负…...

译文:我们如何使 Elasticsearch 7.11 中的 date_histogram 聚合比以往更快

这篇文章是ES7.11版本的文章&#xff0c;主要学习的是思路&#xff0c;记录在这里留作以后参考用。 原文地址&#xff1a;https://www.elastic.co/cn/blog/how-we-made-date-histogram-aggregations-faster-than-ever-in-elasticsearch-7-11 正文开始&#xff1a; Elasticsea…...

python设计模式4:适配器模式

使用适配器模式使用两个或是多个不兼容的接口兼容。在不修改不兼容代码的情况下使用适配器模式实现接口一致性。通过Adapter 类实现。 例子&#xff1a; 一个俱乐部类Club&#xff0c;艺术加被请到俱乐部在表演节目&#xff1a; organize_performance&#xff08;&#xff09;…...

kubectl资源管理命令---声明式

目录 一、yaml和json介绍 1、yuml语言介绍 2、k8s支持的文件格式 二、声明式对象管理 1、deployment.yaml文件详解 2、Pod yaml文件详解 3、Service yaml文件详解 三、编写资源配置清单 1、 编写yaml文件 2、 创建并查看pod资源 3、创建service服务对外提供访问并测试…...

IDEA使用-通过Database面板访问数据库

文章目录 前言操作过程注意事项1.无法下载驱动2.“Database”面板不显示数据库表总结前言 作为一款强大IDE工具,IDEA具有很多功能,本文将以MariaDB数据库访问为例,详细介绍如何通过IDE工具的Database面板来访问数据库。 操作过程 不同的版本操作会略有差异,这里我们用于演…...

单片机如何写好一个模块的驱动文件

搞单片机&#xff0c;MCU:STM32/GD32/HC32&#xff0c;通讯模组&#xff1a;4G/WIFI/BT/433&#xff0c;总线&#xff1a;USB/CAN/K/232/485&#xff0c;各种常见的传感器&#xff0c;都接触过。 一开始学习单片机的时候没有形成很好的编写习惯&#xff0c;如LED点亮/熄灭/闪烁…...

【C++笔记】C++多态

【C笔记】C多态 一、多态的概念及实现1.1、什么是多态1.2、实现多态的条件1.3、实现继承与接口继承1.4、多态中的析构函数1.5、抽象类 二、多态的实现原理 一、多态的概念及实现 1.1、什么是多态 多态的概念&#xff1a; 在编程语言和类型论中&#xff0c;多态&#xff08;英…...

不想改代码!这样实现Reverse Sync测量时间同步精度

TSN的时间同步精度&#xff0c;指被测时钟与主时钟的最大偏差。在设备的组网过程中&#xff0c;最大的困难就是保证期望的时间同步精度。主时钟仅负责将自身的时间分发出去&#xff0c;难以判断其他设备的同步效果&#xff1b;此外&#xff0c;若在网络中某处发生了同步故障&am…...

【webrtc】 对视频质量的码率控制的测试与探索

目录 环境设置 transport-cc goog-remb (webrtc中的两种码率算法&#xff09; 修改成remb算法 测试 效果 后续 可参考工程 环境设置 要到meshx上操作 telnet 112 然后执行factory_env show |grep meshx_ip 之后telnet meshx_ip 用户名admin 密码****.119 执行一下r…...

2003 - Can‘t connect to MysQL server on ‘39.108.169.0‘ (10060 “Unknown error“)

问题描述 某天和往常一样启动java项目&#xff0c;发现数据库出问题了&#xff0c;然后打开navicat&#xff0c;发现数据库的链接都连接不上&#xff0c; 一点击就会弹出报错框&#xff1a; 然后就各种上网搜索。 解决方案 上网查了一些解决方案&#xff0c;大部分都是说看…...

Python算法——选择排序

选择排序&#xff08;Selection Sort&#xff09;是一种简单的排序算法&#xff0c;它的基本思想是在未排序的部分中选择最小&#xff08;或最大&#xff09;的元素&#xff0c;然后将其放在已排序部分的末尾。选择排序不同于冒泡排序&#xff0c;它不需要反复交换元素&#xf…...

从「码农」到管理者,E人程序员的十年蜕变

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 场地支持 / 声湃轩北京录音间 当我们谈论程序员创业时&#xff0c;常常会首先想到一些传统观念认为的挑战&#xff1a;沟通技巧不佳、逻…...

ant Java任务的jvmargs属性和<jvmarg>内嵌元素

ant的Java任务可以在运行Apache Ant的Java虚拟机内、或者启用另外的Java虚拟机运行一个Java类。 可以使用java任务的jvmargs属性&#xff0c;设置传递给在新进程中的java虚拟机的参数。但当java任务的fork禁用的时候&#xff0c;jvmargs属性会被忽略。jvmargs这个属性已经被废…...

XML External Entity-XXE-XML实体注入

XML 实体? XML 实体允许定义标签,在解析 XML 文档时这些标签将被内容替换。一般来说,实体分为三种类型: 内部实体 外部实体 参数实体。 必须在文档类型定义(DTD)中创建实体 一旦 XML 文档被解析器处理,它将js用定义的常量“Jo Smith”替换定义的实体。正如您所看到…...

生态扩展Spark Doris Connector

生态扩展Spark Doris Connector doris官网去查找相匹配的spark spark的安装&#xff1a; tar -zxvf spark-3.1.2-bin-hadoop3.2.tgzmv spark-3.1.2-bin-hadoop3.2 /opt/sparkspark环境配置&#xff1a;vim /etc/profile export SPARK_HOME/opt/spark export PATH$PATH:$SPAR…...

构建 hive 时间维表

众所周知 hive 的时间处理异常繁琐且在一些涉及日期的统计场景中会写较长的 sql&#xff0c;例如&#xff1a;周累计、周环比等&#xff1b;本文将使用维表的形式降低时间处理的复杂度&#xff0c;提前计算好标准时间字符串未来可能需要转换的形式。 一、表设计 结合业务场景常…...

Pycharm安装jupyter和d2l

安装 jupyter: jupyter是d2l的依赖库&#xff0c;没有它就用不了d2l pycharm中端输入pip install jupyter安装若失败则&#xff1a; 若网速过慢&#xff0c;则更改镜像源再下载&#xff1a; pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ pip …...

虹科案例 | AR内窥镜手术应用为手术节约45分钟?

相信医疗从业者都知道&#xff0c;在手术室中有非常多的医疗器械屏幕&#xff0c;特别是内窥镜手术室中医生依赖这些内窥镜画面来帮助病患进行手术。但手术室空间有限&#xff0c;屏幕缩放位置相对固定&#xff0c;在特殊场景下医生观看内窥镜画面时无法关注到病患的状态。这存…...

纳米银线 纳米银纳米线 平均直径: 50-100nm

&#xff08;西&#xff09;纳米银线 &#xff08;安&#xff09;含量&#xff08;%&#xff09;&#xff1a;99.9 &#xff08;瑞&#xff09;平均直径: 50-100nm &#xff08;20nm 30nm 60nm &#xff09; &#xff08;禧&#xff09;长度&#xff1a;10um …...

力扣labuladong——一刷day15

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣92. 反转链表 II二、力扣206. 反转链表 前言 一、力扣92. 反转链表 II /*** Definition for singly-linked list.* public class ListNode {* int…...

【开题报告】基于微信小程序的母婴商品仓储管理系统的设计与实现

1.研究背景 母婴商品是指专门为婴幼儿和孕产妇提供的各类产品&#xff0c;如婴儿奶粉、尿布、奶瓶、洗护用品等。随着社会经济的发展和人们对婴幼儿健康关注度的提高&#xff0c;母婴商品市场呈现出快速增长的趋势。同时&#xff0c;电子商务的兴起和互联网技术的发展&#xf…...

Faraday库

require faraday# 创建Faraday对象&#xff0c;使用作为代理服务器 proxy_host huake proxy_port 1111 faraday Faraday.new(:proxy > { :host > proxy_host, :port > proxy_port })# 使用Faraday对象发送GET请求到https://www.dianping.com/ response faraday.get…...

【原创】java+swing+mysql校园论坛管理系统设计与实现

摘要&#xff1a; 随着互联网技术的不断发展&#xff0c;论坛作为一种信息交流和互动的平台&#xff0c;在学校中发挥着越来越重要的作用。校园论坛管理系统是为了方便学校管理论坛、提高论坛的互动性和用户体验而设计的一款系统。一般的论坛网站都是B/S架构&#xff0c;也就是…...

endnote调整参考文献

endnote调整参考文献 1. 2. 3.自定义GBT7714!!!...

chap认证带客户端IP分配案例

PPP协议两边的网段可以不在同一个网段&#xff0c;因为数据链路帧用0xff表示帧&#xff0c;不用arp&#xff0c;所以可以不同网段。 R1&#xff1a; aaa local-user test password cipher admin local-user test service-type ppp interface Serial4/0/0 link-protocol ppp pp…...

算法笔记【8】-合并排序算法

文章目录 一、前言二、合并排序算法基本原理三、实现步骤四、优缺点分析 一、前言 合并排序算法通过采用分治策略和递归思想&#xff0c;实现了高效、稳定的排序功能。本文将深入探讨合并排序算法的原理、实现步骤&#xff0c;并讨论其优缺点。 二、合并排序算法基本原理 合…...