【大廠機試題解法筆記】報文響應時間

題目

IGMP 協議中,有一個字段稱作最大響應時間 (Max Response Time) ,HOST收到查詢報文,解折出 MaxResponseTime 字段后,需要在 (0,MaxResponseTime] 時間 (s) 內選取隨機時間回應一個響應報文,如果在隨機時間內收到一個新的查詢報文,則會根據兩者時間的大小,選取小的一方刷新回應時間。

最大響應時間有如下計算方式:
當 Max Resp Code < 128, Max Resp Time = Max Resp Code;
當 Max Resp Code ≥ 128,

Max Resp Time = (mant | 0x10) << (exp + 3);
注: exp最大響應時間的高5~7位: mant 為最大響應時間的低4位。

其中接收到的MaxRespCode 最大值為 255,以上出現所有字段均為無符號數。

現在我們認為 HOST收到查詢報文時,選取的隨機時間必定為最大值,現給出 HOST 收到查詢報文個數 C,HOST 收到該報文的時間T,以及查詢報文的最大響應時間字段值 M,請計算出HOST 發送響應報文的時間。

輸入描述

第一行為查詢報文個數 C,后續每行分別為 HOST 收到報文時間 T 及最大響應時間M,以空格分割。

輸出描述

HOST發送響應報文的時間。

備注
用例確定只會發送一個響應報文, 不存在計時結束后依然收到查詢報文的情況。

用例

輸入輸出說明
3 ?
0 20 ?
1 10 ?
8 20
11第0秒收到報文,響應時間為20秒(0+20=20)。
第1秒收到新報文,響應時間為1+10=11秒,因11<20,更新最小時間為11秒。
第8秒收到報文,響應時間為8+20=28秒,維持最小時間11秒。
最終結果為11秒

思路

題目核心在考察二進制操作和各進制互轉。主要關注 Max Resp Code ≥ 128 時怎么把響應碼轉成響應時間。mant 是響應碼低四位,怎么提取二進制的低四位?提取低四位應該是保留低四位的01狀態,把其它位的狀態值都置為0,那么與(&)上只有低四位是1其它位是0的二進制數不就保留了第四位,即 mant = code & 0b00001111(0b開頭是JavaScript表示二進制字面量的一種寫法),為了代碼寫起來簡潔,一般不直接用二進制字面量,0b00001111可以被看成掩碼,轉成十進制或十六進制不影響二進制運算。JavaScript 把二進制轉十進制需先調用變量toString(radix)方法轉為字符串,radix是進制,默認是10,再解析為數字。let b =?0b00001111,? decimal = Number(b.toString()) = 15,轉為16進制為 hex = toString(16) = 'f',寫成十六進制為 0xf 或0x0f,0x0f 是推薦十六進制字面量寫法,它包含了前導0,0x0f 能清晰地表示低 4 位為 1111,高 4 位為 0000,即二進制的 00001111。JavaScript 沒法通過函數輸出數值類型0x0f 或 0xf 形式的十六進制,只能用字符串表示,JavaScript數值表示一般都是十進制。代碼里這樣寫吧:mant = code & 15。接下來提取exp,圖片中顯示exp位于第5到第7位之間包含邊界,八位二進制從右邊第一位起計數,索引按1開始。那么提取高5~7位可以用高5~7位的狀態位都是1其余位都是0的二進制數0b01110000進行與操作,然后右移動4位把其余位沖掉,為什么要右移呢,根據題意用掩碼提取二進制中的某個部分是用它表示一個新數的,低位的0是丟棄的,故要右移把提取的部分挪到最低位。0b01110000對應十進制是112,所以 exp = code & 112,如果嫌十進制表示的112有點大,可以用十六進制0x70。有了 mant 和 exp 就可以根據公式?Max Resp Time = (mant | 0x10) << (exp + 3) 計算最大響應時間了。

參考代碼


