码迷,mamicode.com
首页 > 其他好文 > 详细

洛谷八连测2017R5

时间:2017-10-28 16:39:17      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:include   blog   names   src   std   image   sort   难度   size   

传送门

题目描述

题目难度不一定按照题目顺序递增

在 n * mn?m 的网格上有一些点。在第 ii 行第 jj 列放置摄像头可以观察到所有满足 x = i, y \geq jx=i,yj 或x \geq i, y = jxi,y=j的点。求最少需要放多少个摄像头才能观察到所有给定的点,注意摄像头必须放在点上,且要保证任意一个摄像头均不能观察到另一个摄像头。保证输入中的点不会重复。

输入输出格式

输入格式:

 

第一行包含一个整数 TT,表示数据组数。每组数据的格式如下:

第一行包含三个正整数 n, m, qn,m,q,表示网格的大小和给定点的个数。

接下来 qq 行,每行两个整数 x_i, y_ixi?,yi? ,表示第 ii 个点的坐标。

 

输出格式:

 

对每组数据输出一行,表示最少放置摄像头的点数,如果无解输出-1。

输入输出样例

输入样例#1: 复制
1
2 4 4
1 1
2 1
2 3
2 4
输出样例#1: 复制
2
技术分享

贪心
 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<cmath>
 6 #include<map>
 7 #include<set>
 8 #include<queue>
 9 #include<vector>
10 #define INF 0x7f7f7f7f
11 #define pii pair<int,int>
12 #define ll long long
13 #define MAXN 100005
14 using namespace std;
15 
16 int read(){
17     int x=0,f=1;char ch=getchar();
18     while(ch<0||ch>9){if(-==ch)f=-1;ch=getchar();}
19     while(ch>=0&&ch<=9){x=x*10+ch-0;ch=getchar();}
20     return x*f;
21 }
22 int n;
23 pii a[MAXN];
24 int H[MAXN],L[MAXN];
25 void solve(){
26     memset(H,0,sizeof(H));
27     memset(L,0,sizeof(L));
28     int X=read(),Y=read();
29     n=read();
30     for(int i=1;i<=n;i++){
31         a[i]=make_pair(read(),read());
32     }    
33     sort(a+1,a+n+1);
34     int ans=0;
35     for(int i=1;i<=n;i++){
36         if(H[a[i].first]||L[a[i].second]){
37             continue;
38         }
39         ans++;
40         H[a[i].first]=1;
41         L[a[i].second]=1;
42     }
43     printf("%d\n",ans);
44 }
45 int main()
46 {
47 //    freopen("data.in","r",stdin);
48     int T=read();
49     while(T--){
50         solve();
51     }
52     return 0;
53 }

 

洛谷八连测2017R5

标签:include   blog   names   src   std   image   sort   难度   size   

原文地址:http://www.cnblogs.com/w-h-h/p/7747129.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!