[NOIP 2010] 引入入城
2024-09-08 00:18:11
[题目链接]
[算法]
显然 , 每个第一行的成市控制的一定是一段区间
那么 , 问题就转化为了经典的区间覆盖问题 , 贪心即可 , 时间复杂度 : O(N^3)
[代码]
#include<bits/stdc++.h>
using namespace std;
#define MAXN 510
const int dx[] = {,,-,};
const int dy[] = {-,,,}; int n,m,len;
int a[MAXN][MAXN];
pair<int,int> range[MAXN];
bool mark[MAXN];
bool visited[MAXN][MAXN]; template <typename T> inline void read(T &x)
{
T f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
}
inline bool valid(int x,int y)
{
return x >= && x <= n && y >= && y <= m;
}
inline pair<int,int> bfs(int x,int y)
{
int l = , r = ;
queue< pair<int,int> > q;
memset(visited,false,sizeof(visited));
q.push(make_pair(x,y));
visited[x][y] = true;
while (!q.empty())
{
pair<int,int> cur = q.front();
q.pop();
for (int i = ; i < ; i++)
{
int x = cur.first + dx[i] , y = cur.second + dy[i];
if (valid(x,y) && a[x][y] < a[cur.first][cur.second] && !visited[x][y])
{
visited[x][y] = true;
q.push(make_pair(x,y));
}
}
}
for (int i = ; i <= m; i++)
{
if (visited[n][i])
{
mark[i] = true;
if (!l) l = r = i;
else r++;
}
}
return make_pair(l,r);
}
inline bool cmp(pair<int,int> a,pair<int,int> b)
{
if (a.first != b.first) return a.first < b.first;
else return a.second > b.second;
} int main()
{ read(n); read(m);
for (int i = ; i <= n; i++)
{
for (int j = ; j <= m; j++)
{
read(a[i][j]);
}
}
for (int i = ; i <= m; i++)
{
pair<int,int> tmp = bfs(,i);
if (tmp.first) range[++len] = tmp;
}
int cnt = ;
for (int i = ; i <= m; i++)
{
if (mark[i])
cnt++;
}
if (cnt < m)
{
printf("0\n");
printf("%d\n",m - cnt);
return ;
}
sort(range + ,range + len + ,cmp);
int r = range[].second , ans = , pos = ;
while (r < m)
{
int mx = r;
while (pos <= len && range[pos].first <= r + )
{
mx = max(mx,range[pos].second);
pos++;
}
r = mx;
ans++;
}
printf("1\n%d\n",ans); return ; }
最新文章
- jquery $.trim()去除字符串空格详解
- C# WinForm应用程序降低系统内存占用方法
- HDU3586 Information Disturbing(树形DP)
- 四个很好用的Sql Server 日期函数:DateDiff、DatePart、DateAdd、DateName
- Threading in C#
- PPTP模式跟L2TP模式有什么不同
- uestc 1722 吴神的表白
- HW6.1
- Apache下安装配置mod_pagespeed模块,轻松完成网站提速
- Xcode中的Info.plist字段列表详解
- CSS应用五
- hdu 2563 统计问题
- Boost 库Program Options--第二篇
- EtherChannel Cisco 端口聚合详解
- IIS 设置查询字符串长度
- IntelliJ IDEA LicenseServer激活及使用
- Python sqlalchemy orm 外键关联
- Python 正则表达式模块 (re) 简介
- liunx 随笔集
- orcle 远程连接其他数据库 进行查询数据
热门文章
- Buffer.from(str[, encoding])
- nginx配置文件+本地测试请求转发到远程服务器+集群
- Mac使用Aria2下载百度网盘,突破下载限速的方法教程
- Android BGABadgeView:BGABadgeFrameLayout(5)
- 安装eclipse插件,很慢终于找到了解决的方法
- Linux下汇编语言学习笔记13 ---
- The Java library for converting Wikipedia wikitext notation to HTML
- HDU4325 树状数组+离散化
- POJ1328 Radar Installation 解题报告
- springboot 关于第三方包 打包问题