function solution() {const C = parseInt(readline());const calculateMPT = function(code) {if (code < 128) return code;const mant = code & 15;const exp = code & 112 >> 4;return (mant | 0x10) << (exp + 3);}let result = Infinity;for (let i = 0; i < C; i++) {const [T, M] = readline().split(' ').map(Number);let mT =  calculateMPT(M);result = Math.min(result, T + mT);}console.log(result);
}const cases = [`3
0 20
1 10
8 20`,
`2
0 255
200 60`
];let caseIndex = 0;
let lineIndex = 0;const readline = (function () {let lines = [];return function () {if (lineIndex === 0) {lines = cases[caseIndex].trim().split("\n").map((line) => line.trim());}return lines[lineIndex++];};
})();cases.forEach((_, i) => {caseIndex = i;lineIndex = 0;solution();
});

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/84379.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/84379.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/84379.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

邏輯回歸暴力訓練預測金融欺詐

簡述 「使用邏輯回歸暴力預測金融欺詐&#xff0c;并不斷增加特征維度持續測試」的做法&#xff0c;體現了一種逐步建模與迭代驗證的實驗思路&#xff0c;在金融欺詐檢測中非常有價值&#xff0c;本文作為一篇回顧性記錄了早年間公司給某行做反欺詐預測用到的技術和思路。百度…

Python爬蟲實戰:研究demiurge框架相關技術

1. 引言 在當今數字化時代,互聯網上蘊含著海量的有價值信息。爬蟲技術作為獲取這些信息的重要手段,被廣泛應用于學術研究、商業分析、輿情監測等多個領域。然而,構建一個高效、穩定且可維護的爬蟲系統面臨諸多挑戰,如網頁結構復雜多變、反爬機制日益嚴格、數據處理流程繁瑣…

Jenkins | Jenkins構建成功服務進程關閉問題

Jenkins構建成功服務進程關閉問題 1. 原因2. 解決 1. 原因 Jenkins 默認會在構建結束時終止所有由構建任務啟動的子進程&#xff0c;即使使用了nohup或后臺運行符號&。 2. 解決 在啟動腳本中加上 BULID_IDdontkillme #--------------解決jenkins 自動關閉進程問題-----…

深度學習習題2

1.如果增加神經網絡的寬度&#xff0c;精確度會增加到一個特定閾值后&#xff0c;便開始降低。造成這一現象的可能原因是什么&#xff1f; A、即使增加卷積核的數量&#xff0c;只有少部分的核會被用作預測 B、當卷積核數量增加時&#xff0c;神經網絡的預測能力會降低 C、當卷…

猜字符位置游戲-position gasses

