用友Java后端筆試2023-8-5

計算被直線劃分區域

在笛卡爾坐標系,存在區域[A,B],被不同線劃分成多塊小的區域,簡單起見,假設這些不同線都直線并且不存在三條直線相交于一點的情況。

圖片

img

那么,如何快速計算某個時刻,在 X 坐標軸上[ A, B] 區間面積被直線劃分成多少塊?

A軸平行坐標Y軸,A (x=1)

B軸平行坐標Y軸, B(x = 20);

輸入描述

輸入采用多行輸入,一行4個數據,分別表示兩個坐標點,一行一條直線;

1,4,20,100 - 表兩個點,點t1的坐標為(1,4),點t2坐標為(20,100)

輸出描述

輸出為整數,表示被輸入線段劃分的面積個數

示例1

輸入

1,37,20,4
1,7,20,121

輸出

4

備注

AB之間的線段不平行于Y軸

思路

幾何題,當兩條線在這一區域內不相交時,區域空間增加1,當兩條線的交點在這一區域內時,空間增加2,所以我們判斷交點是否在區域內即可

代碼

 public static void main(String[] args) {Scanner in = new Scanner(System.in);List<int[]> edges = new ArrayList<>();int res = 1;while(in.hasNextLine()){String inputLine = in.nextLine();if (inputLine.isEmpty()) {break; // 如果輸入為空行,退出循環}res+=1;String[] line = inputLine.split(",");if(line[0]=="") continue;int[] nodes = new int[4];for(int i=0;i<4;i++){nodes[i] = Integer.parseInt(line[i]);}for(int[] edge:edges){double x = getIntersection(nodes[0],nodes[1],nodes[2],nodes[3],edge[0],edge[1],edge[2],edge[3]);if(x<20 && x>1) res+=1;}edges.add(nodes);}System.out.println(res);}static double getIntersection(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4){double k1 = (y1-y2)/(x1-x2);double b1 = y1 - k1*x1;double k2 = (y4-y3)/(x4-x3);double b2 = y3 - k2*x3;double x = (b2-b1)/(k1-k2);return x;}

最佳面試策略

小明最近在找工作,收到了許多面試邀約,可參加的面試由interviews 數組表示,其中 interviews[i] = [startTimei, endTimei, possibilityi],表示第 i 個面試在 startTimei 開始,endTimei 結束,面試成功的可能性是 possibilityi,該值越大,通過面試的可能性越大,由于精力限制,小明最多可以參加 k 場面試。

小明同一時間只能參加一場面試,如果要參加某場面試,必須完整參加這場面試才可能通過面試,即不能同時參加一個開始時間和另一個結束時間相同的兩場面試。

請給出小明面試成功可能性的最大和。

示例1

輸入

[[1,2,3],[3,4,2],[2,4,4]],2

輸出

5

說明

小明參加?[1,?2,?3],?[3,?4,?2]?兩場面試,面試通過可能性的和為?3?+?2?=?5

示例2

輸入

[[1,2,3],[3,4,2],[2,4,6]],2

輸出

6

說明

只參加面試?[2,?4,?6],面試通過的可能性的和最大,為?6?

思路

?對于這道題,我們先定義dp的狀態,dp[i][j]為面對i這個時間段的面試,已經面試了j次,決策后的最大可能值

先對interviews根據左端的值進行排序。

然后從后往前遍歷interviews,使用二分搜索的方法算出當前面試i的下一場面試,然后我們逐次消耗面試次數,記錄消耗j次面試機會的最大可能值,與進行下一次面試的值做比較,得到最終的最大值

注意,這里我們記錄了dp[i+1][j]的值,就是當這個可能值 > i加上后面的面試的可能值時,會保留更大的那個可能值的結果

代碼

import java.util.Arrays;public class algorithm {public static void main(String[] args) {int[][] s = { {1,2,3},{3,4,2},{2,4,6} };System.out.println(maxValue(s,2));}public static int maxValue(int[][] interviews,int k){Arrays.sort(interviews,(a,b)->a[0]-b[0]);int n = interviews.length;int[][] dp = new int[n+1][k+1];for(int i=n-1;i>=0;i--){int l=i,r=n;while (l<r){int mid = (l+r)>>1;if(interviews[i][1]<interviews[mid][0]) r=mid;else l=mid+1;}for(int j=0;j<=k;j++){dp[i][j] = dp[i+1][j];if(j>0) dp[i][j] = Math.max(dp[i][j],dp[r][j-1]+interviews[i][2]);}}return dp[0][k];}}

星球間的最短通路

在一個遙遠的銀河中,有N個星球(編號從1到N),這些星球之間通過星際門進行連接。每個星際門都連接兩個星球,并且可以雙向通行。

每個星際門的開啟需要消耗一定的能量,這個能量由星際門上的數字表示。每個星際門上的數字都是唯一的。

現在,由于某種原因,所有的星際門都處于關閉狀態。作為一個探索者,你的任務是找出一種方式,開啟最少的星際門,使得所有的星球都至少通過一個開啟的星際門與其他星球連接。

給你一些可連接的選項 connections,其中 connections[i] = [Xi, Yi, Mi] 表示星球 Xi 和星球 Yi 之間可以開啟一個星際門,并消耗 Mi 能量。

計算聯通所有星球所需的最小能量消耗。如果無法聯通所有星球,則輸出-1。

示例1

輸入

3,[[1,?2,?5],?[1,?3,?6],?[2,?3,?1]]

輸出

6

備注

1?≤?N?≤?100

思路

使用克魯斯卡爾算法求最小圖,這其中使用到了并查集的東西

代碼

import java.util.Arrays;public class Main {int[] fa;void init(int n){fa = new int[n];for(int i=0;i<n;i++) fa[i] = i;}int find(int x){return x == fa[x]? x: (fa[x] = find(fa[x] ));}void union(int x,int y){fa[find(x)] = find(y);}public int minimumCost(int n,int[][] connections){init(20000);Arrays.sort(connections,(a,b)->a[2]-b[2]);int ans = 0;for(int[] arr:connections){int a = arr[0],b=arr[1],w=arr[2];if(find(a)!=find(b)){union(a,b);ans+=w;}}return ans;}public static void main(String[] args) {Main a = new Main();int[][] s = {{1, 2, 5}, {1, 3, 6}, {2, 3, 1}};System.out.println(a.minimumCost(3,s));}
}

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

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

相關文章

kubernetes 中的事件(event)簡介以及如何收集event和基于event告警

引用另外一篇文章對k8s event的介紹 1.什么是kubernetes事件 Kubernetes Events 是一種 Kubernetes 資源對象&#xff0c;記錄了某個組件在某個時間做了某個動作&#xff0c;用于展示集群內發生的情況&#xff0c;當 Kubernetes 集群中資源狀態發生變化時&#xff0c;可以產生…

PostMan 教程

安裝https://www.cnblogs.com/mafly/p/postman.html Postman 使用方法詳解https://blog.csdn.net/fxbin123/article/details/80428216 postman進行http接口測試https://blog.csdn.net/five3/article/details/53021084 postman的使用方法詳解&#xff01;最全面的教程https:/…

Golang項目中如何輕松實現私有倉庫pkg包的引入

在企業內部創建一個公共的Golang模塊工程可以幫助提高代碼復用性和開發效率。本文將從如何創建一個公共的Golang工程開始&#xff0c;指導你一步步創建它、并引入到你的工程中。 1、公共模塊規范 下面是一個簡單的步驟指南來創建這樣一個公共模塊項目。 創建版本控制倉庫&am…

Verdi_traceX and autotrace

Verdi_traceX and autotrace Trace X From nWave/nTrace of from the Teporal Flow View. Show Paths on Flow ViewShow Paths on nWave 若Waveform中有X態&#xff0c;鼠標右鍵會有Trace X的選項&#xff1b; 會自動打開Temporal Flow View窗口&#xff0c;展示對應路徑&am…

RocketMQ、Dashboard部署以及安全設置

RocketMQ、dashboard部署以及安全設置 一、啟動RocketMQ1.1 下載RocketMQ1.2 修改配置文件1.2.1 修改nameServer Jvm內存配置1.2.2 修改broker參數 1.3 啟動1.3.1 啟動NameServer1.3.2 啟動Broker1.3.3 測試是否啟動成功1.3.3.1 測試消息發送1.3.3.2 測試消息接收1.3.3.3 Java程…

數據結構——配對堆

引入 配對堆是一個支持插入&#xff0c;查詢/刪除最小值&#xff0c;合并&#xff0c;修改元素等操作的數據結構&#xff0c;是一種可并堆。有速度快和結構簡單的優勢&#xff0c;但由于其為基于勢能分析的均攤復雜度&#xff0c;無法可持久化。 定義 配對堆是一棵滿足堆性質…

C語言暑假刷題沖刺篇——day1

目錄 一、選擇題 二、編程題 &#x1f388;個人主頁&#xff1a;庫庫的里昂 &#x1f390;CSDN新晉作者 &#x1f389;歡迎 &#x1f44d;點贊?評論?收藏?收錄專欄&#xff1a;C語言每日一練 ?其他專欄&#xff1a;代碼小游戲C語言初階&#x1f91d;希望作者的文章能對你…

問道管理:網上如何打新股?

隨著資本市場的不斷敞開&#xff0c;越來越多的人開始重視股票市場&#xff0c;并想經過網上打新股來取得更大的出資收益。但是&#xff0c;網上打新股的辦法并不簡略&#xff0c;怎樣才能成功地打新股呢&#xff1f;本文將從多個角度剖析&#xff0c;協助廣闊出資者處理這一問…

海信聚好看將攜新品DBdoctor,亮相中國數據庫技術大會(DTCC2023)

海信聚好看將攜新品DBdoctor&#xff0c;亮相中國數據庫技術大會 8月16日—18日&#xff0c;第14屆中國數據庫技術大會&#xff08;DTCC-2023&#xff09;將在北京國際會議中心隆重召開。作為國內數據庫領域規模最大的技術交流盛會&#xff0c;吸引了眾多業內知名企業和數百名…

[謙實思紀 01]整理自2023雷軍年度演講——《成長》(上篇)武大回憶(夢想與成長)

文章目錄 [謙實思紀]整理自2023雷軍年度演講 ——《成長》&#xff08;上篇&#xff09;武大回憶&#xff08;夢想與成長&#xff09;0. 寫在前面1. 夢開始的地方1.1 要有夢想&#xff0c;要用目標量化夢想 2. 在兩年內修完所有的學分。2.1 別老自己琢磨&#xff0c;找個懂的人…

【LeetCode 算法】Matrix Diagonal Sum 矩陣對角線元素的和

文章目錄 Matrix Diagonal Sum 矩陣對角線元素的和問題描述&#xff1a;分析代碼Math Tag Matrix Diagonal Sum 矩陣對角線元素的和 問題描述&#xff1a; 給你一個正方形矩陣 mat&#xff0c;請你返回矩陣對角線元素的和。 請你返回在矩陣主對角線上的元素和副對角線上且不…

Python爬蟲IP代理池的建立和使用

寫在前面 建立Python爬蟲IP代理池可以提高爬蟲的穩定性和效率&#xff0c;可以有效避免IP被封鎖或限制訪問等問題。 下面是建立Python爬蟲IP代理池的詳細步驟和代碼實現&#xff1a; 1. 獲取代理IP 我們可以從一些代理IP網站上獲取免費或付費的代理IP&#xff0c;或者自己租…

【深度學習所有損失函數】在 NumPy、TensorFlow 和 PyTorch 中實現(1/2)

一、說明 在本文中&#xff0c;討論了深度學習中使用的所有常見損失函數&#xff0c;并在NumPy&#xff0c;PyTorch和TensorFlow中實現了它們。 二、內容提要 我們本文所談的代價函數如下所列&#xff1a; 均方誤差 &#xff08;MSE&#xff09; 損失二進制交叉熵損失加權二進…

“深入解析JVM內部機制:探索Java虛擬機的奧秘“

標題&#xff1a;深入解析JVM內部機制&#xff1a;探索Java虛擬機的奧秘 JVM&#xff08;Java虛擬機&#xff09;是Java程序的核心執行環境&#xff0c;它負責將Java字節碼轉換為機器碼并執行。了解JVM的內部機制對于理解Java程序的執行過程和性能優化至關重要。本文將深入解析…

開啟想象翅膀:輕松實現文本生成模型的創作應用,支持LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型,開箱即用

開啟想象翅膀&#xff1a;輕松實現文本生成模型的創作應用&#xff0c;支持LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型&#xff0c;開箱即用 TextGen: Implementation of Text Generation models 1.介紹 TextGen實現了多種文本生成模型&#xff0c;包括&a…

c++——::作用域、命名空間、using(聲明和編譯指令)

c 作用域和名字控制 一、::(雙冒號) 作用域 <::>運算符是一個作用域如果<::>前面什么都沒有加 代表是全局作用域 二、命名空間&#xff08;namespace) 1、namespace 本質是作用域,可以更好的控制標識符的作用域命名空間 就可以存放 變量 函數 類 結構體 … 2…

【kubernetes】在k8s集群環境上,部署kubesphere

部署kubesphere 學習于尚硅谷kubesphere課程 前置環境配置-部署默認存儲類型 這里使用nfs #所有節點安裝 yum install -y nfs-utils# 在master節點執行以下命令 echo "/nfs/data/ *(insecure,rw,sync,no_root_squash)" > /etc/exports # 執行以下命令&#xff…

QML與C++交互

目錄 1 QML獲取C的變量值 2 QML獲取C創建的自定義對象 3 QML發送信號綁定C端的槽 4 C端發送信號綁定qml端槽 5 C調用QML端函數 1 QML獲取C的變量值 QQmlApplicationEngine engine; 全局對象 上下文屬性 QQmlApplicationEngine engine; QQmlContext *context1 engine.…

flowable流程移植新項目前端問題匯總

flowable流程移植到新項目時&#xff0c;出現一些前端問題&#xff0c;匯總如下&#xff1a; PS F:\khxm\NBCIO_VUE> yarn run serve yarn run v1.21.1 $ vue-cli-service serve INFO Starting development server... ERROR Error: Vue packages version mismatch: -…

25 | 葡萄酒質量數據分析

基于kaggle提供的公開數據集,對全球葡萄酒分布情況和質量情況進行數據探索和分析 from kaggle: https://www.kaggle.com/zynicide/wine-reviews 分析思路: 0、數據準備 1、葡萄酒的種類 2、葡萄酒質量 3、葡萄酒價格 4、葡萄酒描述詞庫 5、品鑒師信息 6、總結 0、數據準備 …