题解 AT3877 【[ARC089C] GraphXY】
在【有趣的思维题】里看到了这道题。
题意:
给出一个\(A\times B\)的矩阵,其中第i行第j列元素为\(d_{i,j}\),试构造一个有向图,满足:
有向图点数\(\le 300\)
没有重边和自环
图中边有边权,边权\(\in [0,100]\)且是正整数。或者是未知数X或者Y
对于所有\(x \in [1,A] \ y\in[1,B]\),满足未知数\(X=x,Y=y\)时,图中s到t的最短路为\(d_{x,y}\)
看清楚题目了,睁大眼睛。s和t是自己选定的,x和y是在区间内变化的,再读一遍题意。
分析:
当 \(s\) 与 \(t\) 之间的路径上有 \(i\) 个\(x\) ,\(j\) 个 \(y\) ,设 \(f_{i,j}\) 表示此时路径上其余边的最小可能长度。
\(d_{x,y}\ge ix+jy+f_{i,j}\) 。
有:\(d_{x,y}=\min \{ix+jy+f_{i,j}\}\)
尝试构造一种情况,
\(f_{i,j}=\max \{d_{x,y}-ix-jy\}\)
连两条长度为 \(100\) ,有 \(101\) 个点的链,一条链所有边权为 \(X\) ,另一条链所有边权为 \(Y\)
\(X\) 链的第 \(i\) 个节点和 \(Y\) 链的倒数第 \(j\) 个节点间连一条边权 \(f_{i,j}\) 的边。
如果 \(d_{x,y} \neq \min \{ix+jy+f_{i,j}\}\) 则是无解情况。
否则输出答案。
#include<bits/stdc++.h>
using namespace std;
const int inf=0x3f3f3f3f,N=310;
int n,m,f[N][N],d[N][N];
int bmin(int a,int b){ return (a<b)?a:b;}
int bmax(int a,int b){ return (a<b)?b:a;}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++)
scanf("%d",&d[i][j]);
for(int i=0;i<=100;i++) for(int j=0;j<=100;j++)
for(int x=1;x<=n;x++) for(int y=1;y<=m;y++)
f[i][j]=bmax(f[i][j],d[x][y]-i*x-j*y);
for(int x=1;x<=n;x++) for(int y=1;y<=m;y++){
int mn=inf;
for(int i=0;i<=100;i++) for(int j=0;j<=100;j++)
mn=bmin(mn,f[i][j]+i*x+j*y);
if(mn!=d[x][y]){ puts("Impossible"); return 0; }
}
puts("Possible"); printf("202 10401\n");
for(int i=1;i<=100;i++) printf("%d %d X\n",i,i+1);
for(int i=102;i<202;i++) printf("%d %d Y\n",i,i+1);
for(int i=0;i<=100;i++) for(int j=0;j<=100;j++)
printf("%d %d %d\n",i+1,202-j,f[i][j]);
puts("1 202");
return 0;
}
题解 AT3877 【[ARC089C] GraphXY】的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- 079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象
079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象 本文知识点:实例化对象 说明:因为时间紧张,本人写博客过程中只是对知 ...
- 【漏洞复现】PHPmyadmin 4.8.1后台Getshell新姿势
原文地址:https://mp.weixin.qq.com/s/HZcS2HdUtqz10jUEN57aog 早上看到群里在讨论一个新姿势,phpmyadmin后台getshell,不同于以往需要知道 ...
- .NET Standard SDK 样式项目中的目标框架
系列目录 [已更新最新开发文章,点击查看详细] 包表示形式 .NET Standard 引用程序集的主要分发载体是 NuGet 包. 实现会以适用于每个 .NET 实现的各种方式提供. NuG ...
- Linux 下 svn 场景实例及常用命令详解
一.SVN使用场景实例 问题: 在使用svn做为版本控制系统的软件开发中,经常会有这样的需求:在工作复本目录树的不同目录中增加了很多文件,但未纳入版本控制系统,这时如果使用svn add命令一个一个的 ...
- 跟着动画学习 TCP 三次握手和四次挥手
TCP三次握手和四次挥手的问题在面试中是最为常见的考点之一.很多读者都知道三次和四次,但是如果问深入一点,他们往往都无法作出准确回答. 本篇尝试使用动画来对这个知识点进行讲解,期望读者们可以更加简单地 ...
- Azure Media Player Logo隐藏和 视频字幕样式
<style type="text/css"> /**hide mediaplayer logo*/ .amp-default-skin .amp-content-ti ...
- git pull设置为无需密码
https方式每次都要输入密码,按照如下设置即可输入一次就不用再手输入密码的困扰而且又享受https带来的极速 设置记住密码(默认15分钟): git config --global credenti ...
- 【7】进大厂必须掌握的面试题-Java面试-Jsp
1. jsp的生命周期方法是什么? 方法 描述 公共无效的jspInit() 与servlet的init方法相同,仅被调用一次. 公共无效_jspService(ServletRequest requ ...
- spring boot:构建多模块项目(spring boot 2.3.1)
一,为什么要使用多模块? 1,结构更清晰,方便管理 如果只是一个小项目当然没有问题, 但如果功能越增越多则管理越来越复杂, 多模块可以使项目中模块间的结构分离 2,把项目划分成多 ...
- centos8平台安装redis6.0.1
一,redis的官网: https://redis.io/ redis6于5月3日正式发布,它的新增功能: acl 多线程io cluster proxy resp3协议 本文演示redis6.0.1 ...