BestCoder Round #74

VCU128开发板上手记:搞定100G以太网IP核与QSFP光模块的那些坑 本文详细介绍了在VCU128开发板上实现100G以太网IP核与QSFP光模块调试的实战经验。从硬件准备、IP核配置到QSFP模块控制信号处理,文章揭示了数据手册中未提及的关键细节,并提供了优化参数和压力测试方案,帮助开发者快速解决UltraScale+平台下的高速以太网部署难题。 阅读详情

LCP Array Accepts: 131
Submissions: 1352
Time Limit: 4000/2000 MS (Java/Others)
Memory Limit: 131072/131072 K (Java/Others)
Problem Description

Peter has a string s=s1s2…sns=s_{1}s_{2}…s_{n}s=s​1​​s​2​​…s​n​​, let suffi=sisi+1…sn\text{suff}i =s{i}s_{i+1}…s_{n}suff​i​​=s​i​​s​i+1​​…s​n​​ be the suffix start with iii-th character of sss. Peter knows the lcp (longest common prefix) of each two adjacent suffixes which denotes as ai=lcp(suffi,suffi+1)(1≤i

#include<iostream>
#include<stdio.h>
#include<vector>
#include<algorithm>
#include<vector>
#include<string.h>

int T;
int n;
int a[100005];
long long an=1;
int MOD=1000000007;
int main()
{
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        int flag=1;
        an=26;
        for(int i=1;i<n;i++)
        {
            scanf("%d",&a[i]);
            if(a[i]!=a[i-1]-1&&a[i-1]>0)
            {
                flag=0;
            }
        }
        if(flag==0||a[n-1]>1)
        {            
            printf("0\n");
            continue;
        } 

            for(int i=1;i<n;i++)
            if(a[i]==0)
            an=(an*25)%MOD;

        printf("%I64d\n",an);
    }
}

Shortest Path Accepts: 40
Submissions: 610
Time Limit: 4000/2000 MS (Java/Others)
Memory Limit: 131072/131072 K (Java/Others)
Problem Description

There is a path graph G=(V,E)G=(V,E)G=(V,E) with nnn vertices. Vertices are numbered from 111 to nnn and there is an edge with unit length between iii and i+1i + 1i+1 (1≤i

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int di[8][8];
int n,m;
int a[8];
int aa,bb;
int an;
long long ans;

int abs(int x)
{
    if(x<0) return -x;
    return x;
}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d",&n,&m);
        for(int i=1;i<=6;i++)
        scanf("%d",&a[i]);
        for(int i=1;i<=6;i++)
        for(int j=1;j<=6;j++)
        {
            di[i][j]=100005;            
        }
        for(int i=1;i<=6;i++)
        {
            di[i][i]=0;
            for(int j=1;j<=6;j++)
            {
                if((i&1)&&j==i+1)
                {

                    di[j][i]=di[i][j]=min(abs(a[j]-a[i]),1);
                }
                else di[i][j]=di[j][i]=min(abs(a[j]-a[i]),di[i][j]);
            }

        }
        //cout<<"     "<<di[1][2]<<endl;
        for(int k=1;k<=6;k++)
        for(int i=1;i<=6;i++)
        for(int j=1;j<=6;j++)
        if(i!=j&&j!=k&&k!=i)
        di[i][j]=min(di[i][j],di[i][k]+di[k][j]);
        ans=0;
        for(int ii=1;ii<=m;ii++)
        {
            scanf("%d%d",&aa,&bb);
            an=abs(aa-bb);
            for(int i=1;i<=6;i++)
            for(int j=1;j<=6;j++)
            {
                int QQ=di[i][j]+abs(aa-a[i])+abs(bb-a[j]);
                if(an>QQ) an=QQ;    
            }
            //cout<<an<<endl;
            ans=(ans+ii*an)%1000000007;
        }
        cout<<ans%1000000007<<endl;
    }
}

Transform Accepts: 7
Submissions: 49
Time Limit: 4000/2000 MS (Java/Others)
Memory Limit: 131072/131072 K (Java/Others)
问题描述