import java.util.*;public class Main {/*字符猜位置游戲;每次提交只能被告知答對幾個位置;根據提示答對的位置數推測出每個字符對應的正確位置;*/public static void main(String[] args) {char startChar A;int gameLength 8;List<String> ballList new ArrayList&…

解析兩階段提交與三階段提交的核心差異及MySQL實現方案

引言 在分布式系統的事務處理中&#xff0c;如何保障跨節點數據操作的一致性始終是核心挑戰。經典的兩階段提交協議&#xff08;2PC&#xff09;通過準備階段與提交階段的協調機制&#xff0c;以同步決策模式確保事務原子性。其改進版本三階段提交協議&#xff08;3PC&#xf…

Towards Open World Object Detection概述(論文)

論文&#xff1a;https://arxiv.org/abs/2103.02603 代碼&#xff1a;https://github.com/JosephKJ/OWOD Towards Open World Object Detection 邁向開放世界目標檢測 Abstract 摘要 Humans have a natural instinct to identify unknown object instances in their environ…

QT3D學習筆記——圓臺、圓錐

類名作用Qt3DWindow3D渲染窗口容器QEntity場景中的實體&#xff08;對象或容器&#xff09;QCamera控制觀察視角QPointLight點光源QConeMesh圓錐幾何網格QTransform控制實體的位置/旋轉/縮放QPhongMaterialPhong光照材質&#xff08;定義顏色、反光等&#xff09;QFirstPersonC…

CSS | transition 和 transform的用處和區別

省流總結&#xff1a; transform用于變換/變形&#xff0c;transition是動畫控制器 transform 用來對元素進行變形&#xff0c;常見的操作如下&#xff0c;它是立即生效的樣式變形屬性。 旋轉 rotate(角度deg)、平移 translateX(像素px)、縮放 scale(倍數)、傾斜 skewX(角度…

夏普比率(Sharpe ratio)?

具有投資常識的人都明白&#xff0c;投資光看收益是不夠的&#xff0c;還要看承受的風險&#xff0c;也就是收益風險比。 夏普比率描述的正是這個概念&#xff0c;即每承受一單位的總風險&#xff0c;會產生多少超額的報酬。 用數學公式描述就是&#xff1a; 其中&#xff1…

C#學習第29天:表達式樹(Expression Trees)

目錄 什么是表達式樹&#xff1f; 核心概念 1.表達式樹的構建 2. 表達式樹與Lambda表達式 3.解析和訪問表達式樹 4.動態條件查詢 表達式樹的優勢 1.動態構建查詢 2.LINQ 提供程序支持&#xff1a; 3.性能優化 4.元數據處理 5.代碼轉換和重寫 適用場景 代碼復雜性…

計算機網絡備忘錄

計算機網絡 - 網絡互聯與互聯網 計算機網絡重點學習本章&#xff0c;屬于核心知識 包含網絡層和傳輸層 的 相關協議 計算機網絡層次重點掌握網絡層與傳輸層。其中網絡層主要是IP協議&#xff0c;解決主機-主機通信&#xff0c;傳輸層主要是TCP/UDP 協議&#xff0c;解決應用-…

跨界破局者魯力:用思辨與創新重塑汽車流通行業標桿

來源&#xff1a;投資家 在汽車流通行業深度變革的浪潮中&#xff0c;東莞東風南方汽車銷售服務有限公司塘廈分公司總經理魯力歷經近二十年行業深耕&#xff0c;構建了一條從汽車銷售顧問到區域運營掌舵者的進階范本。作為東風日產體系內兼具理論建構與實戰穿透力的標桿管理者…

玄機-日志分析-IIS日志分析

1.phpstudy-2018站點日志.(.log文件)所在路徑&#xff0c;提供絕對路徑 2.系統web日志中狀態碼為200請求的數量是多少 3.系統web日志中出現了多少種請求方法 4.存在文件上傳漏洞的路徑是什么(flag{/xxxxx/xxxxx/xxxxxx.xxx} 5.攻擊者上傳并且利用成功的webshell的文件名是什…

微信小程序開發知識點

1. 微信小程序開發知識點 1.1. 公共引用 1.1.1. 公共 wxss 在app.wxss文件下寫入組件樣式&#xff0c;也可使用import方式應用單獨公共樣式&#xff0c;避免了每個頁面單獨引用。 import "./public/wxss/base.wxss";1.1.2. 公共組件 在app.json文件下寫入組件&…

安卓基礎(編譯.Class)

方法安全性維護性開源友好度刪除.java用.class? 極低? 差?代碼混淆 (ProGuard)? 中等? 易?AAR 庫模塊? 高? 易? 對于.class 步驟 1&#xff1a;編譯生成 .class 文件 ??打開終端??&#xff08;Android Studio 底部的 Terminal 標簽頁&#xff09; 導航到你的模塊…

golang常用庫之-go-feature-flag庫(特性開關(Feature Flags))

文章目錄 golang常用庫之-go-feature-flag庫&#xff08;特性開關&#xff08;Feature Flags&#xff09;&#xff09;一、什么是特性開關&#xff08;Feature Flags&#xff09;二、go-feature-flag庫我可以使用 GO Feature Flag 做什么&#xff1f;選擇使用 Open Feature SDK…

微前端 - Module Federation使用完整示例

Angular 框架中 項目結構 main-app/src/app/app.module.tsapp.component.ts micro-app/src/app/app.module.tsapp.component.ts主應用配置 安裝必要依賴&#xff1a; ng add angular-architects/module-federation修改 webpack.config.js&#xff1a; const { share, Shar…

麒麟v10系統的docker重大問題解決-不支持容器名稱解析

今天給客戶在麒麟v10Kylin-Server-V10-SP1下安裝nextcloudonlyoffice的時候出現無法連接onlyoffice的問題,經過分析找到了是docker版本過低的原因,現在把解決思路和步驟分享給大家。 一、問題 用一鍵安裝工具,給客戶裝好了系統,Nextcloud可以正常訪問 但是訪問nextcloud中的o…

PyCharm中運行.py腳本程序

1.最近在弄一個python腳本程序&#xff0c;記錄下運行過程。 2.編寫的python程序如下 # # Copyright 2017 Pixar # # Licensed under the terms set forth in the LICENSE.txt file available at # https://openusd.org/license. # # Check whether this script is being run …