Gym - 103055J - Grammy and Jewelry ( dijkstra + 完全背包 )

手把手教你用STM32实现SPWM逆变器控制(附完整代码) 本文详细介绍了如何使用STM32微控制器实现SPWM逆变器控制,包括硬件设计、PWM生成配置、正弦表生成与DMA传输,以及闭环控制与性能优化。通过完整的代码示例和实测数据,帮助开发者快速掌握SPWM技术,应用于新能源和电力电子领域。 阅读详情
题目链接:点击进入
题目

在这里插入图片描述
在这里插入图片描述

题意

存在一个有 n 个顶点和 m 条边的连通无向图。顶点的索引范围为 1 到 n 。在顶点 i( 2 <= i <=n )中有无限的珠宝 ,每个都有价值的 ai 。从第 1 点开始。通过每一个边消耗1 个单位的时间。她可以在顶点 i 捡起一件珠宝,然后放回顶点 1 。捡起和放下一件珠宝可以立即完成。此外,她在任何时候最多可以携带 1 件珠宝。当她在顶点 1 放下一件价值为 x 的珠宝时,她得到了它的价值。现在,对于 1 和 T ( 包括 T )之间的每一个 k ,她想知道在 k 个时间单位中她能得到的最大值是多少。

思路

对于节点 i ,dis [ i ] 表示 1 点到 i 点的距离,那么消耗时间 2 * dis [ i ] 可以得到 a [ i ] 的价值。每个节点可以无限拿。也就是对于每个节点都有一个固定消耗时间。
那么问题就相当于转换成了,总时间为 K 的情况下,怎样选择节点,可以使总价值最大,每个节点都有自己的时间、价值,数量不限。完全背包?!。

代码
//#pragma GCC optimize(3)//O3
//#pragma GCC optimize(2)//O2
#include<iostream>
#include<string>
#include<map>
#include<set>
//#include<unordered_map>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include<stack>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<fstream>
#define X first
#define Y second
#define base 233 
#define pb push_back
#define INF 0x3f3f3f3f3f3f3f3f
#define pii pair<int,int>
#define lowbit(x) x & -x
#define inf 0x3f3f3f3f
// #define int long long
//#define double long double
//#define rep(i,x,y) for(register int i = x; i <= y;++i)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double pai=acos(-1.0);
const int maxn=1e5+10;
const int mod=1e9+7;
const double eps=1e-9;
const int N=5e3+10;
/*--------------------------------------------*/
inline int read()
{
    int k = 0, f = 1 ;
    char c = getchar() ;
    while(!isdigit(c)){if(c == '-') f = -1 ;c = getchar() ;}
    while(isdigit(c)) k = (k << 1) + (k << 3) + c - 48 ,c = getchar() ;
    return k * f ;
}
/*--------------------------------------------*/
 
int head[maxn],cnt,a[maxn],f[maxn],w[maxn];
int dis[maxn], vis[maxn];
int n,m,s,t;
struct node
{     
    int to;
    int w;
    int next;
}edge[maxn];
void init()
{
    memset(head,-1,sizeof(head));
    memset(dis,0x3f,sizeof(dis));
    cnt = 0;
}
void add(int u,int v,int w)
{
    edge[cnt].to = v;
    edge[cnt].w = w;
    edge[cnt].next = head[u];
    head[u]=cnt++;
}
void dijkstra()
{
    memset(vis,0,sizeof(vis));
    priority_queue<pii,vector<pii>,greater<pii> > q;
    dis[s] = 0; q.push({dis[s],s});
    while(!q.empty())
    {
        int now = q.top().second;
        q.pop();
        if(vis[now]) continue;
        vis[now] = true;
        for(int i = head[now]; i != -1; i = edge[i].next)
        {
            int v = edge[i].to;
            if(!vis[v] && dis[v] > dis[now] + edge[i].w)
            {
                dis[v] = dis[now] + edge[i].w;
                q.push({dis[v],v});
            }
        }
    }
}
int main() 
{
//  ios::sync_with_stdio(false);
//  cin.tie(0);cout.tie(0);
    init();
    scanf("%d%d%d",&n,&m,&t);
    for(int i=2;i<=n;i++)
        scanf("%d",&a[i]);
    for(int i=1;i<=m;i++)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        add(x,y,1);
        add(y,x,1);
    }
    s = 1;
    dijkstra();
    for(int i=2;i<=n;i++)
        w[i]=dis[i]*2;
    for(int i=2;i<=n;i++)
        for(int j=w[i];j<=t;j++)
            f[j]=max(f[j],f[j-w[i]]+a[i]);
    for(int i=1;i<=t;i++)
        printf("%d ",f[i]);
    return 0;
} 
科研党必备:用MATLAB批量处理.mat文件数据的3种高效方法 本文为科研人员提供了使用MATLAB批量处理.mat文件数据的三种高效方法,涵盖智能数据加载、专业可视化与自动化报告生成。通过构建自动化框架、多维度数据画图策略及批量处理流程,帮助用户显著提升数据处理效率与图表专业性,解决海量实验数据的管理与分析难题。 阅读详情

