520D
模拟
很明显应该尽量选最大或最小的数。那么我们维护一个set,再维护一个mp,每次检查是否能选,如果选完这个数上面的东西不悬空就可以选,每次选完都要更新四周-2+2的方块,因为再远就影响不到了
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
const int N = , mod = ;
int m;
ll ans;
map<PII, int> mp;
PII mir[N];
set<int> s;
int x[N], y[N];
int down(int x, int y)
{
int ret = ;
if(mp.find(make_pair(x, y)) == mp.end()) return ;
for(int i = -; i <= ; ++i)
if(mp.find(make_pair(x + i, y - )) != mp.end()) ++ret;
return ret;
}
bool check(int i)
{
int x = mir[i].first, y = mir[i].second;
if(down(x - , y + ) > && down(x, y + ) > && down(x + , y + ) > ) return true;
return false;
}
void update(int p)
{
int x = mir[p].first, y = mir[p].second;
for(int i = -; i <= ; ++i)
for(int j = -; j <= ; ++j)
{
if(mp.find(make_pair(x + i, y + j)) == mp.end()) continue;
if(!check(mp[make_pair(x + i, y + j)])) s.erase(mp[make_pair(x + i, y + j)]);
else s.insert(mp[make_pair(x + i, y + j)]);
}
} int main()
{
scanf("%d", &m);
for(int i = ; i < m; ++i)
{
scanf("%d%d", &x[i], &y[i]);
mir[i] = make_pair(x[i], y[i]);
s.insert(i);
mp[make_pair(x[i], y[i])] = i;
}
for(int z = ; !s.empty(); z ^= )
{
set<int> :: iterator it;
while(true)
{
if(z == ) it = --s.end();
else it = s.begin();
if(check(*it)) break;
s.erase(it);
}
mp.erase(mir[*it]);
update(*it);
ans = (ans * m + *it) % mod;
s.erase(it);
}
printf("%lld\n", ans);
return ;
}
520D的更多相关文章
- How Xtuner E3 works for BMW 520d Diagnosis and initialization of CBS service
Using Xtuner E3 to perform BMW 520d Diagnosis and initialization of CBS service in step by step proc ...
- utf-8 汉字对照表
之前从redis中取出一些数据,utf8 16进制编码,想转成字符,没有找到现成的转化工具,先用这个表直接查找对照吧. UTF8编码表大全Code code# Code (coded in UTF-8 ...
- TMS 例子63 分组,子node
procedure TForm1.InitGrid; begin advstringgrid1.Grouping.MergeHeader := true; //这个什么作用没有是 advstringg ...
- JS base64 加密和 后台 base64解密(防止中文乱码)
直接上代码 1,js(2个文件,网上找的) 不要觉的长,直接复制下来就OK //UnicodeAnsi.js文件 //把Unicode转成Ansi和把Ansi转换成Unicode function ...
- 基于nodejs实现js后端化处理
今天D哥给我提了个问题,"用php执行过js没"?咋一听,没戏~~毕竟常规情况下,js是依赖浏览器运行的.想在php后端采集的同时利用js运行结果并传递给php使用,没戏! 然后回 ...
- utf8汉字编码16进制对照
utf8汉字编码16进制对照 GB Unicode UTF-8 Chinese Character Code code# Code (coded in UT ...
- Html5模拟通讯录人员排序(sen.js)
// JavaScript Document var PY_Json_Str = ""; var PY_Str_1 = ""; var PY_Str_2 = & ...
- Base64 JAVA后台编码与JS前台解码(解决中文乱码问题)
中文通过Java后台进行Base64编码后传到前台,通过JS进行Base64解码时会出现中文乱码的问题,被这个问题也是困扰了几天,使用jquery.base64.js只能转码非中文字符,经过搜集各种方 ...
- 将table导出为excel格式文件
html: <table cellpadding="0" cellspacing="0" class="data_table" id= ...
随机推荐
- html5——语义标签
传统布局 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF- ...
- day09-文件的操作
目录 文件的基本操作 文件 什么是文件 如何使用文件 打开&关闭文件 打开&关闭文件 del f和f.close()的区别 文件路径 打开模式(不写默认是r) 编码格式 补充(open ...
- 【Redis】一、Redis简介及五种数据类型
(一)Redis简介 Redis(Remote Dictionary Server)是一个使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value的开源 ...
- pandas.DataFrame.quantile
pandas.DataFrame.quantile 用于返回数据中的 处于1/5 1/2(中位数)等数据
- enote笔记语言(5)——其他
章节:其他 ((主:单词)) 用来醒目地强调这个句子中哪个词语作主语 sentence: ...
- Django REST framework 内置访问频率控制
对匿名用户采用 IP 控制访问频率,对登录用户采用 用户名 控制访问频率. from rest_framework.throttling import SimpleRateThrottle class ...
- java堆排序实现
代码如下: public class HeapSort { public static void heapSort(DataWrap[] data) { System.out.println(&quo ...
- webstorm下ES6转ES5
ECMAScript 6是JavaScript语言的下一代标准,已经在2015年6月正式发布了.Mozilla公司将在这个标准的基础上,推出JavaScript 2.0. ES6的目标,是使得Java ...
- 一个电商项目的Web服务化改造2:现有项目的5个问题
最近一直在做一个电商项目,需要把原有单系统架构的项目,改造成基于服务的架构,SOA. 有点挑战,做完了,会有很大进步, 1.现有项目的问题 1.1代码风格不统一 不同的 ...
- wx微信小程序
俩三行时: ==========