洛谷 P1056 排座椅
来源:互联网 发布:ai是什么软件视频教程 编辑:程序博客网 时间:2024/04/27 16:46
- 题目
- 题解
- 代码
题目
上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳。同学们在教室中坐成了M行N列,坐在第i行第j列的同学的位置是(i,j),为了方便同学们进出,在教室中设置了K条横向的通道,L条纵向的通道。于是,聪明的小雪想到了一个办法,或许可以减少上课时学生交头接耳的问题:她打算重新摆放桌椅,改变同学们桌椅间通道的位置,因为如果一条通道隔开了两个会交头接耳的同学,那么他们就不会交头接耳了。
请你帮忙给小雪编写一个程序,给出最好的通道划分方案。在该方案下,上课时交头接耳的学生的对数最少。
题解
模拟,细心一点!
代码
var n,m,k,l,d,i,j,max,x,y,x1,y1:longint; a,b,s,t:array[0..1005]of longint; g,h:array[0..1005,0..1005]of longint;function min(a,b:longint):longint;begin if a<b then exit(a) else exit(b);end;begin readln(n,m,k,l,d); for i:=1 to d do begin readln(x,y,x1,y1); if x=x1 then inc(b[min(y,y1)]) else inc(a[min(x,x1)]); end; if m>n then n:=m; for i:=1 to n do begin if a[i]>0 then begin inc(g[a[i],0]); g[a[i],g[a[i],0]]:=i; end; if b[i]>0 then begin inc(h[b[i],0]); h[b[i],h[b[i],0]]:=i; end; end; x:=0;y:=0; for i:=n downto 1 do if ((x<k)or(y<l))and((g[i,0]>0)or(h[i,0]>0)) then begin if (g[i,0]>0)and(x<k) then begin for j:=1 to g[i,0] do if x<k then begin inc(x); s[g[i,j]]:=1; end; end; if (h[i,0]>0)and(y<l) then begin for j:=1 to h[i,0] do if y<l then begin inc(y); t[h[i,j]]:=1; end; end; end; for i:=1 to n do if s[i]>0 then begin write(i,' '); dec(k); if k=0 then break; end; writeln; for i:=1 to n do if t[i]>0 then begin write(i,' '); dec(l); if l=0 then break; end;end.
2 0
- 洛谷 P1056 排座椅
- 洛谷 P1056 排座椅
- 洛谷 P1056 排座椅
- P1056 排座椅
- P1056 排座椅 2008年JuniorT2
- 洛谷1056 排座椅
- 洛谷_P1056 排座椅
- 排座椅
- 排座椅
- 排座椅
- 排座椅
- 排座椅
- 排座椅 题解
- 【贪心】排座椅
- sicily1762 排座椅
- 排座椅【贪心】
- P1007 --- 排座椅
- TYVJ P1007 排座椅
- java学习第十七天之ArrayList,LinkList,HashSet,TreeSet
- CentOS7安装Hadoop2.7教程待实践。
- Javascript基础1
- Activity生命周期的全面分析
- 微信公众号H5开发笔记
- 洛谷 P1056 排座椅
- Guava工具类
- 关于Lucas定理的一种直观证明
- log4j滚动输出压缩格式的文件
- ui-dialog-titlebar-close 按钮存在 图标不显示
- OpnCV_(HoughCircles to find circles)霍夫变换检测圆形
- Android7.0中关于popupWindow的bug解决办法
- 一步一步学MySQL---- 5 表的修改
- Eigen: C++开源矩阵计算工具——Eigen的简单用法