相关推荐

Crossbar RRAM技术解析:从1TnR架构到存储革命

非易失性存储器(NVM)是数据存储的核心技术,其原理基于物理状态的稳定改变以实现数据持久化。阻变存储器(RRAM)作为一种新兴NVM,利用导电细丝在介质层中的形成与断裂实现数据存储,具有高速、低功耗和结构简单的优势。在工程实践中,RRAM面临潜行路径电流等挑战,而Crossbar提出的1TnR架构通过引入共享晶体管有效解决了这一问题,在保证性能的同时提升了集成密度。该技术与CMOS工艺兼容,支持后端集成与多层堆叠,为高密度存储和嵌入式应用提供了新的解决方案。结合当前行业对高能效、高密度存储的需求,RRAM在

weixin_42523104的博客 318

SDUT 2021 Spring Team Contest--- 10(Gym 103055)

Gym 103055A - League of LegendsC - CubeJ - Grammy and JewelryL - String FreshmanM - Game Theory A - League of Legends 题目链接 答案 #include <iostream> #include<bits/stdc++.h> #define ll long long #define ull unsigned long long #define INF 0x3f3f3f3f

qq_45830025的博客 541

昇腾910安装驱动出错,降低Centos7.6的内核版本

Centos7.6 启动内核修改,解决昇腾910安装驱动错误的问题。

深蓝 3300

J - Grammy and Jewelry(最短路+完全背包)

J - Grammy and Jewelry 题目描述 There is a connected undirected graph with n vertices and m edges. Vertices are indexed from 1 to n. There is infinite jewelry in vertex i(2≤i≤n), each valued ai. Grammy starts at point 1. Going through each edge consumes 1 unit

Suryxin's blogs 2453

几何非线性-屈曲分析

结构系统的破坏分为两种,一类是因材料软化而引起的强度破坏,另一类是几何软化使得结构的几何形状发生极大变化,从而使结构丧失承载能力。在材料力学中是这样定义压杆失稳的:中心受压直杆(理想模型)在直线状态下平衡,由稳定平衡转化为不稳定平衡时所受的轴向压力的界限值,称为临界压力。中心受压直杆在临界压力的作用下,其直线形态的平衡开始丧失稳定性,简称为失稳。显然,这个定义只使用于理想的压杆模型,那么关于失稳和屈曲是否存在一般性定义呢?

YORU_NO_KUNI的博客 1万+

SLG项目开发经验二_大地图设计与实现

本文深入探讨了SLG游戏大地图设计与实现的关键技术,包括网格化业务框架、AOI系统优化、边界处理方案以及行军系统实现。通过Unity引擎的实践案例,详细解析了大地图性能优化的核心策略,如分块加载、GPU Instancing和差异同步协议,为SLG项目开发提供宝贵经验。

weixin_29001419的博客 218

J. Grammy and Jewelry

