2363 Blocks

本文介绍了一种通过暴力枚举的方法来寻找由多个正方体组成的长方体中表面积最小的情况。该方法固定体积不变,遍历所有可能的长宽高组合,找出表面积最小的那个。
部署运行你感兴趣的模型镜像

这里写图片描述


/*将正方体拼成表面积最小的长方体*/
/*利用体积不变,暴力枚举。*/
#include<iostream>
#include<algorithm>

using namespace std;

int main()
{
    int C;
    cin >> C;
    while (C--)
    {
        int N;
        int cnt = 0;
        cin >> N;
        int area[1000] = { 0 };
        for (int i = 1; i <= N; i++)
        {
            for (int j = 1; j <= N / i; j++)
            {
                for (int k = 1; k <= N / i / j; k++)
                {
                    if (i*j*k == N)
                    {
                        area[cnt++] = 2 * (i*j + i*k + j*k);
                    }
                }
            }
        }
        sort(area, area + cnt);
        cout << area[0] << endl;
    }

    return 0;
}

您可能感兴趣的与本文相关的镜像

GPT-SoVITS

GPT-SoVITS

AI应用

GPT-SoVITS 是一个开源的文本到语音(TTS)和语音转换模型,它结合了 GPT 的生成能力和 SoVITS 的语音转换技术。该项目以其强大的声音克隆能力而闻名,仅需少量语音样本(如5秒)即可实现高质量的即时语音合成,也可通过更长的音频(如1分钟)进行微调以获得更逼真的效果

clc,clear; % 读取参考图像和失真图像 ref_img = imread('C:\Users\wang\Desktop\分数阶图像识别论文\xin\原图\1.jpg'); dist_img = imread('C:\Users\wang\Desktop\分数阶图像识别论文\xin\order_0.5\1.jpg'); % 计算VIF分数 vif_score = vif(ref_img, dist_img); % 显示结果 fprintf('Visual Information Fidelity (VIF) = %.4f\n', vif_score); function vif_value = vif(ref_img, dist_img) % VIF - Visual Information Fidelity 图像质量评价指标 % 输入: % ref_img : 参考图像 (uint8 或 double 类型) % dist_img : 失真图像 (与参考图像相同类型和尺寸) % 输出: % vif_value : VIF 分数 (值越大表示质量越好) % 参数设置 sigma_nsq = 0.1; % 视觉噪声方差 num_levels = 4; % 小波分解层数 subband_weights = [0.0448, 0.2856, 0.3001, 0.2363, 0.1333]; % 子带权重 % 确保图像为双精度类型 if ~isa(ref_img, 'double') ref_img = im2double(ref_img); end if ~isa(dist_img, 'double') dist_img = im2double(dist_img); end % 转换为灰度图像(如果输入是彩色) if size(ref_img, 3) == 3 ref_img = rgb2gray(ref_img); dist_img = rgb2gray(dist_img); end % 计算小波分解 [ref_subbands, dist_subbands] = wavelet_decomposition(ref_img, dist_img, num_levels); % 计算每个子带的VIF vif_subbands = zeros(1, num_levels + 1); for k = 1:num_levels + 1 vif_subbands(k) = compute_subband_vif(... ref_subbands{k}, dist_subbands{k}, sigma_nsq); end % 加权求和得到最终VIF vif_value = dot(vif_subbands, subband_weights); end %% 小波分解函数 function [ref_sub, dist_sub] = wavelet_decomposition(ref, dist, levels) % 使用Steerable Pyramid进行多尺度分解 ref_sub = cell(1, levels + 1); dist_sub = cell(1, levels + 1); % 第一层(原始图像) ref_sub{1} = ref; dist_sub{1} = dist; % 后续分解层 for lev = 1:levels % 高斯金字塔下采样 ref = imresize(ref, 0.5, 'bilinear'); dist = imresize(dist, 0.5, 'bilinear'); % 存储当前尺度 ref_sub{lev+1} = ref; dist_sub{lev+1} = dist; end end %% 子带VIF计算函数 function vif = compute_subband_vif(ref_band, dist_band, sigma_nsq) % 计算单个子带的VIF % 提取局部块特征 block_size = 3; ref_blocks = im2col(ref_band, [block_size block_size], 'sliding'); dist_blocks = im2col(dist_band, [block_size block_size], 'sliding'); % 计算每个块的统计量 num_blocks = size(ref_blocks, 2); vif_blocks = zeros(1, num_blocks); for i = 1:num_blocks ref_block = ref_blocks(:, i); dist_block = dist_blocks(:, i); % 计算均值和方差 mu_ref = mean(ref_block); mu_dist = mean(dist_block); % 移除均值 ref_block_zm = ref_block - mu_ref; dist_block_zm = dist_block - mu_dist; % 计算方差和协方差 var_ref = var(ref_block_zm); var_dist = var(dist_block_zm); covar = cov(ref_block_zm, dist_block_zm); covar_ref_dist = covar(1,2); % 避免除零错误 if var_ref < 1e-10 vif_blocks(i) = 1; continue; end % 计算增益因子 g = covar_ref_dist / var_ref; % 计算噪声方差 var_n = max(0, var_dist - g^2 * var_ref); % 计算互信息 info_ref = log2(1 + var_ref / sigma_nsq); info_dist = log2(1 + (g^2 * var_ref) / (var_n + sigma_nsq)); vif_blocks(i) = info_dist / info_ref; end % 取所有块的中位数作为子带VIF vif = median(vif_blocks); end 针对上述matlab实现VIF图像质量评价指标带代码。如何更改使其可以实现对多个图像(一个文件夹内的所有图像)的计算
最新发布
07-04
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值