小欧吃苹果-OPPO 2024届校招正式批笔试题-数据开发(C卷)

在处理这个问题前,先看一个经典的贪心算法题目。信息学奥赛一本通(C++版)在线评测系统icon-default.png?t=N7T8http://ybt.ssoier.cn:8088/problem_show.php?pid=1320

注意移动纸牌的贪心策略并不是题目中给出的移动次序:第1堆纸牌9<10,因为是最左侧,它只能从第2堆移动过来一张,这个动作是必须做的(没有别的选择),移动1次。第2堆现在7张,只能从第3堆移动过来3张,移动2次。第3堆14张,只能往第4堆移动4张,移动3次。第四堆恰好10张,不移动。此类问题算法从边界节点处理(当然也可以从第n堆开始逆向处理),因为边界只有唯一的移动选择。

题目分析:回到本题目,树中每个节点都有苹果数量的要求,在贪心算法处理过程中,只需先处理哪些只有唯一处理方案的节点,采用类似拓扑排序的方法即可求解。如题目中样例。

拓扑排序针对是有向无环图度为0的点,无向图如何拓扑排序呢?从上图观察可以发现无向图中边缘点度为1。因此将拓扑排序处理节点判定条件从度为0改为度为1即可。

#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
ll n,a[100005],v[100005],d[100005],ans=0;
vector<int>e[100055];
int main()
{
    ios::sync_with_stdio(0),cin.tie(0);
    int i,j,x,y;
    cin>>n;
    for(i=1;i<=n;i++)
        cin>>a[i];
    for(i=1;i<n;i++)/**< 无向图存储 */
    {
        cin>>x>>y;
        e[x].push_back(y);
        e[y].push_back(x);
        d[x]++,d[y]++;/**< 统计度 */
    }
    queue<int>q;
    for(i=1;i<=n;i++)
        if(d[i]==1) q.push(i);
    while(q.size())
    {
        x=q.front();
        v[x]=1;/**< 标记为已处理节点 */
        q.pop();
        for(i=0;i<e[x].size();i++)/**< x所有邻接点,树结构实际只有一个点可以起作用 */
        {
            y=e[x][i];
            if(v[y]==0)/**< 只能和没有处理过节点交换苹果 */
            {
                ans+=abs(x-a[x]);/**< x节点将自己的值处理为x,花费代价是abs(x-a[x]) */
                if(x>=a[x])  /**< x上多出的值或者缺少的值只能传递给y */
                    a[y]-=x-a[x];
                else
                    a[y]+=a[x]-x;
                d[y]--;/**< y的度减一 */
                if(d[y]==1)
                    q.push(y);
            }
        }
    }
    cout<<ans;
    return 0;
}

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OPPO IC笔试题是一道由OPPO公司出题的考察应聘者电子工程知识和能力的笔试题目。根据题目要求,我将使用300字中文回答这道题目。 根据OPPO IC笔试题,题目要求是设计一种电源管理芯片。首先,电源管理芯片是一种用于管理和控制电力供应系统的集成电路。它可以将输入电压转换为恰当的输出电压,并提供电流稳定和电池充电功能。 为了设计这种电源管理芯片,首先需要明确设计的目标和要求。比如,芯片的输入电压范围、输出电压和电流要求、电池充电功能等。然后,进行电路设计,包括选择适当的元器件、搭建电路拓扑结构,以满足设计要求。 接下来,需要进行电路模拟和性能测试。使用电路仿真软件,对设计的电路进行模拟,验证其在不同工作条件下的性能。包括输入输出电压波形、电流稳定性、功耗以及保护功能等。 在模拟和测试过程中,需要关注电路的效率、温度、稳定性和安全性等因素。如果模拟和测试结果符合设计要求,就可以将其进一步制造成芯片原型。 在芯片原型制造完成后,需要进行实际测试和验证。使用测试设备和工具,验证电源管理芯片在实际使用中的性能和稳定性。 最后,完成设计文档和报告。记录整个设计和验证的过程,包括电路图、模拟结果、测试数据和验证报告等。并对设计中遇到的问题和解决方案进行总结。 总之,设计一种电源管理芯片需要进行目标确定、电路设计、模拟测试、制造验证和文档报告等过程。这道OPPO IC笔试题考察了应聘者的电子工程知识和设计能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值