蒟蒻小声嘀咕:来水一篇题解 题意: 给一个有n个顶点的无向图, 顶点2到n上每个顶点均放有无限的珠宝,单个顶点上的所有珠宝具有相同的价值,Grammy从顶点1出发,经过每条边耗时均为1,当把珠宝从第i个顶点拿回放到第一个顶点就可以得到该珠宝。给定一个时间限制T,枚举时间1-T每一个时间限制下能获取的最大珠宝的价值。 比赛时没读懂题意,后来分析以一下,是一个单源最短路+完全背包问题,背包容量即为T,先迪杰斯特拉求出dist数组,获取某一顶点珠宝所用时间为dist[i]*2。(其实是dist[i]*2*t

Bookerbobo的博客 2071

RAG项目简历包装指南:从“流水线工人”到“问题解决者”的跃迁(附代码与思路)

本文代码已在Python 3.11 + CUDA 12.3环境测试,部分功能需LangChain 0.2+支持。

Conan_0728的博客 1885

CF-gym-103055-Shortest Path Query-最短路+位运算+树

There is an undirected graph with n vertices and m edges. The vertices are labelled by 1,2,…,n. The i-th edge connects the ui-th vertex and the vi-th vertex, the length of which is wi. Here, ui’s binary representation is always a prefix of vi’s binary repr

weixin_51204962的博客 593

SOEM主站开发篇(1):移植SOEM主站到Linux开发板

详细介绍了SOEM主站源码移植到Linux开发板上的步骤,同时演示了如何使用Linux开发板获取EtherCAT从站的PDO映射信息。

kevin1499的博客 2396

嵌入式Modbus协议面试题及参考答案

Modbus 协议采用主从模式进行通信,这种模式定义明确,便于在工业环境中实现设备之间的有序数据交互。在主从模式中,存在一个主站(Master)和多个从站(Slave)。主站通常是工业控制系统中的上位机,如 PLC、工控机等,它负责发起通信请求,控制整个通信过程。从站则是各种现场设备,如传感器、执行器等,它们接收主站的请求,并根据请求进行相应的操作,然后将结果返回给主站。主站的主要功能包括:发起数据读取或写入请求、控制通信的时序和流程、处理从站返回的数据。

大模型大数据攻城狮的专栏 2042

gym-10135I

题意:和H差不多,这个是找字符串中最长的镜像字串; 思路:一样的思路,标记下; #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #define ll long long using namespace std; int main()...

weixin_30888707的博客 130

Python全栈入门到实战【基础篇 05】核心基础:Python的2种运行模式(交互式+命令行式)

Python代码运行模式详解:交互式与命令行式对比 摘要: Python提供两种核心运行模式:交互式(REPL)和命令行式(脚本式)。交互式模式适合快速测试语法,即时反馈结果,通过终端输入python启动,特点是无需保存、临时执行,适合验证小段代码逻辑。命令行式模式需将代码保存为.py文件后运行,适合开发完整程序,可重复执行和修改。两种模式各有优势:交互式便于学习调试,命令行式适合实际开发。掌握两种模式的使用场景和切换方法,是Python入门的关键技能,能显著提升学习效率。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 4554

Grammy and Jewelry Gym - 103055J(链式前向星 + Dijkstra算法 + 完全背包)-- 笔记

题目 There is a connected undirected graph withnnvertices andmmedges. Vertices are indexed from11tonn. There is infinite jewelry in vertexii(2≤i≤n2≤i≤n), each valuedaiai. Grammy starts at point11. Going through each edge consumes11unit of time....

weixin_45250945的博客 981

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【cf】J. Grammy and Jewelry(Dijkstra+完全背包)

J. Grammy and Jewelry time limit per test 0.5 seconds memory limit per test 512 megabytes input standard input output standard output There is a connected undirected graph withnnvertices andmmedges. Vertices are indexed from11tonn. There is...

_C9的博客 637

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

2021浙江省赛—Grammy and Jewelry(最短路+完全背包)

题目链接 题目描述 There is a connected undirected graph with nnn vertices and m edges. Vertices are indexed from 111 to nnn. There is infinite jewelry in vertex iii (2≤i≤n)(2≤i≤n)(2≤i≤n), each valued aia_iai​. Grammy starts at point 111. Going through each edge c

Mr_dimple的博客 1214

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

The 18th Zhejiang Provincial Collegiate Programming Contest (ZJCPC)部分题解

F,G,J,LF - Fair DistributionG - Wall GameJ - Grammy and JewelryL - String Freshman F - Fair Distribution 题意: 给定你nnn个机器人,mmm块巧克力,你可以进行如下的两种操作若干次。 1.1.1.摧毁掉一个机器人 2.2.2.增加一块巧克力的数量 问你能够是n∣mn|mn∣m的最小操作次数是多少,nnn不可以变为0。 思路: 1.1.1.假如n≥mn \geq mn≥m,那么答案一定就是n−mn - m

forward77 1938

2021浙江省赛题解(A,C,F,G,J,L,M)

2021浙江省赛题解(A,C,F,G,J,L,M) A.League of Legends 题解 签到题 直接求和判断一下 注意会爆intintint以及相等的情况。 代码 #include <bits/stdc++.h> #define PI atan(1.0)*4 #define rp(i,s,t) for (register int i = (s); i <= (t); i++) #define RP(i,t,s) for (register int i = (t); i >=

mumei的博客 4556

The 18th Zhejiang Provincial Collegiate Programming Contest部分题解(A,C,G,J,L,M)

A. League of Legends Codeforces 题意 签到题 C. Cube Codeforces 题意 给出 888 个点,判断这 888 个点是否组成一个正方体。 题解 888 个点两两组对得 282828 条边,判断这 282828 条边是否有 121212 个相等的 AAA (楞长), 121212 个相等的 BBB (正方形的对角线), 444 个相等的 CCC (正方体的对角线),且 A2+B2=C2A^2+B^2=C^2A2+B2=C2 。若是,则是正方体,否则不是。 代码 #

画船听雨眠 1613

Grammy and Jewelry(最短路+完全背包)

Grammy and Jewelry 已经菜到连完全背包都没看出来了,都已经想到最短路求出费用,然后开始硬贪心。最开始则是想到要DP但是没想到用最短路,还想直接在图上DP,然后就跳题了。 #include <iostream> #include <cstring> #include <cmath> #include <bitset> #include <queue> #include <vector> #include <cstd

reisen.inaba的博客 878

百练-4141:砝码称重

总时间限制: 1000ms 内存限制:65536kB 描述 设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重<=1000),要求:计算用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况。 输入 一行,包括六个正整数a1,a2,a3,a4,a5,a6,表示1g砝码有a1个,2g砝码有a2个,……,20g砝码有a6个。相邻两个整数之间用单个空格隔开。 输出 以“Tot...

