我是靠谱客的博主 时尚酸奶,最近开发中收集的这篇文章主要介绍牛客寒假算法基础集训营2 A:处女座的签到题(排序)+C:处女座的砝码(思维)+J:处女座的期末复习(贪心),觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
【题A】
处女座的签到题
【题解】
由于题目条件,x,y坐标的绝对值均在1e9以下,面积可能会到达1e18,所以无法用double储存。三角形的面积等于相邻两边叉积的一半,所以三角形面积的两倍一定是整数,我们可以用long long来储存,最后特判输出”.00”或”.50”。
对于找第k大,时间复杂度为O(n),可以利用nth_element。
nth_element()函数(取容器中的第n大值)
头文件:#include<algorithm>
作用:nth_element作用为求第n大的元素,并把它放在第n位置上,下标是从0开始计数的,也就是说求第0小的元素就是最小的数。
注意:nth_element()函数不过将第n大的数排好了位置,并不返回值。
【代码】
#include <bits/stdc++.h>
using namespace std;
#define ll long long
struct p{
ll x,y;
}f[85];
int main()
{
int t; scanf("%d",&t);
while(t--)
{
int n,k; scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++) scanf("%lld%lld",&f[i].x,&f[i].y);
vector <ll> v;
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
for(int k=j+1;k<=n;k++)
{
ll area=abs((f[j].x-f[i].x)*(f[k].y-f[i].y)-(f[k].x-f[i].x)*(f[j].y-f[i].y));
v.push_back(area);
}
nth_element(v.begin(),v.begin()+v.size()-k,v.end());
ll ans=v[v.size()-k];
if (ans%2==0) printf("%lld.00n",ans/2);
else printf("%lld.50n",ans/2);
}
return 0;
}
【题C】
处女座的砝码
【题解】
对于每个砝码,可以选择放左边、不放、放右边三种情况,所以可以按三进制进行排列即可。
选择砝码如下:1,3,9,27,…选m个数最多能称出的重量为: 注意高精度。
【代码】
import java.math.BigDecimal;
import java.util.Scanner;
import java.math.BigInteger;
public class Main {
public static void main(String args[])
{
Scanner scan = new Scanner(System.in);
BigInteger a;
BigInteger b = new BigInteger("1");
BigInteger c=new BigInteger("3");
BigInteger ad=new BigInteger("1");
a = scan.nextBigInteger();
int cnt=1;
while(a.compareTo(b)>0)
{
cnt++;
b=b.multiply(c);
b=b.add(ad);
}
System.out.println(cnt);
return;
}
}
【题J】
处女座的期末复习
【题解】
优先复习先考的科目,如果复习完超过考试时间就复习不完输出NO,否则加上考试的两小时。简单贪心。
【代码】
typedef long long int ll;
const int maxn=1e5+5;
struct p{
ll a,b;
}f[maxn];
bool cmp(p x,p y)
{
return x.b<y.b;
}
int main()
{
int n,i; scanf("%d",&n);
for(i=1;i<=n;i++) scanf("%lld",&f[i].a);
for(i=1;i<=n;i++) scanf("%lld",&f[i].b);
sort(f+1,f+n+1,cmp);
int s=1; ll sum=0;
for(int i=1;i<=n;i++)
{
sum+=f[i].a;
if(sum<=f[i].b) sum+=2;
else
{
s=0;break;
}
}
if(s) puts("YES");
else puts("NO");
return 0;
}
最后
以上就是时尚酸奶为你收集整理的牛客寒假算法基础集训营2 A:处女座的签到题(排序)+C:处女座的砝码(思维)+J:处女座的期末复习(贪心)的全部内容,希望文章能够帮你解决牛客寒假算法基础集训营2 A:处女座的签到题(排序)+C:处女座的砝码(思维)+J:处女座的期末复习(贪心)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复