给出nnn个整数, 对于一个整数xxx, 你可以做如下的操作若干次:

  • 令xxx的二进制表示为b31b30…b0‾\overline{b_{31}b_{30}…b_0}​b​31​​b​30​​…b​0​​​​​, 你可以翻转其中一个位.
  • 令yyy是给出的其中一个整数, 你可以把xxx变为x⊕yx \oplus yx⊕y, 其中⊕\oplus⊕表示位运算里面的异或操作.

现在有若干整数对(S,T)(S, T)(S,T), 对于每对整数你需要找出从SSS变成TTT的最小操作次数.

输入描述

输入包含多组数据. 第一行有一个整数TTT (T≤20)(T \le 20)(T≤20), 表示测试数据组数. 对于每组数据:

第一行包含两个整数nnn和mmm (1≤n≤15,1≤m≤105)(1 \le n \le 15, 1 \le m \le 10^5)(1≤n≤15,1≤m≤10​5​​), 表示给出整数的数目和询问的数目. 接下来一行包含nnn个用空格分隔的整数a1,a2,…,ana_1, a_2, …, a_na​1​​,a​2​​,…,a​n​​ (1≤ai≤105)(1 \le a_i \le 10^5)(1≤a​i​​≤10​5​​).

接下来mmm行, 每行包含两个整数sis_is​i​​和tit_it​i​​ (1≤si,ti≤105)(1 \le s_i, t_i \le 10^5)(1≤s​i​​,t​i​​≤10​5​​), 代表一组询问.

输出描述

对于每组数据, 输出一个整数S=(∑i=1mi⋅zi) mod (109+7)S=(\displaystyle\sum_{i=1}^{m} i \cdot z_i) \text{ mod } (10^9 + 7)S=(​i=1​∑​m​​i⋅z​i​​) mod (10​9​​+7), 其中ziz_iz​i​​是第iii次询问的答案.

输入样例

1
3 3
1 2 3
3 4
1 2
3 9

输出样例

10

Hint

3→43 \to 43→4 (2次操作): 3→7→43 \to 7 \to 43→7→4

1→21 \to 21→2 (1次操作): 1⊕3=21 \oplus 3 = 21⊕3=2

3→93 \to 93→9 (2次操作): 3→1→93 \to 1 \to 93→1→9

solution: 1.DP 2.bfs
add edge from 0 :1.(1<

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
long long  a[18+15+1];
long long ans;
int MAXN=131072+1;
long long MOD=1e9+7;
int dp[131073*2];
int n,m;
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        ans=0;
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)   scanf("%lld",&a[i]);
        for(int i=0;i<18;i++)
        {
            a[++n]=(1<<i);
        }   
        for(int i=1;i<MAXN;i++)    dp[i]=99999;
        for(int i=1;i<=n;i++)
        for(int j=0;j<MAXN;j++)
        {
            dp[a[i]^j]=min(   dp[a[i]^j],dp[j]+1    );
        }
        for(int  i=1;i<=m;i++)
        {
            int aa,bb;
            scanf("%d%d",&aa,&bb);
            ans=(ans+(long long )dp[aa^bb]*(long long )i)%MOD;
        }
        cout<<ans<<endl;
    }
}

Toposort Accepts: 7
Submissions: 25
Time Limit: 10000/5000 MS (Java/Others)
Memory Limit: 131072/131072 K (Java/Others)
问题描述

给出nnn个点mmm条边的有向无环图. 要求删掉恰好kkk条边使得字典序最小的拓扑序列尽可能小.

输入描述

输入包含多组数据. 第一行有一个整数TTT, 表示测试数据组数. 对于每组数据:

第一行包含3个整数nnn, mmm和kkk (1≤n≤100000,0≤k≤m≤200000)(1 \le n \le 100000, 0 \le k \le m \le 200000)(1≤n≤100000,0≤k≤m≤200000), 表示图中结点数目, 图中边的数目以及要删的边数.

