Codeforces 1086 简要题解

文章目录


传送门
这场比赛原地爆炸了啊!!!
只做了两道。

A题

传送门 手贱没关 f r e o p e n freopen freopen于是 w a wa wa了一次,死活调不出错。
题意:给出网格图上三个点坐标,让你求出让三个点连通的最少网格数并且输出任意一种连接的方案。


思路:可以直接上分类讨论。
不过可以人脑减去一些讨论。
我们设最初的坐标为 ( x 1 , y 1 ) , ( x 2 , y 2 ) , ( x 3 , y 3 ) (x_1,y_1),(x_2,y_2),(x_3,y_3) (x1,y1)(x2,y2)(x3,y3)
然后把 x , y x,y x,y分别排序变成 x 1 ′ , x 2 ′ , x 3 ′ x_1',x_2',x_3' x1,x2,x3 y 1 ′ , y 2 ′ , y 3 ′ y_1',y_2',y_3' y1,y2,y3
显然横向走的长度是 x 3 − x 1 + 1 x_3-x_1+1 x3x1+1,我们不妨直接把 ( x 1 ′ , y 2 ′ ) − > ( x 3 ′ , y 2 ′ ) (x_1',y_2')->(x_3',y_2') (x1,y2)>(x3,y2)全部染上。
然后就只用考虑纵向的了。
于是我们找到 y y y最小的点 p ( p x , p y ) p(p_x,p_y) p(px,py),把 ( p x , p y ) − > ( p x , y 1 − 1 ) (p_x,p_y)->(p_x,y_1-1) (px,py)>(px,y11)染上,然后类似地去找到 y y y最大的点 q ( q x , q y ) q(q_x,q_y) q(qx,qy),把 ( q x , q y ) − > ( q x , y 1 − 1 ) (q_x,q_y)->(q_x,y_1-1) (qx,qy)>(qx,y11)染上就可以满足题意了。
代码:

#include<bits/stdc++.h>
#define ri register int
using namespace std;
inline int read(){
   
	int ans=0;
	char ch=getchar();
	while(!isdigit(ch))ch=getch
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值