当前位置: 首页 > 编程日记 > 正文

HDU 6229 Wandering Robots 找规律+离散化

题目链接:Wandering Robots

题解:先讲一下规律,对于每一个格子它可以从多少个地方来有一个值(可以从自己到自己),然后答案就是统计合法格子上的数与所有格子的数的比值

比如说样例的3 0格子上的值就是

3 4 3

4 5 4

3 4 3

答案就是22/33 =2/3;接下来就是如何统计答案了,由于图1e4*1e4的但点只有1e3必须将图离散化得到新图,离散化是要将点相邻的两行也要加进新图,这样省去的点在原图上相邻没有被阻隔的点,然后dfs一次,把可以到达的点标记一边,然后统计答案注意边界。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=3e3+10;
bool vis[N][N],mp[N][N];
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};
int n,k,mm,mn;
int sc[N],sr[N],cn1,cn2;
int x[N],y[N];
int x_hash(int x)
{return lower_bound(sc,sc+mn,x)-sc;
}
int y_hash(int y)
{return lower_bound(sr,sr+mm,y)-sr;
}
void dfs(int x,int y)
{vis[x][y]=1;for(int i=0;i<4;i++){int tx=x+dx[i],ty=y+dy[i];if(tx>=0&&tx<mn&&ty>=0&&ty<mm&&!vis[tx][ty]&&!mp[tx][ty])dfs(tx,ty);}
}
int get(int x,int y)
{if(!vis[x][y])return 0;int cnt=vis[x][y];for(int i=0;i<4;i++){int tx=x+dx[i],ty=y+dy[i];if(tx>=0&&tx<mn&&ty>=0&&ty<mm)cnt+=vis[tx][ty];}return cnt;
}
int main(){int T;scanf("%d",&T);int cas=1;while(T--){cn1=0;cn2=0;//memset(vis,0,sizeof(vis));//memset(mp,0,sizeof(mp));scanf("%d %d",&n,&k);sc[cn1++]=0;sc[cn1++]=n-1;sr[cn2++]=0;sr[cn2++]=n-1;for(int i=0;i<k;i++){scanf("%d %d",&x[i],&y[i]);sc[cn1++]=x[i];if(x[i]-1>=0)sc[cn1++]=x[i]-1;if(x[i]+1<n)sc[cn1++]=x[i]+1;sr[cn2++]=y[i];if(y[i]-1>=0)sr[cn2++]=y[i]-1;if(y[i]+1<n)sr[cn2++]=y[i]+1;}sort(sc,sc+cn1);sort(sr,sr+cn2);mn=unique(sc,sc+cn1)-sc;mm=unique(sr,sr+cn2)-sr;for(int i=0;i<=mn;i++){for(int j=0;j<=mm;j++){vis[i][j]=mp[i][j]=0;}}for(int i=0;i<k;i++){mp[x_hash(x[i])][y_hash(y[i])]=1;}dfs(0,0);int an1=0,an2=0;for(int i=0;i<mn;i++){if(i!=0){an1+=(sc[i-1]+1+sc[i]+1)*(sc[i]-sc[i-1]-1)*5/2;an1-=sc[i]-sc[i-1]-1;}for(int j=0;j<mm;j++){if(sr[j]+sc[i]>=n-1)an1+=get(i,j);if(j<mm-1&&sr[j]+1!=sr[j+1]){int tmp=n-1-sc[i];if(sr[j+1]-1>=tmp){if(sr[j]+1>=tmp){if(sc[i]==0||sc[i]==n-1)an1+=4*(sr[j+1]-sr[j]-1);else an1+=5*(sr[j+1]-sr[j]-1);}else{if(sc[i]==0||sc[i]==n-1)an1+=4*(sr[j+1]-tmp);else an1+=5*(sr[j+1]-tmp);}}}an2+=get(i,j);}}an2+=5*(n*n-mn*mm);an2-=2*(n-mn)+2*(n-mm);int gc=__gcd(an1,an2);an1/=gc;an2/=gc;printf("Case #%d: %d/%d\n",cas++,an1,an2);}return 0;
}

转载于:https://www.cnblogs.com/lhclqslove/p/9736747.html

相关文章:

app、H5、safari、appstore应用主页评分页之间拉起调用、打开手机某些系统功能、app打开文档

定义打开URL的方法 - (void)openURL:(NSString *)urlStr {NSURL *url [NSURL URLWithString:urlStr];UIApplication *app [UIApplication sharedApplication];if ([app canOpenURL:url]) { #ifdef __IPHONE_10_0[app openURL:url options:[NSDictionary dictionary] complet…

XML学习总结

1、XML结构 2、XmlNodeType值为一个枚举类型&#xff1a; 假设我们对一个XML文件进行遍历&#xff0c;不推断节点是否为Element类型。就会将文本节点遍历出来&#xff0c;出现#test。 3、XmlElement和XmlNode的差别&#xff1a;&#xff08;摘自CSDN论坛&#xff09; &#xff…

Linux01-基本操作与Shell

目录 一、环境 二、Linux目录结构及基本操作 2.1 Linux目录结构 2.2 基本操作 三、shell 3.1 shell的意义 3.2 su - 一、环境 2019年搞下RHCE的证书&#xff0c;但是一直没有整理Linux学习的笔记&#xff0c;为了不让到手的知识被遗忘&#xff0c;从今天起整理Linux学习…

ORB_SLAM2中Tracking线程的三种追踪方式

1、参考关键帧追踪模式 bool Tracking::TrackReferenceKeyFrame()对参考关键帧中的路标点进行跟踪。在Tracking线程中&#xff0c;每传入一帧&#xff0c;都会进行位姿优化。 以上一帧的位姿为当前位姿进行优化。 &#xff08;1&#xff09;计算当前帧的词袋 mCurrentFra…

nodejs 中间件 反向代理 接口转发

背景 随着后端业务系统的增加&#xff0c;纵向需求不断扩展&#xff0c;一个业务系统已经无法满足需求了&#xff0c;衍生出多个业务系统&#xff0c;对外暴露的ip、端口就可能有多个&#xff0c;此时不方便外部接口调用&#xff0c;有些特殊行业客户出于安全性考虑不发提供多…

oneinstack

https://oneinstack.com/转载于:https://www.cnblogs.com/diyunpeng/p/9740895.html

最近在做托盘时,发现 CnTrayIcon1的OnClick 事件,不能被其它按钮来执行,蛋疼。...

比如&#xff1a; procedure TForm1.Button1Click(Sender: TObject);begin CnTrayIcon1.OnClick ; // 这句就是不能通过&#xff01;&#xff01;end; 有过路的高手&#xff0c;指点学生一下。谢谢转载于:https://www.cnblogs.com/hahy8008/p/6783614.html

Linux02-帮助手册

目录 一、man手册 1.1 man的基本使用 1.2 mandb更新文档 二、/usr/share/doc 三、access.redhat.com 门户 一、man手册 1.1 man的基本使用 man就是mannual的缩写&#xff0c;手册的意思。Linux的命令很多&#xff0c;参数选项更多&#xff0c;人脑一般是记不住的&…

ORB_SLAM2中Tracking线程

Tracking线程是ORB_SLAM2的主线程。在System.cc中&#xff0c;使用构造函数进行了初始化&#xff0c;开启了三个线程。 可执行程序—>System构造函数&#xff08;初始化三个线程&#xff09;—>处理输入的帧&#xff08;TrackMonocular&#xff09;—>调用Tracking线程…

selenium的基础知识点

from selenium import webdriver from scrapy.selector import Selector#模拟登陆 browser webdriver.Chrome(executable_pathChromedriver.exe) #路径是Chromedriver.exe的存放位置&#xff0c;windows下只要配置好这个环境就不需要了browser.get(http://w) #需要登陆的那个网…

iOS 直播专题2-音视频采集

从设备(手机)的摄像头、MIC中采集音频、视频的原始数据ios的音视频采集可以从AVFoundation框架里采集 视频采集 这里我们选取GPUImage来采集视频,因为这个框架集成了很多视频滤镜,例如美颜 采集流程: 摄像头采集视频代码 GPUImageVideoCamera.m // 从前摄像头或后摄像头…

bzoj 4871: [Shoi2017]摧毁“树状图”

4871: [Shoi2017]摧毁“树状图” Time Limit: 25 Sec Memory Limit: 512 MBSubmit: 53 Solved: 9[Submit][Status][Discuss]Description 自从上次神刀手帮助蚯蚓国增添了上千万人口&#xff08;蚯口&#xff1f;&#xff09;&#xff0c;蚯蚓国发展得越来越繁荣了&#xff01…

Linux03-本地账户和组

目录 一、本地账户/etc/passwd 二、本地组/etc/group 三、切换账户su - 四、增删改本地账户useradd、userdel、usermod 五、账户默认配置文件/etc/login.defs 六、设置密码passwd(5)命令 七、增删改组groupadd、groupdel和groupmod 八、通过sudo以root身份运行命令 九…

ORB_SLAM2单目初始化策略

基本流程 单目初始化程序存储在Initializer.cc中   需要注意&#xff0c;对于双目/RGB-D相机&#xff0c;初始化时&#xff0c;由于可以直接获得相机的深度信息&#xff0c;因此无需求H/F&#xff0c;直接作为关键帧插入就行。   使用RANSACDLT求解H&#xff0c;RANSAC八点…

Powerdesigner逆向工程64位Oracle数据库

Powerdesigner老版本不支持64位Client&#xff0c;新版本弄不到破解码 解决方法&#xff0c;用Powerdesigner32位Oracle Clent访问64位Oracle Server 遇到的坑分享下 安装完64位的Oracle Server ,32位的 Oracle Clent默认的listener.ora文件有PROGRAM和ENVS这两个节点 Plsql(3…

运行jsp时,报错404

The origin server did not find a current reprsentation for the target resource or is not willing to disclose that one exists. 解决&#xff1a; 1. web.xml文件位置是否放错&#xff0c;应该放在WebContent/WEB-INF文件夹中 2. web.xml文件中是否有拼写错误&#xff0…

iOS 直播专题3-前置处理

前置处理 对视频添加美颜、水印、滤镜等对音频进行混音、消除环境音、声音特效等上一篇iOS 直播专题2-音视频采集提到视频采集采用的是GPUImage框架,这个框架集成了很多滤镜效果 这里主要介绍美颜、水印处理 处理流程: 美颜 这里的美颜效果用的是GPUImageBeautyFilter 功…

ORA-10873解决办法

今天&#xff0c;发现SAP系统的oracle数据库宕掉了。报错ORA-10873&#xff0c;经过查证解决该问题。记录一下&#xff0c;备忘。 一、问题 Oracle版本为12.1.0.2.0&#xff0c;在启动服务器后启动数据库startup&#xff0c;报错ORA-10873。 二、查证 到SAP Support Portal上…

ORB_SLAM2局部建图线程

局部建图线程入口&#xff1a;可执行程序在初始化三个线程的时候&#xff0c;在System.cc的构造函数中进入局部建图线程 mpLocalMapper new LocalMapping(mpMap, //指定使iomanipmSensorMONOCULAR); // TODO 为什么这个要设置成为MONOCULAR&#xff1f;&#xff1f;&#…

十一连测day1

这次测试&#xff0c;是福建第三中学的某同学出的&#xff0c;感觉难度还行吧&#xff0c;今天我就浅谈一下这场比赛的时间分配与心得 打开题目&#xff0c;看到了T1&#xff0c;这题是一道计数题吧&#xff0c;感觉心态一下子就崩了&#xff0c;100%的数据点应该是组合数学容斥…

iOS 直播专题5-推流

常用的推流协议有: 协议内容RTP实时流传输协议,但不保证服务质量RTCPRTP数据流协议的一个姐妹协议,为RTP提供服务质量反馈SRTP & SRTCPRTP和RTCP的安全版本,提供数据加密、消息认证功能RTSP控制声音或影像的多媒体数据串流协议RTMPADOBE公司播放器与服务器之间多媒体数…

centos6.5-vsftp搭建

我的机子是默认是没有的vsftp。 yum install -y vsftp 创建账户专为ftp而生。useradd ftp01 更改账户不可登录系统。usermod -s /sbin/nologin ftp01 vsftp默认是可以匿名登录的&#xff0c;也是默认的端口&#xff0c;这些不安全选项都要修改&#xff01; anonymous_enableYES…

Linux04-文件系统权限与ACL权限

目录 一、文件系统权限 1.1、认识文件系统权限 1.2、管理文件系统权限 1.3、特殊权限 1.4、默认权限 二、ACL权限 2.1、ACL本质是文件系统的一个挂载选项 2.2、更改文件的ACL权限 2.3、设置文件和目录的默认ACL权限 Linux中的权限管理分为两种类型 用户自主访问控制&…

ORB_SLAM2帧Frame

在追踪线程的一开始就会创建一个帧 cv::Mat Tracking::GrabImageMonocular(const cv::Mat &im,const double &timestamp)构造函数 在构造函数中&#xff0c;会对特征点进行提取。 ExtractORB(0,imGray);特征点分配至网格 将图像划分为48*64的网格&#xff0c;然后将…

Servlet的基本架构

Servlet的基本架构&#xff1a; package test;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Serv…

ORACLE 用户权限管理

Oracle创建用户的语法&#xff1a; CREATE USER username IDENTIFIED BY password OR IDENTIFIED EXETERNALLY OR IDENTIFIED GLOBALLY AS CNuser [DEFAULT TABLESPACE tablespace] [TEMPORARY TABLESPACE temptablespace] [QUOTA [integer K[M] ] [UNLIMITED] ] ON tables…

iOS 直播专题6-流媒体服务器

常用的流媒体服务器有: nginx、SRS、BMS 这里主要介绍nginx、SRS 这里都用docker来运行流媒体服务器 docker 安装 下载Mac版docker stable 直接安装 注册一个docer账号直接登录SRS 安装 SRS guthub地址:https://github.com/ossrs/srs/ 启动上面安装的docker软件后,打开终端…

Linux05-进程管理

目录 一、进程 1.1、进程ID 1.2、列出进程 1.3、进程前后台 二、使用信号控制进程 三、以管理员身份注销用户&#xff08;踢掉在线用户&#xff09; 四、监控进程活动 4.1、负载平均值 4.2、实时进程监控 进程是已启动的可执行程序的运行中的实力。它由以下部分组成&a…

Mat常用赋值方式

参考https://blog.csdn.net/wanggao_1990/article/details/53264753 #include <iostream> #include <opencv2/opencv.hpp> #include <unordered_map> using namespace std; using namespace cv; int main(int argc,char** argv) {// 1Mat mat (Mat_<flo…

java modbus协议

概念 Modbus是一种串行通信协议&#xff0c;Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。 大多数Modbus设备通信通过串口EIA-485物理层进行。 通讯格式 地址域功能码数据CRC校验(低字节在前)1字节1字节N字节2字节 在单片机硬件通讯串口行业&…