3 条题解

  • 1

    神似 P1094 [NOIP 2007 普及组] 纪念品分组 - 洛谷

    很经典的贪心,我们在读入物品的价格之后,对物品的价格进行排序。

    然后从价格最小的物品开始枚举,从价值最大的物品反向查看能否与这个物品分为一组。

    #include<bits/stdc++.h>
    using namespace std;
    int a[30010];
    int ans;
    int main(){
        int w,n;
        cin>>n>>w;
        for(int i=0;i<n;i++){
        	cin>>a[i];
        }
        sort(a,a+n);
    	int l=0,r=n-1;
    	while(l<=r){
    		if(a[l]+a[r]<=w){
    //如果最大的和最小的可以放成一堆
    			ans++;
    			l++;
    			r--;
    		}else if(a[r]<=w){
    			ans++;
    			r--;
    		}else{
    			if(a[r]>w)	r--;
    			if(a[l]>w)	l++;
    		}
    	}
    	cout<<ans;
    	return 0;
    }
    
    • 0
      @ 2024-12-22 13:24:55

      @OIER大牛小艾,既然你这么喜欢玩石头,那来vanvan姐姐的大要石如何!呱!我要震碎你的后槽牙口牙!no也没用

      #include<bits/stdc++.h>
       using namespace std; 
      int a[1010];
       int main() 
      {
       int m,w,s=0; 
      cin>>m>>w; 
      for(int i=1;i<=m;i++) 
           cin>>a[i];
       sort(a,a+m+1);//sort这里面的是地址,这样写会排序两个地址之间的所有数据
       int \*p,\*l;//用了指针
       p=&a[1];l=&a[m]; 
      for(;l>=p;l--)
      { 
      if(\*l<=w) 
       {  
      s++;
       if(\*p+\*l<=w)//和最小的相加小于w的堆一起,不能的只能单独算一堆
          { 
          p++; 
           }
         } 
      } 
      cout<<s; return 0; }
      
      • 0

        诏曰

        #include<bits/stdc++.h>
        using namespace std;
        int main(){
        	int n,w,i,ans=0;
        	cin>>n>>w;
        	int a[n]={};
        	for(i=0;i<n;i++)
        	cin>>a[i];
        	sort(a,a+n);//从小到大排序
        	for(i=0;i<n;i++){
        		if(a[i]<=w) ans++;
        		else break;
        	}//排完序列中可单个出来的石子
        	int left=0,right=n-1;
        	while(right>left){//要学会想象,自然而明
        		if(a[left]+a[right]<=w){
        			ans--;
        		    left++;
        		    right--;
        		}
        		else right--;
        		if(a[left]>=w) break;
        	}
        	cout<<ans;
            return 0;
        }
        
        • 1

        信息

        ID
        800
        时间
        1000ms
        内存
        256MiB
        难度
        9
        标签
        (无)
        递交数
        86
        已通过
        4
        上传者