neuqacm第二周周报

第二周周赛很光荣的0封了,说明进步空间很大,以下是本周题目题解

派队接水

思路:定义结构体后排序,然后枚举

#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;
struct ren 
{
    int xuhao;
    int shijian;
};
bool cmp (ren a,ren b)
{
    return a.shijian<b.shijian;
}
ren a[1005];
int main ()
{
    int n;
    cin>>n;
    for (int i=1;i<=n;i++)
    {
        cin>>a[i].shijian;
        a[i].xuhao=i;
    }
    sort (a,a+n+1,cmp);
    int N=n;
    int b[1005];
    double sum=0;
    for (int i=1;i<=n;i++)
    {
            N--;
        b[i]=a[i].xuhao;
        sum=sum+a[i].shijian*N;
        cout<<b[i]<<" ";
    }
    cout<<endl;
    cout<<fixed<<setprecision(2)<<sum/n;
    return 0;
}

线段覆盖

思路:同定义结构体后排序,贪心枚举

#include <iostream>
#include <algorithm>
using namespace std;
struct bisai
{
    int a;
    int b;
};
bool cmp(bisai a,bisai b)
{
    return a.b<b.b;
}
    bisai s[1000000];
int main ()
{
    int n;
    cin>>n;

    for (int i=0;i<n;i++)
    {
        cin>>s[i].a>>s[i].b;
    }
    sort (s,s+n,cmp);
    int l,r;
    l=0;
    r=0;
    int ans=0;
    for (int i=0;i<=n;i++)
    {
        if(s[i].a>=r)
        {
            l=s[i].a;
            r=s[i].b;
            ans++;
        }
    }
    cout<<ans;
    return 0;
}

均分纸牌

思路:查看题解获得了平均数的思路

#include <iostream>
using namespace std;
int main ()
{
    int n;
    cin>>n;
    int a[100];
    int sum=0;
    for (int i=0;i<n;i++)
    {
        cin>>a[i];
        sum+=a[i];
    }
    int are;
    are=sum/n;
    for (int i=0;i<n;i++)
    {
        a[i]-=are;
    }
    int ans=0;
    for (int i=0;i<n;i++)
    {
        if (a[i]!=0)
        {
            a[i+1]+=a[i];
            a[i]=0;
            ans++;
        }
    }
    cout<<ans;
    return 0;
}

独木桥

思路:贪心,最大最小分别定义函数

#include<bits/stdc++.h>
using namespace std;
int n,m,minx,maxx;
int max(const int &a,const int &b){
    return a>b?a:b;
}
int min(const int &a,const int &b){
    return a<b?a:b;
}
int main(){
    scanf("%d%d",&n,&m);
    int x;
    maxx=0;
    minx=0;
    for(int i=1;i<=m;i++){
        scanf("%d",&x);
        maxx=max(maxx,max(x,n-x+1));
        minx=max(minx,min(x,n-x+1));
    }
    cout<<minx<<" "<<maxx;
    return 0;
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值