Codeforces Round #311

昨天晚上的Codeforces 写的有点逗,无状态呀~

A题:

题意:满足三个条件的等级数量分配,尽量让一级的最多,二等其次,输出答案 。

暴力

const int maxn=1000+5;
using namespace std;
int main()
{
    int n;
    while(cin>>n)
    {
        int a,b,c;
        int aa,bb,cc;
        cin>>a>>aa>>b>>bb>>c>>cc;
        for(int i=aa;i>=a;i--)
        {
            int yu=n-i;
            if(yu<(b+c))continue;
            for(int j=bb;j>=b;j--)
            {
                int d=yu-j;
                if(d>=c&&d<=cc)
                {
                    cout<<i<<" "<<j<<" "<<d<<endl;
                    return 0;
                }
            }
        }

        }
    return 0;
}

B题:

题意:给n个男生和给n个女生倒水,给你2*N个杯子的容量,倒水的总量不超过W,求最多倒水。

解法:二分判断
判断是否总量小于w,并且杯子容量够用,当然排序后,只需要判断w[0]是否满足女生,w[n]是否满足男生就可以了。
我的写法要控制二分的次数,否则会T掉

const int maxn=200000+5;
using namespace std;
const double eps=1e-12;
double a[maxn];
int n;
double w;
int getbool(double x)
{
    if(3*n*x>w)return false;
    if(a[0]<x)return false;
    if(a[n]<2*x)return false;
    return true;
}
int main()
{
    while(cin>>n>>w)
    {
        for(int i=0;i<2*n;i++)
        {
            scanf("%lf",&a[i]);
        }
        sort(a,a+2*n);
        double  ans=0;
        int num=0;
        double l=0;double r=w*3.0;
        while(r-l>=eps)
        {
            num++;if(num>10000000)break;
            double mid=(r+l)/2.0;
            if(getbool(mid))
            {
                l=mid;
                ans=mid;
            }
            else r=mid;
        }
        ans=ans*3.0*(double)n;
        printf("%.8lf\n",ans);
    }
    return 0;
}

C题:

题意:砍掉一些桌子腿,是桌子稳固,稳固的条件,1:最长的腿数量最多 2:最长的腿数量占一半以上

解法:贪心
答案肯定是某种长度的腿全部留下,个数为len个,还可以保留len-1个长度比选择的腿短的,贪心选择花费最大的就好了。题中给出的花费<=200,所以暴力200进行选择就好了。

#define ll long long
const int maxn=100000+5;
using namespace std;
int n;
struct node
{
    int l,d;
}a[maxn];
int b;
bool cmp(node a,node b)
{
    return a.l<b.l;
}
int main()
{
    while(cin>>n)
    {
        b=0;
        for(int i=0;i<n;i++)
        {
            scanf("%d",&a[i].l);
        }
        for(int i=0;i<n;i++)
        {
            scanf("%d",&a[i].d);
            b+=a[i].d;
        }
        sort(a,a+n,cmp);
        int ans=0x5fffffff;
        int num[250];
        memset(num,0,sizeof(num));
        for(int i=0;i<n;i++)
        {
            int len=0;
            int sum=0;
            for(;i<n;i++)
            {
                sum+=a[i].d;len++;
                if((i+1)<n){
                    if(a[i].l!=a[i+1].l)break;
                }
                else break;
            }
            int t=len-1;
            for(int j=200;j>=1;j--)
            {
                if(t<=num[j]){
                  sum+=(t*j);
                  break;
                }
                else{
                    t-=num[j];
                    sum+=(num[j]*j);
                }
            }
                for(int j=0;j<len;j++)
            {
                num[a[i-j].d]++;
            }
            ans=min(ans,b-sum);
        }
        cout<<ans<<endl;
    }
    return 0;
}
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、 1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READmE.文件(md如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值