接下来mmm行, 每行包含两个整数uiu_iu​i​​ and viv_iv​i​​, 表示存在一条uiu_iu​i​​到viv_iv​i​​的有向边 (1≤ui,vi≤n)(1 \le u_i, v_i \le n)(1≤u​i​​,v​i​​≤n).

输入保证给定的图是一个DAG. 输入数据中nnn的和不超过10610^610​6​​. 输入数据中mmm的和不超过2⋅1062 \cdot 10^62⋅10​6​​.

输出描述

对于每组数据, 输出一个整数S=(∑i=1ni⋅pi) mod (109+7)S = (\displaystyle\sum_{i=1}^{n}{i\cdot p_i}) \text{ mod } (10^9 + 7)S=(​i=1​∑​n​​i⋅p​i​​) mod (10​9​​+7), 其中p1,p2,…,pnp_{1}, p_{2}, …, p_{n}p​1​​,p​2​​,…,p​n​​是字典序最小的那个拓扑序列.

输入样例

3
4 2 0
1 2
1 3
4 5 1
2 1
3 1
4 1
2 3
2 4
4 4 2
1 2
2 3
3 4
1 4

输出样例

30
27
30
solution 1:Toposort

参考下普通的用堆维护求字典序最小拓扑序, 用某种数据结构维护入度小于等于kkk的所有点, 每次找出编号最小的, 并相应的减少kkk即可.

这个数据结构可以用线段树, 建立一个线段树每个节点[l,r][l,r][l,r]维护编号从lll到rrr的所有节点的最小入度, 查询的时候只需要在线段树上二分, 找到最小的xxx满足入度小于等于kkk.

复杂度O((n+m)logn)O((n+m)\log n)O((n+m)logn)
solution 2:
maintain a pri. queue to faster locate the curent best answer;

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<queue>
#include<vector>
#define mod 1000000007
using namespace std;
int T;
int n,m,k;
int aa,bb;
int r[100005];
int vis[100005];
vector<int> lin[100005];
int tot;
long long ans;
priority_queue<int> q;
void TP()
{
    tot=0;
    while(tot<n)
    {
        int now=-q.top();
        q.pop();
        if(r[now]>k||vis[now]==1) continue;
        vis[now]=1;
        k-=r[now];
        r[now]=0;  
        tot++;
        ans+=(long long)tot*(long long)now;
        ans%=mod;   
        for(int i=0;i<lin[now].size();i++)
        {
            int nex=lin[now][i];
            if(r[nex])
            {
                r[nex]--;
                q.push(-nex);
            }
        }
    }

}




int main()
{
    scanf("%d",&T); 
    while(T--)
    {
        ans=0;
        while(!q.empty()) q.pop();
        scanf("%d%d%d",&n,&m,&k);
        for(int i=1;i<=n;i++)
        {
            lin[i].clear();
            vis[i]=r[i]=0;                      
        }
        for(int i=1;i<=m;i++)
        {
            scanf("%d%d",&aa,&bb);
            lin[aa].push_back(bb);
            r[bb]++;
        }
        for(int i=1;i<=n;i++) q.push(-i);
        TP();
        cout<<ans<<endl;
    }
}
面经-2023-禾赛-FPGA工程师 阅读详情

相关推荐

Oracle VM VirtualBox虚拟机网络配置与静态IP设置实战

本文详细讲解了Oracle VM VirtualBox虚拟机的网络配置,特别是如何设置静态IP以实现稳定访问。文章对比了NAT、桥接、仅主机等网络模式,并提供了从VirtualBox管理界面到Linux系统内部的完整配置步骤,帮助用户解决IP变动问题,构建可靠的本地开发测试环境。

weixin_28365523的博客 510

BestCoder Round #74 Shortest Path

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5636 题意:给我们一条n个点组成的链,然后在上面加3条边,输出某两个点 题目一看就是最短路问题,但是一看点数:10^5,比赛的时候还真的没敢去做,觉得这题要算出所有点到其他点的最短距离,无论用Floyd还是SPFA都应该会炸时间,事后才发现并不需要求出所有点之间的距离,只需要求出加三条边的那6个点

RaAlGhul的博客 476

