1. 题目
2. 题解
搞两个链表存两个人马的速度
输入完了以后排序
然后对链表 1 进行 n 次滚动 (即把链表 1 的首部元素接到链表 1 末尾),每次移动以后判断当前答案。
最后取答案最大值。
ans 的初始值一开始我设置为 INT_MIN,这样在 luogu 上能 ac,但在 codevs 上会 wa 两个点。
看了下数据,可能是标程的问题吧(不清楚),把 ans 的初始值设置为 0 就能过了(可能标程里 ans 初始值就是 0)。
代码:
#include <bits/stdc++.h>
using namespace std;
int n,ans;
list<int> l1,l2;
void update()
{
int k=0;
for(list<int>::iterator i1=l1.begin(),i2=l2.begin();i1!=l1.end();i1++,i2++)
if(*i1>*i2)k++;else if(*i1<*i2)k--;
ans=max(ans,k);
}
int main()
{
scanf("%d",&n);
for(int i=1,a;i<=n;i++)scanf("%d",&a),l1.push_back(a);
for(int i=1,a;i<=n;i++)scanf("%d",&a),l2.push_back(a);
l1.sort(),l2.sort();
for(int i=1;i<=n;i++)l1.push_back(*l1.begin()),l1.pop_front(),update();
printf("%d\n",ans*200);
return 0;
}
0 条评论