山东省第八届ACM省赛G和J

来源:互联网 发布:php抽象类和接口的作用 编辑:程序博客网 时间:2024/06/08 06:37

G
J
G是一个快速幂。
J题意是物品的卖出的价格要考虑卖出的时间,就是乘以第几天卖出的。要考虑最大值,存在前几天卖出负价值使以后的价值更高的可能,所以就排序一下,然后开始便利,知道全拿正价值的结束(不然会超时)。
注意数据有点大,要用longlong(血的教训)
J题代码。G不贴了

#include<cstdio>#include<algorithm>#include<cstring>#include<vector>using namespace std;int b;vector<int>q;int main(){    int n;    while(~scanf("%d",&n))    {        for(int i=0;i<n;i++)        {            int a;            scanf("%d",&a);            q.push_back(a);        }        for(int i=0;i<n;i++)        {            scanf("%d",&b);            b--;            while(b)            {                b--;                q.push_back(q[i]);            }        }        sort(q.begin(),q.end());        long long int ans=0;        int flag=0;        for(int i=0;i<q.size();i++)        {            long long int sum=0,temp=1;            for(int j=i;j<q.size();j++)            {                sum+=q[j]*temp;                temp++;            }            if(i-1>=0&&q[i-1]>=0)                flag=1;            if(flag)            {                break;            }            if(sum>ans)                ans=sum;        }        printf("%lld\n",ans);    }}