Cosmic_Tree的博客 1084

The number of steps(概率dp问题)

题目描述 Mary stands in a strange maze, the maze looks like a triangle(the first layer have one room,the second layer have two rooms,the third layer have three rooms …). Now she stands at the top point(the first layer), and the KEY of this maze is in the lowes

Cosmic_Tree的博客 805

Clock Master(分组背包)-2020ccpc(威海)

题意: T 组样例,每组给一个 n ,范围是 [ 1 , 30000 ] ,要求将 n 分解成: n = a1 + a2 + … + am ( m 没有限制 ),使得(a1 + a2 + … + am)的最小公倍数最大,输出这个最大值的对数。 思路: 将题目转换一下,就变成了将n分解,分解成 使得 尽可能的大。同时答案是要求输出这个最大值的对数,这个式子又转换为 有 k 种(组)素数,每种(组)素数只能选择一个幂次( p ^ ( ei )) ,第i个数的容量是 p ^ ( ei ),价值是log (.

Cosmic_Tree的博客 799

中石油 : 炸弹安放

时间限制: 1 Sec 内存限制: 128 MB 题目描述 小蔡决定在小头家门口安放炸弹!! 小头家门口有n个连续的格子排成一行,对于每个格子,小蔡可以决定放一颗炸弹或者不放。为了防止小头被炸死,小蔡不会在连续3个格子都放上炸弹。小蔡想知道一共有多少安放炸弹的方案(可以一个也不放)。 由于方案数可能很多,所以你只需要方案个数mod 55555就可以了。 ...

Cosmic_Tree的博客 734

CodeForces - 1509C - The Sports Festival( 区间dp )

题目链接:点击进入 题目 题意 长度为 n 的数组 a [ i ] ,数组可以随意排序,求最小的 d [ 1 ] + … + d [ n ] 和 d [ i ] = max ( a [ 1 ] , , , a [ i ] ) - min ( a [ 1 ] , , , a [ i ] ) ; 思路 区间 dp dp [ i ] [ j ] 表示区间 [ i , j ] 的最小 d 和 区间 [ l , r ] 由区间 [ l + 1 , r ] 跟 [ l , r - 1 ] 转移来,额外增加的贡献

Cosmic_Tree的博客 484

HDU - 2196 - Computer( 树形dp )

题目链接:点击进入 题目 题意 对树上的每个点,求出离这个点最远的点的距离是多少 思路 对于一个节点,最远距离可能在该节点的子树方向上,也可能在该节点的父节点方向上,两次dfs,第一次求出该节点子树方向上最长距离,第二次求父节点方向上的最长距离,两次取最大值就是这个点的最大距离 dp [ u ] [ 0 ] :在 u 的子树下离 u 的最远距离是多少 dp [ u ] [ 1 ] :在 u 的子树下( 和 dp [ u ] [ 0 ] 不是同一孩子 )u 的次远距离是多少 dp [ u ] [ 2 ]

Cosmic_Tree的博客 475
上一篇: PAT甲级 - 1153 Decode Registration Card of PAT (25 分) ( 排序 + unordered_map )
下一篇: 计算机算法设计与分析第二章思维导图&&知识点总结
Cosmic_Tree
博客等级 码龄7年 134粉丝 337原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值