水两道题

战争尾声

https://ac.nowcoder.com/acm/contest/11038/A

A 没啥好说的,暴力枚举,有手就行
200*200个点 才40000完全可以暴力枚举。关于选点的问题,题目没说要选整数点,确实是疏忽了。
#include <bits/stdc++.h>
using namespace std;
int x[210], y[210];
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
cin >> x[i] >> y[i];
bool flag = 1;
for (int i = 1; i <= 200; i++)
{
for (int j = 1; j <= 200; j++)
{
bool fl = 1;
double maxx=0, minn=500;
for (int k = 0; k < n; k++)
{
double a = sqrt((x[k] - i) * (x[k] - i) + (y[k] - j) * (y[k] - j));
if (a > maxx)
maxx = a;
if (a < minn)
minn = a;
if (maxx - minn >= 0.0001)
{
fl = 0;
break;
}
}
if (fl)
{
flag = 0;
cout << i << " " << j << endl;
exit(0);
break;
}
}
}
if (flag)
cout << "War is cruel.";
return 0;
}
B
这道题其实我挺尴尬的,群里有人说这道题排个序就可以了,然后我说了声谢谢,然后有个人跑过来问我思路,我给他说了,然后几分钟过去了,他说他a过去了,谢谢老哥,然而我还没过QAQ。
有一点贪心的味道。开个结构体存每个国家的实力值和序号,sort降序排一下,从前往后扫,出现前一个的序号大于后一个趟数加一。 也有人用下标数组,也是一样的思路,不过有点伤脑筋,还是结构体简单,就这样吧
#include <bits/stdc++.h>
using namespace std;
struct node
{
int e, order;
} r[800010];
bool cmp(node x,node y)
{
return y.e<x.e;
}
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> r[i].e;
r[i].order=i;
}
sort(r,r+n,cmp);
int sum=1;
int ord=0;
for (int i=0;i<n;i++)
{
if(i>0) ord=i-1;
if(r[ord].order>r[i].order)
sum++;
}
cout<<sum<<endl;
return 0;
}
c
雨巨没讲,雨巨全责(#滑稽
d
雨巨刚讲,下午课我没听,我有罪

全部评论

相关推荐

2 收藏 评论
分享
牛客网
牛客企业服务