4 条题解

  • 1
    @ 2025-10-31 20:37:34
    ```#include<bits/stdc++.h>
    using namespace std;
    int n,a[1001000],t,x,Ans;
    int main() {
    cin>>x>>n;
    for(int i=1;i<=n;i++){
    cin>>t;
    a[t]++;
    }
    Ans+=a[x];
    a[x]=0;
    for(int i=1;i<=x;i++){
    if(!a[i])continue;
    for(int j=x-i;j>=1;j--){
    if(i==j)continue;
    int t=min(a[i],a[j]);
    a[i]-=t;
    a[j]-=t;
    Ans+=t;
    if(!a[i])break;
    }
    }
    for(int i=1;i<=x;i++){
    if(a[i]==0)continue;
    else{
    if(i+i>x)Ans+=a[i];
    else Ans+=(a[i]-1)/2+1;
    }
    }
    cout<<Ans;
    return 0;
    }
    
    
    • 0
      @ 2022-7-11 10:56:16
      #include<bits/stdc++.h>
      using namespace std;
      int w,n,a[50000],s,j;
      int main(){
      	cin>>w>>n;
      	for(int i=1;i<=n;i++) cin>>a[i];
      	sort(a+1,a+n+1);//输入后按体重排序
      	j=n;//双指针,让最大的和最小的坐
      	for(int i=1;i<=j;i++){
      		while(a[i]+a[j]>w){//如果他俩坐不下
      			j--;//就找下一位
      			s++;//让大的单独坐船
      		}
      		j--;//坐下之后找下一位
      		s++;//他俩坐了一艘所以要加一
      	}
      	cout<<s;//输出
      }```
      • 0
        @ 2022-7-11 9:40:40
        #include<bits/stdc++.h>
        using namespace std;
        int x,n,w,p[201],num;
        int main()
        {
            cin>>w>>n;
            for(int i=1;i<=n;i++)
            {
                scanf("%d",&x);
                p[x]++;
            }
            for(int i=200;i>=5;i--)
            {
                while(p[i])
                {
                    num++;
                    p[i]--;
                    for(int j=w-i;j>=5;j--)
                    {
                        if(p[j])
                        {
                            p[j]--;
                            break;
                        }
                    }
                }
            }
            cout<<num<<endl;
            return 0;
        }```
        • -1
          @ 2025-7-1 15:40:10
          #include <bits/stdc++.h>
          using namespace std;
          int x,y,n,a[100005],w,s;
          int main(){
          cin>>w;
          cin>>n;
          for (int i=1;i<=n;i++){
          cin>>a[i];
          }
          sort(a+1,a+n+1);
          for(x=1,y=n;x<=y;){
          if(a[x]+a[y]<=w){
          x++;
          y--;
          s++;
          }
          else{
          y--;
          s++;
          }
          }
          cout<<s;
          return 0;
          }
          
          • 1

          信息

          ID
          98
          时间
          1000ms
          内存
          256MiB
          难度
          2
          标签
          (无)
          递交数
          85
          已通过
          54
          上传者