栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

D. Yet Another Minimization Problem

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

D. Yet Another Minimization Problem

传送门:CF

前言:过完年的这么几把,把把掉大分,从1850调到1700,真实酸爽。这场D的dp是一个很妙的点(至少我不会),看了 小t 的代码后,醍醐灌顶(小t如药也,善读可以医愚)。

正文:

首先看下数据范围,给了2秒的实现加上n为100,我初解的时候觉得是一个暴力枚举的题,所以压根就没往化简式子+dp上面想。所以掉大分。

通过化简式子,可以得到,最优的时候是

当然,很难得到最完美的情况,所以只要尽量接近就行。

然而我们该怎么找到这个最优的和呢?

我最初的想法是暴力,但是MLE了(我是傻逼

正解是通过迭代,AC代码如下:

#include
using namespace std;
#define ll long long

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	int T; 
    cin>>T;
	while(T--)
	{
        int n;
        cin>>n;
        vectora(n),b(n);
        for(int i=0;i>a[i];
        for(int i=0;i>b[i];
        if(n==1){
            cout<<0<<'n';
            continue;
        }
        ll sum = accumulate(a.begin(),a.end(),0)+accumulate(b.begin(),b.end(),0);
        vectordp(sum+1);
        dp[0]=1;
        for(int i=0 ;i= 0;j--){
                if(dp[j]){
                    dp[j+a[i]]=1;
                    dp[j+b[i]]=1;
                    dp[j]=0;
                }
            }
        }
        
        ll kase = 1e18;
        ll sum1=0;
        for(int i=0;i<=sum;i++){
            if(dp[i]==0)continue;
            if(abs(sum-i*2)>T;
	while(T--)
	{
        int n;
        cin>>n;
        vectora(n),b(n);
        for(int i=0;i>a[i];
        for(int i=0;i>b[i];
        if(n==1){
            cout<<0<<'n';
            continue;
        }
        ll sum = accumulate(a.begin(),a.end(),0)+accumulate(b.begin(),b.end(),0);
        vectordp(sum+1);
        dp[0]=1;
        for(int i=0 ;i= 0;j--){
                if(dp[j]){
                    dp[j+a[i]]=1;
                    dp[j+b[i]]=1;
                    dp[j]=0;
                }
            }
        }
        
        ll kase = 1e18;
        ll sum1=0;
        for(int i=0;i<=sum;i++){
            if(dp[i]==0)continue;
            if(abs(sum-i*2) 

这里又学了一个STL,

可以用accumulate()来直接求解一个数组的和。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/737968.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号