SAP PP后台配置实战:从BOM到工艺路线的全流程解析

本文详细解析了SAP PP模块后台配置的全流程,从BOM到工艺路线的关键步骤与实战技巧。通过分享生产计划、工作中心能力计划等核心配置经验,帮助企业优化生产管理流程,提升SAP系统实施效率。特别针对BOM配置、工艺路线设置等常见问题提供解决方案。

weixin_29300931的博客 1007

BestCoder Round #74 HDU 5638 Topsort

拓扑排序 算法 BestCoder

I'm Gavin 581

NXP KW47蓝牙MCU低功耗实测:从8μA睡眠到5年续航的优化实战

在物联网和嵌入式系统开发中,低功耗设计是决定电池供电设备续航能力的关键技术。其核心原理在于通过事件驱动、状态机管理和精细的电源域控制,使设备在空闲时进入深度睡眠,仅在需要时快速唤醒工作,从而将平均电流从毫安级降至微安级。这项技术的工程价值在于能够实现纽扣电池供电设备长达数年的使用寿命,广泛应用于智能家居传感器、可穿戴设备、资产追踪和工业监测等领域。以NXP KW47系列无线MCU为例,其集成的Arm Cortex-M33双核与专用射频单元,配合多级睡眠模式和高效DC-DC转换器,为超低功耗蓝牙应用提供了硬件

weixin_30162121的博客 255

如何构建智能聊天系统

聊天分为听、思考、读,简单的通过ASR、LLM、TTS三类模型的组合可以实现,最近openai推出支持多模态的GPT-4o模型,可以把三个模型真正融合成在一起。现在市面上的模型百花齐放,各有所长。要实现可落地的方案,需要结合业务,验证模型效果,同时也要考虑方案的可行性,有些模型在国内能用,有些在国内不能用。

xsgnzb的专栏 2107

BestCoder Round #74 (div.2)

组合 1001LCP Array 第一题就小难,出题的好像是浙大的大牛? 找到一个规律:a[i] = x, s[i..i+x]都想同。a[i] = a[i+1] + 1 (a[i] > 0),否则就是与后一个颜色不同,方案*25。第一次颜色相同的26种方案。 #include <bits/stdc++.h> typedef long long ll; c...

weixin_34208185的博客 131

用户存续期价值评估CLV(三) Gamma-Gamma模型 Python模拟

Gamma-Gamma模型 前面已经提到过,Pareto/NBD和BG/NBD模型只对客户存续时间和交易次数进行建模,并不涉及客户未来交易所带来的现金价值。 Gamma-Gamma模型就是对这个问题的一个扩展解决方案。 Gamma-Gamma模型做了如下假设: 从客户角度上来说,交易金额在每个客户的平均交易价值上随机波动。(这一点并不是很有说服力) 所观察到的交易价值均值是隐含价值均值 ????(????) 的非完美计量 交易价值均值在客户中是变化的,即使这个值是稳定的(这个假设非常大) 在客户中的平

weixin_43171270的博客 4365

BestCoder Round #74 (div.2) 题面&题解

以下吐槽时间请无视:woc你TM再给我两分钟!!再给我两分钟!!我就可以A了T4了。。。赛后交oj真的是1A啊。。。1A啊!!!!!那score就上4500!!!就rank2了!!!那就上div1了呀。。。。woc上帝再给我两分钟吧T_T~~T_T~~        T1:LCP Array        题意:已知一个字符串相邻两个后缀(指下标相邻)的最长共同前缀,求可行的字符串个数。

lych的博客 1122

Dify 系列教程 | 第 6 篇:工作流入门 -- 用可视化方式编排 AI 逻辑

