zoukankan      html  css  js  c++  java
  • 测试3T2-贪心-零件加工

     

    题目描述

    工匠小K最近有n个零件需要加工。每个零件都需要ti天的时间来完成,每个零件每延迟一天加工都要缴纳一定的罚金si。延迟的天数为从今天算起到该工作开始的那天,第一个零件加工没有罚金。现在小K想知道怎样安排加工顺序可以使他要交的罚金最少,最少是多少。

    这个数可能会很大,请输出这个数对m取模后的结果。

    输入

    输入文件名为process.in

    输入第一行为一个整数n,表示需要加工的零件总数。

    第二行为一个整数m,表示答案要对m取模。

    第3~n+2行,每行两个整数tisi

    输出

    输出文件名为process.out

    输出仅一行,一个整数,表示小K最少要缴纳的罚金对m取模的结果。

    样例输入

    process.in 2 100 2 33 33 2 process.out 4 process.in 4 100 3 3 6 4 2 2 8 5 process.out 81
     
    这道题第一眼就不会做,于是状压(n<=10)目测爆0
    其实这题很水
    在模拟第二个样例的时候就能发现先取2,2和先取 3,3 是一样的
    我们假设前几个物品花费时间T,
    有两个物品时间和罚金分别为t1,t2;s1,s2;
    这两个物品的选取顺序和前后面的选取都没有关系
     
    先取第一个为T*s1+(T+t1)*s2=T(s1+s2)+t1*s2
    第二个T*s2+(T+t2)*s1=T(s1+s2)+t2*s1
     
    只要判断t1*s2和t2*s1的大小即可
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #define ll long long
    
    using namespace std;
    const ll N=500005;
    struct note{
        ll t,s;
        friend bool operator < (note a,note b)
        {
            return a.s*b.t>a.t*b.s;//sort不能用>=
        }
    }poll[N];
    ll Time=0,ans=0;
    ll n,mod;
    ll chen(ll a,ll b,ll pp)
    {
        ll  tot=a,ans=0;
         while(b)
         {
             if(b&1)
             ans+=tot%pp;
             b>>=1;
             tot*=2;
             tot%=pp;
             ans%=pp;
             
         }
         return (ll) ans%pp;
    }
    int main()
    {
        scanf("%lld",&n);
        scanf("%lld",&mod);
        for(ll i=1;i<=n;i++)
        scanf("%lld %lld",&poll[i].t,&poll[i].s);
    
        sort(poll+1,poll+1+n);
        for(ll i=1;i<=n;i++)
        {
            ans+=chen(Time,poll[i].s,mod);
            ans%=mod;
            Time+=poll[i].t;
            
        }
        cout<<ans%mod<<endl;
    } 
  • 相关阅读:
    phpcms调用指定文章内容模型的ID
    phpcms V9的各种功能总结
    如何使用ajax与php实现简单的流程管理
    键盘按键和键盘对应代码表
    ajax实现省、市、区、三级联动(例题)
    用ajax做登录与删除
    var_dump、echo、print_r 的区别
    字符串删除重复字符
    树的非递归遍历
    字符串操作_(不使用库函数)
  • 原文地址:https://www.cnblogs.com/dancer16/p/7000932.html
Copyright © 2011-2022 走看看