题意:T个案例,每个案例包括一个N代表要移的桌子数,包括两个正整数s,t房间。有一句话,
分析:用到了贪心的思想。主要要找出经过次数最多的走廊的次数就可以了,遍历所有的走廊次数,排序输出最大值即可。
此题一开始提交WA了好多次,结果错在swap函数上,因为比较的两个数组中的数据,所以传进去的不应该是int,而应该是int引用,不过也是比较多余的做法,因为STL中本身就有swap这个函数,直接调用即可。
贴下AC代码:(252k,0ms)
#include<iostream>
#include <algorithm>
using namespace std;
int main()
{
int
text
, n
, s
[
200
]
,
t
[
200
];
int
corridor
[
200
];
int
temp;
cin
>>
text;
while(
text
--)
{
cin
>>n;
memset(
corridor
,
0
,
sizeof(
corridor));
//int corridor[200]={0}; //两种都可以。
for(
int
i
=
0;
i
< n ;
i
++)
{
cin
>>s
[
i
]
>>
t
[
i
];
if(s
[
i
]
>
t
[
i
])
{
temp
= s
[
i
]; s
[
i
]
=
t
[
i
];
t
[
i
]
=
temp
;}
}
for(
int
j
=
1;
j
<=
200 ;
j
++)
for(
int
i
=
0 ;
i
< n ;
i
++)
if (
(
j
<= (
t
[
i
]
+
1)
/
2)
&& ( (
j
>=(s
[
i
]
+
1)
/
2) ) )
corridor
[
j
-
1
]
++;
//只要j在区域范围内,就加1,把走廊当做区间
sort(
corridor
,
corridor
+
200);
cout
<<
corridor
[
199
]
*
10
<<
endl;
}
return
0;
}
#include <algorithm>
using namespace std;
int main()
{
}
总结:
首先,掌握了2个函数
1.swap函数,顾名思义,交换数据
2.sort函数,排序函数,例:a[100],sort(a,a+100)需要加头文件#include<algorithm>
其次,知道了数组的全部初值为零的方法。
int a[200]={0}是初始化,memset(a,0,sizeof(a));将a数组的所有数据都设置为零。
最后,引起了自己对于sort() (由小到大),还有qsort()的关注,还有STL(标准模板库)
的关注。