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

聊城手机网站服务网站推广公司排行榜

聊城手机网站服务,网站推广公司排行榜,漯河建网站,时时彩五星做号网站题目大意 给你一个矩阵,每个格子是0-9之间的任何一个元素,现在对于0-9这10个不同的数,要在矩阵内构造出最大的三角形 每个三角形的定义如下,设当前要构造的是第 d d d个数的最大三角形: 该三角形的三个顶点都要是数d …

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

题目大意

给你一个矩阵,每个格子是0-9之间的任何一个元素,现在对于0-9这10个不同的数,要在矩阵内构造出最大的三角形
每个三角形的定义如下,设当前要构造的是第 d d d个数的最大三角形:
该三角形的三个顶点都要是数d
必须有一条边平行于矩阵
在每次构造三角形的时候可以把矩阵内任意一个点的大小改为d,构造完后改回(每次构造之间修改不影响)
为了简便计算,求三角形面积时不需要/2,直接 底*高 即可

思路1

其实只需要确定两个点的位置,剩下一个点因为可以任意取一个点,所以关键是怎么选择其中两个点,对于第d个数,如果点的数量<=1,那么修改一个也不够凑成三角形,直接输出0

否则记录每个点的x,y坐标,
首先考虑垂直边平行于坐标轴的情况(两个点x值相等),遍历所有点,
对于相同元素d的点按行坐标进行递增排序
则以垂直边为底的高的最大值就是:

最后一个点减去当前点的横坐标 最后一个点减去当前点的横坐标 最后一个点减去当前点的横坐标 当前点的横坐标减去第一个点的横坐标 当前点的横坐标减去第一个点的横坐标 当前点的横坐标减去第一个点的横坐标
的最大值(不太严谨的可以将当前点看做中点,取左边或者右边),

那么这条平行边的最大值就是 当前点离x轴的距离y或者n-y+1(第三个点的y值)
这样我们就求出了当选择这个点且垂直边平行于坐标轴时的情况,取所有点得出的最大值

然后交换所有点的行和列坐标翻转再来一遍,相当于是求水平边平行于坐标轴的情况

// Author: zengyz
// 2025-06-12 15:55#include <bits/stdc++.h>
#include <iostream>
using namespace std;
using i64 = long long;void solve()
{int n;cin >> n;vector<vector<int>> a(n, vector<int>(n, 0));vector<pair<int, int>> vp[10];for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){char op;cin >> op;a[i][j] =op-'0';vp[a[i][j]].push_back({i, j});}}for (int i = 0; i <= 9; i++){if (vp[i].size() <= 1){cout << "0 " ;}else{int ans=0;for(int k=0;k<2;k++){sort(vp[i].begin(), vp[i].end());for(auto x:vp[i]){int disx=max(vp[i].back().first-x.first,x.first-vp[i][0].first);int disy=max(x.second,n-1-x.second);ans=max(ans,disx*disy);}for(auto &x:vp[i])swap(x.first,x.second);}cout<<ans<<" ";}}cout<<endl;return;
}int main()
{ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);int _T = 1;cin >> _T;while (_T--){solve();}return 0;
}

思路2

先考虑水平边平行于x轴的情况
考虑一个点(x,y),设第三个点会与这个点平行,因为可以任取,所以既可以在最左边长度为(1,y),也可以在最右边(n,y)
那么取max(x,n-x+1)那么剩下一个点就取离这条平行边最远的一个点,设构造第d个三角形时垂直方向出现过的最大值ya和最小值yi,则有高为max(ya-j,j-yi)
那么答案就是 m a x ( x , n − x + 1 ) ∗ m a x ( y a − j , j − y i ) max(x,n-x+1)*max(ya-j,j-yi) max(x,nx+1)max(yaj,jyi)

竖直方向同理

// Author: zengyz
// 2025-06-12 15:55#include <bits/stdc++.h>
#include <iostream>
using namespace std;
using i64 = long long;void solve()
{int n;cin >> n;vector<vector<int>> a(n, vector<int>(n, 0));vector<int> xi(10, 1e9), xa(10), yi(10, 1e9), ya(10), ans(10);for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){char op;cin >> op;int now = op - '0';a[i][j] = now;xi[now] = min(xi[now], i);xa[now] = max(xa[now], i);yi[now] = min(yi[now], j);ya[now] = max(ya[now], j);}}for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){int now = a[i][j];ans[now] = max(ans[now], max(i, n - 1 - i) * max(ya[now] - j, j - yi[now]));ans[now] = max(ans[now], max(j, n - 1 - j) * max(xa[now] - i, i - xi[now]));}}for (int i = 0; i <= 9; i++)cout << ans[i] << " ";cout << endl;return;
}int main()
{ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);int _T = 1;cin >> _T;while (_T--){solve();}return 0;
}
http://www.dtcms.com/wzjs/400002.html

相关文章:

  • php做视频网站源码系统优化大师免费版
  • wordpress主题怎么上传淘宝怎样优化关键词
  • 北京的互联网公司百度推广优化师培训
  • 开通网站的请示最近几天发生的新闻大事
  • 网站建设mvc三层框架图百度指数有哪些功能
  • 合肥做网站设计完美动力培训价格表
  • 企业网站分析小说搜索风云榜排名
  • 梁山做网站价格2021小说排行榜百度风云榜
  • 做搞笑app好还是做电影网站好品牌seo推广咨询
  • 向国外支付网站开发费怎么建立企业网站
  • 适合个人做的网站电商数据查询平台
  • 网站设计多少钱微信管理
  • 关于网站的ppt怎么做品牌营销推广代运营
  • 电脑网站做名片河南做网站的
  • 做网站那些好合肥优化推广公司
  • 郑州运营网站搭建优化制作网站的软件叫什么
  • 网站在线客服平台免费百度引流免费推广怎么做
  • 中山做网站推广公司唐山seo推广公司
  • 什么做网站开发seo网络推广经理
  • 成都网站建设博客网站建设步骤
  • 专门做爬虫的网站seo业务培训
  • 日本做美食视频网站有哪些外贸建站平台
  • 要建设一个网站需要什么手续费我要推广
  • 我有域名跟空间能教我做网站吗网上推广赚钱方法
  • 做物流和供应链网站电商网站图片
  • 设计一份包含网站建设范网络推广的目标
  • 做传奇私服网站大概多少钱市场调研分析报告怎么写
  • 政府门户网站建设公司公司seo是指什么意思
  • 网站建设的大概费用广东最新疫情
  • 自己做网站的过程东莞网络营销推广专业