Codeforces Ilya and Matrix

CodeForces 313C 贪心构造题解析
本文解析了一个CodeForces上的贪心构造性问题,题目要求利用给定的4^n个数构造一个2^n*2^n的矩阵,使得该矩阵的beauty值最大。通过分析beauty值的计算方式,得出较大元素贡献次数多的策略,最终实现beauty值的最大化。

http://codeforces.com/contest/313/problem/C

贪心,构造性问题

题意:一开始看错了以为是一个直接递归就能解决的问题,后来才发现,是要构造一个矩阵。给了4^n个数字,然后让你利用这些数字构造出一个2^n*2^n的方阵,并且令到这个方阵的beauty值最大。

一个方阵的beauty值是这样定义的,这个方阵如果只有一个元素,那么它的beauty值就是这个元素,当然这个方阵里面的最大元素也是它。如果这个方阵不止一个元素,这个方阵一定能分割为4个等大的小方阵(因为保证是2^n*2^n的。一定可分割),大方阵的beauty值等于4个小方阵的beauty值相加,再加上大方针中最大元素。你的目的是要构造一个方阵,让它的beauty值最大

bea值的计算递归即可,但是细想一下bea值的计算过程就能得到构造的策略

会发现,方阵中的每个元素都会最后的beauty值做出贡献,但是不同元素做出的贡献不同

好像1个2*2的方阵,3个元素对方阵的bea值贡献了1次,而最大值元素则贡献了2次。如果方阵规模再大点,会发现一些元素贡献了4次,一些元素贡献了3次,一些2次,一些1次

所以为了使beauty值最大,我们让较大的元素贡献的次数多一点,这样就能令最大的beauty更大(这就是本题贪心的部分)

下面举几个例子

1*1规模的矩阵

1个元素贡献了1次

2*2规模的矩阵

1个元素贡献2次,3个元素贡献1次

4*4规模的矩阵

1个元素贡献3次,3个元素贡献2次,12个元素贡献1次

8*8规模的矩阵

1个元素贡献4次,3个元素贡献3次,12个元素贡献2次,48个元素贡献1次

 

规律更明显了,我们只要用一些数组把规律保存下来,就能直接使用,具体看代码

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

typedef long long ll;
const int N  = 2000010;
ll a[N],M[30],C[30],sum[30];

bool cmp(ll x ,ll y){
    return x > y;
}

int main()
{
    M[1] = 1;
    for(int i=2; i<=15; i++) M[i] = M[i-1] * 4;
    C[1] = 1; C[2] = 3;
    for(int i=3; i<=15; i++) C[i] = C[i-1] * 4;
    sum[0] = 0; sum[1] = 1;
    for(int i=2; i<=15; i++) sum[i] = sum[i-1] + C[i];

    int tot,n;
    cin >> tot;
    for(int i=1; i<=tot; i++)
        cin >> a[i];
    sort(a+1,a+1+tot,cmp);
    
    for(int i=1; true ;i++) 
        if(tot == M[i]){
            n = i; break;
        }
    //n是它的规模
    ll res = 0;
    int i=0 , j , k , m = n;
    for(k=1; i<=tot ;k++)
    {
        for(i=sum[k-1]+1; i<=sum[k] && i<=tot; i++)
            res += a[i] * m;
        m--;
    }
    cout << res << endl;
    return 0;
}

 

转载于:https://www.cnblogs.com/scau20110726/archive/2013/06/06/3122561.html

乐播投屏是一款简单好用、功能强大的专业投屏软件,支持手机投屏电视、手机投电脑、电脑投电视等多种投屏方式。 多端兼容与跨网投屏:支持手机、平板、电脑等多种设备之间的自由组合投屏,且无需连接 WiFi,通过跨屏技术打破网络限制,扫一扫即可投屏。 广泛的应用支持:支持 10000+APP 投屏,包括综合视频、网盘与浏览器、美韩剧、斗鱼、虎牙等直播平台,还能将央视、湖南卫视等各大卫视的直播内容一键投屏。 高清流畅投屏体验:腾讯独家智能音画调校技术,支持 4K 高清画质、240Hz 超高帧率,低延迟不卡顿,能为用户提供更高清、流畅的视觉享受。 会议办公功能强大:拥有全球唯一的 “超级投屏空间”,扫码即投,无需安装。支持多人共享投屏、远程协作批注,PPT、Excel、视频等文件都能流畅展示,还具备企业级安全加密,保障会议资料不泄露。 多人互动功能:支持多人投屏,邀请好友加入投屏互动,远程也可加入。同时具备一屏多显、语音互动功能,支持多人连麦,实时语音交流。 文件支持全面:支持 PPT、PDF、Word、Excel 等办公文件,以及视频、图片等多种类型文件的投屏,还支持网盘直投,无需下载和转格式。 特色功能丰富:投屏时可同步录制投屏画面,部分版本还支持通过触控屏或电视端外接鼠标反控电脑,以及在投屏过程中用画笔实时标注等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值