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

天津哪里有做网站的公司10大免费图片处理软件

天津哪里有做网站的公司,10大免费图片处理软件,郑州住房和城乡建设厅网站,辽宁工业大学教务管理系统题目 如果此题数据要小一点,那么我们可以用克鲁斯卡尔算法通过,但是这个数据太大了,空间会爆炸,时间也会爆炸。 我们发现,如果用 MST 做,那么很多边的边权都一样,我们可以整行整列地删除。 我…

题目

如果此题数据要小一点,那么我们可以用克鲁斯卡尔算法通过,但是这个数据太大了,空间会爆炸,时间也会爆炸。

我们发现,如果用 MST 做,那么很多边的边权都一样,我们可以整行整列地删除。

我们造一个样例解析一下:

+-+--+---+
| |  |   |
+-+--+---+
| |  |   |
| |  |   |
+-+--+---+

首先,我们删除第一列的栅栏:

+-+--+---+
| |  |   |
+ +--+---+
| |  |   |
| |  |   |
+-+--+---+

此时答案是 1 1 1

再删除第一排的栅栏:

+-+--+---+
|        |
+ +--+---+
| |  |   |
| |  |   |
+-+--+---+

此时答案是 3 3 3

我们继续删除第二列的栅栏:

+-+--+---+
|        |
+ +  +---+
| |  |   |
| |  |   |
+-+--+---+

此时答案是 5 5 5

我们继续删除第二行的栅栏:

+-+--+---+
|        |
+ +  +---+
|        |
|        |
+-+--+---+

此时答案是 9 9 9

我们把第三列的栅栏删除,由于之前删除的两行栅栏导致第三列栅栏少删除一个,不用删除。

你可以继续造更大的数据发现规律:

我们先把每一列,每一行的栅栏长度算出来,从小到达排序,然后用双指针算法,两个指针 i i i j j j,第一个记录统计到哪一行,第二个记录统计到哪一列,这两个变量的初始值应该为 2 2 2,然后把第一列,第一行栅栏删除。讨论时,如果我们当前讨论的行比列要短,就删除 m − j + 1 m-j+1 mj+1 个栅栏,因为之前删除的栅栏导致我们现在不用删除一些栅栏。反之,同理,就是 n − i + 1 n-i+1 ni+1 个栅栏。如果一个指针走完了,那么所有的都是联通的,就不用再循环了。时间复杂度 O ( n ) O(n) O(n),通过。

AC Code:

#include <algorithm>
#include <iostream>
#include <cstring>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
#include <list>
#include <set>
#include <map>
using namespace std;
int h, w, n, m;
int a[300000], b[300000];
long long a1[300000], b1[300000];
long long ans;int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> h >> w >> n >> m;for (int i = 1; i <= n; i ++) cin >> a[i];for (int i = 1; i <= m; i ++) cin >> b[i];sort(a + 1, a + n + 1);sort(b + 1, b + m + 1);n++;a[n] = h;m++;b[m] = w;for (int i = 1; i <= n; i ++) {a1[i] = a[i] - a[i - 1];}for (int i = 1; i <= m; i ++) {b1[i] = b[i] - b[i - 1];}sort(a1 + 1, a1 + n + 1);sort(b1 + 1, b1 + m + 1);
//	for (int i = 1; i <= n; i ++) {
//		cout << a1[i] << ' ';
//	}
//	cout << '\n';
//	for (int j = 1; j <= m; j ++) {
//		cout << b1[j] << ' ';
//	}
//	cout << '\n';int i = 2, j = 2;ans = a1[1] * (m - 1);ans += b1[1] * (n - 1);while (i <= n && j <= m) {if (a1[i] < b1[j]) {ans += a1[i] * (m - j + 1);i++;}else {ans += b1[j] * (n - i + 1);j++;}}cout << ans;return 0;
}
http://www.yayakq.cn/news/835768/

相关文章:

  • 音乐网站手机模板上海中学地址
  • 郑州企业建站系统模板好看的页面
  • app制作平台下载安阳seo关键词优化
  • 成都网站建设比较好的公司网站开发技术选型
  • 国内商城网站建设仿中国化妆品网站模板
  • 网页设计网站建设报告增城网站定制开发公司
  • 广州网页设计做网络优化哪家公司比较好
  • 关于加强网站建设的情况说明中国建筑集团有限公司是国企吗
  • 网站建设初学app网站建设哪家好
  • 为什么做网站必须要用域名网页设计人员招聘
  • 开发网站企业国际贸易网址
  • 关于旅行社网站规划建设方案书seo短视频网页入口引流方法是什么
  • 企业网站案例分析成都网站搜索引擎优化
  • 建设银行国管公积金管理中心网站建站之星管理中心
  • 加盟网站建设服务广东省东莞市建设培训中心网站
  • 网站建设 软件微网站的好处
  • 怎么仿制一个网站无备案网站做cdn
  • 一微网站建设公司网站设计与制作说明书
  • 做明星ps黄图网站哪些网站可以做电脑画画赚钱
  • 微信做淘宝优惠券但网站是怎么建设但学校官网网页怎么制作html
  • 罗山网站建设2021年uc秒懂网址推荐
  • p2p网站建设的步骤过程一级A视网站 一级做爰片
  • 网站建设方案哪家好 推荐用什么做asp网站
  • 宝洁公司网站建设案例wordpress可以卸载
  • 攸县网站定制淄博网站优化推广
  • 洛阳霞光营销型网站石家庄公司建设网站
  • 自己怎么建个网站赚钱四川电脑网站建设
  • 南京产品网站建设收费巨鹿网站制作
  • 深圳网站建设与设计制作佛山高端网站开发公司
  • 做网站公司介绍ppt按文章标题相关wordpress