• POJ 3253


    /*
    有一个农夫要把一个木板钜成几块给定长度的小木板,每次锯都要收取一定费用,这个费用就是当前锯的这个木版的长度
    给定各个要求的小木板的长度,及小木板的个数n,求最小费用
    3
    8 8 5为例:
    长度为 21 的木板,截成13和8花费 21
    再从长度为13的木板上锯下长度为5的木板,花费13
     共21+13 =34
    */
    #include <iostream>
    #include <queue>
    #include <vector>
    using namespace std;
    int main()
    {
        int i,j,k,T;
        __int64 num,sum=0;
        while(cin>>T)
        {
            sum = 0;
            //因为运算结果可能超过int,所以虽然输入不超过int,也必须定义为__int64 
            priority_queue <__int64, vector<__int64> ,greater<__int64> > q;//两个双尖括号中间必须有空格 
            while(T--)
            {
                cin>>num;
                q.push(num);
            }
           // cout<<q.size()<<endl<<endl<<endl;
            while(q.size()>1)
            {
                __int64 a = q.top();
                q.pop();
                __int64 b = q.top();
                q.pop();
                q.push(a+b);
                sum+=a+b;
            }
            q.pop();
            cout<<sum<<endl;
        }
        return 0;
    }
      
      
      
    #include <iostream>
    #include <algorithm>
    using namespace std; 
    const int MAX = 20001; 
    int n; 
    int blanks[MAX]; 
    __int64 sum; 
    int main() 
    {
        int i,j; 
        while(cin>>n) 
        { 
        	sum = 0; 
        	for(i = 0; i < n; i++) 
            { 
        		cin>>blanks[i]; 
        	} 
        	sort(blanks,blanks + n); 
        	for(i = 1; i < n; i++) 
            { 
        		blanks[i] += blanks[i-1]; 
        		sum += blanks[i]; 
        		for(j = i; j < n-1; j++) 
                {//不必每次排序,逐个比较插入新的数据 
            		if(blanks[j] > blanks[j + 1]) 
            		  swap(blanks[j],blanks[j+1]); 
                }
            }
        	cout<<sum<<endl; 
        } 
        return 0;
    }
    
    
    
    
    
    
    //wa,理解错了题意,不存在无限长的木板, 
    #include <iostream>
    #include <cstdlib>
    #include <algorithm>
    using namespace std;
    __int64 ch[20005];
    int cmp(const void *a,const void *b)
    {
        return *(__int64 *)a-*(__int64 *)b;
    }
    int main()
    {
        int i,j,k,T;
        __int64 num,sum;
        while(cin>>T)
        {
            memset(ch,0,sizeof(ch));
            sum=0;
            i=0;
            while(T--)
            {
                cin>>num;
                sum += num;
                ch[i++]=num;
            }
         //   cout<<sum<<endl;
            qsort(ch,i,sizeof(__int64),cmp);
           // for(k=0;k<i;k++)
            //    cout<<ch[k]<<endl;
            for(j=0;j<i-1;j++)
                sum+=ch[j];
            cout<<sum<<endl;
        }
        return 0;
    }
      
    
  • 相关阅读:
    Flask基础(10)-->http的无状态协议解决办法一(客户端cookie)
    Flask基础(09)-->请求勾子函数
    Flask基础(08)-->错误捕获(异常捕获)
    Flask基础(07)-->正则自定义转换器
    Flask基础(06)-->视图常用逻辑
    zabbix报警-邮件-钉钉
    Flask实战第68天:项目上线部署
    查看Linux系统资源占用
    Flask实战第67天:Flask+Celery实现邮件和短信异步发送
    Flask实战第66天:celery实现异步任务
  • 原文地址:https://www.cnblogs.com/hxsyl/p/2628520.html
Copyright © 2020-2023  润新知