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= ...
随机推荐
- servlet-有参数的init和无参的init方法
package gz.itcast.d_init; import javax.servlet.ServletConfig; import javax.servlet.ServletException; ...
- 常见Android安装启动失败问题
1.INSTALL_FAILED_VERSION_DOWNGRADE版本过低2.Failed to install Funm_AND.apk on device 'QWOJLVR8KNHYA6NR': ...
- Discuz! G变量的使用方法
1,G变量的使用方法: 例如:$_G['style'][boardlogo] 风格变量篇 $_G['style'] => Array (官方模板区 cr180整理 $_G['style'][st ...
- eclipse常用设置之自动格式化
Eclipse 保存文件时自动格式化代码 很多同学不知道Eclipse有个很有用的功能,就是自动格式源代码的功能,一般大家都是直接Ctrl+Shift+F手动格式化,多浪费时间. 其实Eclips ...
- react typescript 父组件调用子组件
//父组件import * as React from 'react'import { Input } from 'antd'const Search = Input.Searchimport &qu ...
- Quartz.NET 定时任务使用
class Program { static void Main(string[] args) { StartJob(); Console.ReadKey(); } static void Start ...
- 二叉堆 及 大根堆的python实现
Python 二叉堆(binary heap) 二叉堆是一种特殊的堆,二叉堆是完全二叉树或者是近似完全二叉树.二叉堆满足堆特性:父节点的键值总是保持固定的序关系于任何一个子节点的键值,且每个节点的左子 ...
- sudo dpkg-reconfigure phpmyadmin命令,重新配置一遍phpmyadmin
sudo dpkg-reconfigure phpmyadmin命令,重新配置一遍phpmyadmin
- generating multiple ordered files in python
Goal: To generate =35= files named 'capitalsquiz1.txt', 'capitalsquiz2.txt'...'capitalsquiz35.txt' * ...
- 远程连接工具putty与mtputty
PuTTY是一个Telnet.SSH.rlogin.纯TCP以及串行接口连接软件 官网 http://www.chiark.greenend.org.uk/~sgtatham/putty/ putty ...