Dify 工作流是一个基于有向无环图(DAG)的可视化 AI 逻辑编排系统。你可以把多个处理步骤(节点)用连线串联起来,数据从起点流向终点,每经过一个节点就被处理一次。用一个类比来理解:如果单次 Prompt 调用是"一道菜",那工作流就是"一道完整的生产线" – 原材料(输入)进入流水线,经过清洗(预处理)、切配(数据转换)、烹饪(AI 推理)、装盘(格式化输出)等工序,最终产出成品。创建一个工作流类型的应用(或高级聊天类型),就会进入工作流编辑器。编辑器基于ReactFlow构建(

weixin_43674738的博客 118

从零开始学习CANoe(六)—— CAPL 测试节点

创建CAPL Test Module的两种方式

蚂蚁小兵 1万+

hdu5635 BestCoder Round #74 (div.2)

LCP Array Accepts: 131 Submissions: 1352 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) 问题描述 Peter有一个字符串s=s_{1}s_{2}...s_{n}s=s...

diaocuiguo2493的博客 190

ZYNQ通过AXI DMA实现PL发送连续大量数据到PS DDR

方案二是在PS端的MPU配置中,将DMA缓冲区所在的内存区域标记为“不缓存”(Device或Strongly Ordered类型),但这样CPU访问这些内存区的速度会大幅降低,需要根据实时性和数据正确性的需求做权衡。更妙的是,描述符链表可以做成一个环状队列,放在DDR里让DMA循环取走,从而实现持续不断的“流式”传输。用FPGA实现FFT硬件加速的系统中也是如此:PS向PL提交待处理的FFT数据,PL硬件加速计算后,DMA把结果写回DDR,全程CPU几乎只做配置调度,大量数据吞吐留给了硬件通道。

QQ_778132974的博客 171

hdu 5636 搜索 BestCoder Round #74 (div.2)

Shortest Path    Accepts: 40    Submissions: 610  Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) 问题描述 有一条长度为nn的链. 节点ii和i+1i+1之间有长度为11的边. 现在又新加

阳光下的泡沫 590

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

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

hdu 5637 BestCoder Round #74 (div.2)

Transform Accepts: 7 Submissions: 49 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) 问题描述 给出nn个整数, 对于一个整数xx, 你可以做如下的操作若干次: ...

diaocuiguo2493的博客 153

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

BestCoder Round #74 (div.2) -LCP Array(有毒的模拟)

LCP Array    Accepts: 131    Submissions: 1352  Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) 问题描述 Peter有一个字符串s=s_{1}s_{2}...s_{n}s=s​1​​s​2​

梧桐下的四叶草 446

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

BestCoder Round #74 (div.2) T3 Transform HDOJ 5637

/* 这道题有两种变化选择,一种翻转某一位很好办,对于另一种亦或操作:由于亦或有交换律,所以x^…^..=y也就等价于…^..=x^y,那就很好办,直接不停亦或就好啦O(∩_∩)O~ */ # include < iostream > # include < cstring > # include < cstdio > using namespace std; typedef

little_squirrel的博客 321

hdu5635 BestCoder Round #74 (div.2) LCP Array

LCP Array Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 895    Accepted Submission(s): 252 Problem Description Peter has a stri

EventQueue的博客 474

BestCoder Round #74 (div.2) T4 Toposort HDOJ 5638

这道题的思路是使用利用优先队列将字典序作为第一关键字,将普通拓扑排序中的判定入度等于零变成入度小于等于k即可,但是如果每一次排出来一个就从新扫一遍也未免太慢,必爆的节奏\(^o^)/~所以我们使用一种诡异优化来解决这个问题: #include<iostream> #include<algorithm> #include<queue> #include<cstdio>

little_squirrel的博客 416

hdu5636 BestCoder Round #74 (div.2) 1002 Shortest Path

Shortest Path Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 1004    Accepted Submission(s): 329 Problem Description There is a

EventQueue的博客 544

BestCoder Round #74 (div.2) LCP Array

真是TMD,bestcoder 73 竟然做了一天 LCP Array    Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 1087    Accepted Submission(s): 306 Problem Descri

WilliamCode的博客 665
上一篇: 【POJ2778】 DNA Sequence AC自动机+矩阵快速幂
下一篇: [Tyvj 1860] 后缀数组 倍增O(nlogn) 求sa[],height[]模板,单调栈维护,求特征值
ALPS233
博客等级 码龄11年 25粉丝 191原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值