题解:P2315 [HNOI2005] 数三角形

news/2024/10/14 19:19:20

Problem Link

[HNOI2005] 数三角形

题意

输入一个大三角形的各个边存在情况,输出里面有多少个正三角形。

Solution

简单暴力即可,用 \(4\) 个数组维护每条边能延伸的最大长度,然后逐个判断三角形是否可行即可。

如图,l_upper 维护左端点向上(即 $\ell_{BA} $),l_lower 维护左端点向下(即 $\ell_{BC} $),r_upper 维护右端点向上(即 $\ell_{DA} $),r_lower 维护右端点向下(即 $\ell_{DC} $。

Code

//wriiten by Naught
#include <bits/stdc++.h>
using namespace std;typedef long long ll;
#define Maxn 1005
#define fo(i, l, r) for(int i = l; i <= r; ++i)
#define fr(i, r, l) for(int i = l; i >= r; --i)
#define getchar()(p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
char buf[1<<21], *p1 = buf, *p2 = buf;
inline int read(int x=0, bool f=0, char c=getchar()) {for(;!isdigit(c);c=getchar()) f^=!(c^45);for(;isdigit(c);c=getchar()) x=(x<<1)+(x<<3)+(c^48);return f?-x:x;}struct Trangle
{bool l, r, d;
}a[Maxn][Maxn];int n, ans, l_upper[Maxn][Maxn], r_upper[Maxn][Maxn], l_lower[Maxn][Maxn], r_lower[Maxn][Maxn];int main()
{n = read();fo(i, 1, n) fo(j, 1, i) a[i][j] = {(bool)read(), (bool)read(), (bool)read()};fo(i, 1, n) fo(j, 1, i) if(a[i][j].l) l_upper[i][j] = l_upper[i-1][j]+1;fo(i, 1, n) fo(j, 1, i) if(a[i][j].r) r_upper[i][j] = r_upper[i-1][j-1]+1;fr(i, 1, n) fo(j, 1, n) if(a[i+1][j].r) l_lower[i][j] = l_lower[i+1][j+1]+1;fr(i, 1, n) fo(j, 1, i) if(a[i+1][j+1].l) r_lower[i][j] = r_lower[i+1][j]+1;fo(i, 1, n) fo(j, 1, n)for(int k = j; k <= n && a[i][k].d && k-j+1 <= l_upper[i][j]; ++k) ans += (k-j+1) <= r_upper[i][k];fo(i, 1, n) fo(j, 1, n)for(int k = j; k <= n && a[i][k].d && k-j+1 <= l_lower[i][j]; ++k)ans += (k-j+1) <= r_lower[i][k];printf("%d", ans);return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

梳理好本职工作之项目管理

项目整个里程碑,每个阶段应该输出什么

微服务01 ZooKeeper, Kafka

1.4 微服务 1.4.6 Spring Cloud JAVA 微服务技术 Dubbo是2014年之前阿里退出的分布式系统的技术(不属于微服务)。现在主流是 Spring Cloud Spring Cloud官网地址: https://spring.io/projects/spring-cloud 官网上实现方法有很多种,目前主流是阿里巴巴实现的方法Spring Boot…

Swarm 框架登场:OpenAI 第 3 阶段「敲门砖」;马斯克的 Teslabot 实际有人远程操控丨 RTE 开发者日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有看点的 会议 」,但内容仅代表编辑…

[2024领航杯] Pwn方向题解 babyheap

[2024领航杯] Pwn方向题解 babyheap 前言: 当然这个比赛我没有参加,是江苏省的一个比赛,附件是XiDP师傅在比赛结束之后发给我的,最近事情有点多,当时搁置了一天,昨天下午想起来这个事情,才开始看题目,XiDP师傅说是2.35版本的libc,确实高版本libc的却棘手,我经验太浅了…

高级语言程序设计第三次个人作业

班级网址:https://edu.cnblogs.com/campus/fzu/2024C 作业网址:https://edu.cnblogs.com/campus/fzu/2024C/homework/13284 姓名:袁湘湘 学号:102400109 一,第四章编程练习: 1,4.8.2问题:忘记怎么算名字的宽度 解决:翻阅书本,使用strlen()函数 2,4.8.3问题:无法运行…

智媒AI写作助手轻松写作热点文章,为你提升流量!

在信息爆炸的时代,内容创作成为了吸引用户、提升流量的关键。然而,对于许多创作者来说,持续产出高质量的热点文章是一项挑战。正是在这样的背景下,智媒AI写作助手应运而生,它不仅能够帮助创作者轻松捕捉热点,还能提升文章的质量,从而有效提升流量。以下是智媒AI写作助手…

C++异步调用 future async promise packaged_task

背景:C++ 异步调用是现代 C++ 编程中的一种重要技术,它允许程序在等待某个任务完成时继续执行其他代码,从而提高程序的效率和响应性。 C++11 引入了 std::async、std::future 和 std::promise 等工具,使得异步编程变得更加方便和直观。以下是关于 C++ 异步调用的详细介绍,…

WPF - 项目样例

WPF - 项目样例1. 创建项目: 参考:https://www.cnblogs.com/1285026182YUAN/p/184623962. 修改App.xaml<Application x:Class="ModelFileMigrate.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schema…