2017冬季24集训模拟-4.排座椅

————————————————————题解

统计这一列或行放通道能隔开几个人,然后贪心

输出没有排序QWQ

 1 #include <iostream>
 2 #include <queue>
 3 #include <set>
 4 #include <cstdio>
 5 #include <cstring>
 6 #include <vector>
 7 #include <algorithm>
 8 #define siji(i,x,y) for(int i=x;i<=y;++i)
 9 #define gongzi(j,x,y) for(int j=x;j>=y;--j)
10 #define xiaosiji(i,x,y) for(int i=x;i<y;++i)
11 #define sigongzi(j,x,y) for(int j=x;j>y;--j)
12 #define ivorysi
13 #define inf 0x3f3f3f3f
14 #define mo 97797977
15 #define ha 974711
16 #define ba 47
17 #define fi first
18 #define se second
19 #define pii pair<int,int>
20 typedef long long ll;
21 using namespace std;
22 int m,n,l,k,d;
23 pii stu[2005][2];
24 int row[1005],col[1005],id[1005];
25 vector<int> v;
26 void init() {
27     scanf("%d%d%d%d%d",&m,&n,&k,&l,&d);
28     siji(i,1,d) {
29         scanf("%d%d",&stu[i][0].fi,&stu[i][0].se);
30         scanf("%d%d",&stu[i][1].fi,&stu[i][1].se);
31         if(stu[i][1]<stu[i][0]) swap(stu[i][1],stu[i][0]);
32     }
33 }
34 bool cmp1(const int &a,const int &b) {
35     return row[a]>row[b] || (row[a]==row[b] && a<b);
36 }
37 bool cmp2(const int &a,const int &b) {
38     return col[a]>col[b] || (col[a]==col[b] && a<b);
39 }
40 void solve() {
41     init();
42     siji(i,1,d) {
43         //int t;
44         if(stu[i][1].fi==stu[i][0].fi) {
45             col[stu[i][0].se]+=2;
46         }
47         else if(stu[i][1].se==stu[i][0].se) {
48             row[stu[i][0].fi]+=2;
49         }
50     }
51     siji(i,1,m) id[i]=i;
52     sort(id+1,id+m+1,cmp1);
53     siji(i,1,k) {
54         v.push_back(id[i]);
55     }
56     sort(v.begin(),v.end());
57     xiaosiji(i,0,k) {
58         printf("%d%c",v[i]," \n"[i==k-1]);
59     }
60     siji(i,1,n) id[i]=i;
61     sort(id+1,id+n+1,cmp2);
62     v.clear();
63     siji(i,1,l) {
64         v.push_back(id[i]);
65     }
66     sort(v.begin(),v.end());
67     xiaosiji(i,0,l) {
68         printf("%d%c",v[i]," \n"[i==l-1]);
69     }
70 }
71 int main(int argc, char const *argv[])
72 {
73 #ifdef ivorysi
74     freopen("seat.in","r",stdin);
75     freopen("seat.ans","w",stdout);
76 #else
77     freopen("f1.in","r",stdin);
78 #endif
79     solve();
80     return 0;
81 }
时间: 2024-12-24 17:44:20

2017冬季24集训模拟-4.排座椅的相关文章

2017冬季24集训模拟-3.耀西岛

--------------------------题解 路径的长度是1-200000 然后路径的条数有n*(n+1)/2 根据鸽巢原理n*(n+1)/2 > 200000就一定是YES 所以复杂度只有n^2 1 #include <iostream> 2 #include <queue> 3 #include <set> 4 #include <cstdio> 5 #include <cstring> 6 #include <vec

2017冬季24集训模拟-1.寻找幽灵

--------------------------------------------题解 把最短路处理出来然后做背包 没有把head数组和all初始化qwq 1 #include <iostream> 2 #include <queue> 3 #include <set> 4 #include <cstdio> 5 #include <cstring> 6 #include <vector> 7 #include <algo

2017.9.24 noip模拟赛 day2—组合数

简化版题意: 给定n,m(n<=m),求C(n,m)的末尾有几个0 输入格式: 第一行一个整数t,代表数据组数. 接下来t行,每行两个整数n,m 输出格式: t行,每行一个整数,代表C(n,m)的末尾0的个数. 样例输入: 310 111 720 4 样例输出: 110 数据范围: 1<=m<=n<=1000000,t<=1000 首先这道题需要知道一个公式:C(n,m)=n!/(n-m)!*m! 然后10=2*5,也就是说,对于一个数,我们将其因数分解,2和5中较少的数的个

P1056 排座椅【洛谷】

//题目----------------------------------------------------------------------------------------- 传送门: http://www.luogu.org/problem/show?pid=1056 P1056 排座椅 题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳.

P1056 排座椅

P1056 排座椅 题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳.同学们在教室中坐成了M行N列,坐在第i行第j列的同学的位置是(i,j),为了方便同学们进出,在教室中设置了K条横向的通道,L条纵向的通道.于是,聪明的小雪想到了一个办法,或许可以减少上课时学生交头接耳的问题:她打算重新摆放桌椅,改变同学们桌椅间通道的位置,因为如果一条通道隔开了两个会

noip200802排座椅

排座椅 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳.同学们在教室中坐成了M行N列,坐在第i行第j列的同学的位置是(i,j),为了方便同学们进出,在教室中设置了K条横向的通道,L条纵向的通道.于是,聪明的小雪想到了一个办法,或许可以减少上课时

洛谷1056 排座椅 解题报告

洛谷1056 排座椅 本题地址:http://www.luogu.org/problem/show?pid=1056 题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳.同学们在教室中坐成了M行N列,坐在第i行第j列的同学的位置是(i,j),为了方便同学们进出,在教室中设置了K条横向的通道,L条纵向的通道.于是,聪明的小雪想到了一个办法,或许可以减少上课

2017.12.24(查找最接近元素等)

2017.12.24  贪心,分治综合习题(2) 1.查找最接近元素 思路:由题可知,n<=100000,m<=10000,如果每一个m都把这个非降序序列扫一遍的话,那么时间复杂的将要到达1010那么多,明显不合题意:所以,只能用二分查找来优化时间复杂度. 核心代码: int left=1,right=n,mid,bz=0; while(left<right-1){ bz=0; mid=(left+right)/2; if(k==num[mid]){ printf("%d\n&

解题报告——2018级2016第二学期第五周作业排座椅

解题报告--2018级2016第二学期第五周作业 F:排座椅 描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来 之后,只有有限的D对同学上课时会交头接耳.同学们在教室中坐成了M行N列,坐在第i行第j列的同学的位置是(i,j),为了方便同学们进出,在教室中设 置了K条横向的通道,L条纵向的通道.于是,聪明的小雪想到了一个办法,或许可以减少上课时学生交头接耳的问题:她打算重新摆放桌椅,改变同学们桌椅