首页 > 其他分享 >dp+知道结果求在过程的思维

dp+知道结果求在过程的思维

时间:2024-09-13 15:26:24浏览次数:11  
标签:思维 maxx 结果 int cin long 5001 dp

codeforces
C. Armchairs
dp题,写不出来,我们应该这么去考虑,一共有n个苹果要放在n个箱子里,要全部放完
使得苹果和箱子的总距离差值和最小,类似于背包,每个箱子放不放,放了确保最小的
箱子容量不用考虑一一对应的。


#include <bits/stdc++.h>

#define  int long long

using namespace std;

int f[5001][5001];
int v[5001];
int32_t main( )
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n;
    cin>>n;
    for (int i = 0; i <=n ; ++i) {
        for (int j = 0; j <=n ; ++j) {
            f[i][j]=INT_MAX;
        }
        f[i][0]=0;
    }

    for (int i = 1; i <=n ; ++i) {
        cin>>v[i];
    }
    int sum=0;
    vector<int>p;
    p.push_back(0);
    for (int i = 1; i <=n ; ++i) {
        if(v[i]==1){
            p.push_back(i);
            sum++;
        }
    }
    for (int i = 1; i <=n; ++i) {
        for (int j = 1; j <=sum ; ++j) {\
            f[i][j]=f[i-1][j];
            if(v[i]==1)continue;
            f[i][j]=min(f[i-1][j],f[i-1][j-1]+abs(i-p[j]));
        }
    }
    cout<<f[n][sum];

    return 0;

}

A. Winner
字符串+思维
我想着取维护第一个的值,但是感觉思路有问题写不出来(因为后面的可能会减小会影响所有的map的前后关系)
看了别人的代码首先数据不超过1000,我们可以先找到最终的答案的值
如何我们从头再开始枚举一遍,如果满足当前枚举的值大于等于最终答案,并且最终答案是正确的
那么输出答案即可
代码


#include <bits/stdc++.h>

using namespace std;

#define int  long long

string d[1002];
int v[1002];
int32_t main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n;
    cin>>n;
 map<string,int>mp;

    for (int i = 1; i <=n ; ++i) {
        cin>>d[i]>>v[i];
        mp[d[i]]+=v[i];
    }
    int maxx=0;
    map<string,int>cs;
    for(auto it:mp){
        maxx=max(maxx,it.second);
    }
   for(int i=1;i<=n;i++){
       cs[d[i]]+=v[i];
       if(cs[d[i]]>=maxx&&mp[d[i]]==maxx){
           cout<<d[i];
           break;
       }
   }

    return 0;
}

标签:思维,maxx,结果,int,cin,long,5001,dp
From: https://www.cnblogs.com/dontian/p/18401257

相关文章

  • 期望概率DP总结
    主要是codeforces上的。毕竟时间不一样了,要从luogu转来cf咯。B.DreamoonandWiFi在这道题发现一个重要的问题,当题目输出精度有较高要求时,输出多位,比如这道题里出现了1e-9,那么输出10位小数。C.Journey这道题输出同样需要使用printf输出更多的小数位,cout真的不能再用了Codef......
  • 全新WordPress插件简化成功之路
    Yoast联合创始人发布了一款插件,该插件帮助用户规划任务、战胜拖延、消除干扰,从而更容易取得成功。这款插件简化了管理关键任务的过程,如维护网站健康、发布文章和更新内容。为什么这款插件能帮助用户取得成功有些网站未能充分发挥其潜力的原因之一是缺乏持续的动力和输出。那......
  • 【MATLAB版】代码中输入所需数学公式,代码自行运行计算出结果
    在MATLAB中,可以使用符号计算工具箱(SymbolicMathToolbox)来输入和处理复杂的公式。可以定义符号变量并使用它们来表示数学表达式,然后进行符号运算、简化、求解方程、微积分运算等。具体步骤如下:1、加载符号工具箱并定义符号变量要进行复杂公式的符号计算,首先需要定义符号变......
  • 洛谷P8208 [THUPC2022 初赛] 骰子旅行 题解 期望DP
    题目链接:https://www.luogu.com.cn/problem/P8208解题思路:定义\(d_u\)表示节点\(u\)的出度,定义\(V_u\)表示节点\(u\)一步能够走到的节点的集合。定义状态\(p_{u,c,v}\)表示从节点\(u\)出发走恰好\(c\)步的情况下,至少经过一次节点\(v\)的概率。则:若\(v=......
  • 基于DPU的容器冷启动加速解决方案
    1. 方案背景1.1. 业务背景随着容器技术的迅猛发展与广泛应用,一种新的云计算服务模式应运而生-函数即服务(FaaS,FunctionasaService)。FaaS作为一种无服务器(Serverless)计算方式,极大地简化了开发人员的工作,使他们能够专注于应用的构建与运行,而不再需要承担服务器管理的负担。然而......
  • 基于DPU的容器冷启动加速解决方案
    1. 方案背景1.1. 业务背景随着容器技术的迅猛发展与广泛应用,一种新的云计算服务模式应运而生-函数即服务(FaaS,FunctionasaService)。FaaS作为一种无服务器(Serverless)计算方式,极大地简化了开发人员的工作,使他们能够专注于应用的构建与运行,而不再需要承担服务器管理的负担......
  • CNN是怎么处理时序数据并得到预测结果
    作为一名深度学习学生,经常会被问到各种模型如何应用于不同领域的问题,今天我们来聊聊卷积神经网络(CNN)是如何处理时序数据并得到预测结果的。虽然CNN最初是为图像识别而设计的,但通过一些巧妙的方法,它也能有效地处理时序数据,如股票价格预测、天气预测等场景。1.CNN与时序......
  • 【笔记】二维DP
    文章目录例题lanqiao1536数字三角形题目描述输入描述输出描述解题思路选取状态1代码1选取状态2代码2lanqiao389摆花题目描述输入描述解题思路输出描述代码lanqiao3711选数异或题目描述输入描述输出描述解题思路lanqiao3348可构造的序列总数二维DP和普通DP本质......
  • 洛谷P10504 守卫者的挑战 题解 概率DP
    题目链接:https://www.luogu.com.cn/problem/P10504状态\(f_{i,s,k}\)表示:当前正面临第\(i\)项挑战(此时第\(1\simi-1\)项挑战已完成,第\(i\)项挑战还没开始);目前已经挑战成功了\(s\)项(即第\(1\simi-1\)项挑战中共有\(s\)项挑战成功,\((i-1)-s\)项没挑战成功);......
  • datastructure与算法 orderedPair
    /**  Aninterfacethatdescribestheoperationsofasetofobjects.  @authorCharlesHoot,FrankM.Carrano  @version4.0*/publicinterfaceSetInterface<T>{  /**Getsthecurrentnumberofentriesinthisset.    @return Theintegernum......