貪心算法4(c++)

過河的最短時間
題目描述
輸入
在漆黑的夜里,N位旅行者來到了一座狹窄而且沒有護欄的橋邊。如果不借助手電筒的話,大家是無論如何也不敢過橋去的。不幸的是,N個人一共只帶了一只手電筒,而橋窄得只夠讓兩個人同時過,如果各自單獨過橋的話,N人所需要的時間已知:而如果兩人同時過橋,所需要的時間就是走得比較慢的那個人單獨行動時所需的時間。問題是,如何設計一個方案,讓這N人盡快過橋,計算成績這N個人的最短過橋時間。
每組測試數據的第一行是一個整數N(1<=N<=1000)表示共有N個人要過河
每組測試數據的第二行是N個整數Si,表示這N個人過河所需要花時間。(0<Si<=100)
輸出
比如:有四個人甲乙丙丁,他們過河需要的時間分別為,甲:1乙:2丙:5所有人過河的最短時間悶?閨辰:10第一種辦法:最快的2個人先過橋,然后讓跑的最快的人來回去接剩下的人:先讓甲乙過去(2分鐘),甲回來(1分鐘),甲丙過去(5分鐘),甲回來(1分鐘),甲丁再過去(10分鐘),總共需要19分鐘就可以讓四個人都過去。第二種辦法:讓最慢的地2個人一起過橋,減少最慢的人在橋上的次數先讓甲乙過去(2分鐘),甲回來(1分鐘),丙丁過去(10分鐘),乙回來(2分鐘),甲乙再過去(2分鐘)總共需要17分鐘可以讓四個人都過去。。那么最慢的時間就是需要17分鐘!
樣例
輸入復制
4
1 2 5 10
輸出復制
17

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{int n;cin>>n;int a[1010] = {0};for(int i = 0;i<n;i++){cin>>a[i];}sort(a+0,a+n);int k1 = n-2;int k2 = n-1;int t = a[1];while(true){int t1 = a[0]+a[k2]+a[1]+a[1];int t2 = a[0]+a[k2]+a[0]+a[k1];if(t1<t2) t = t+t1;else t = t+t2;k1--;k1--;k2--;k2--;if(k1==0||k1==1) break;}if(k1==1) t = t+a[0]+a[3];cout<<t;return 0;
}

特殊密碼鎖
描述有一種特殊的二進制密碼鎖,由n個相連的按鈕組成(n<30),按鈕有凹/凸兩種狀態,用手按按鈕會改變其狀態。然而讓人頭疼的是,當你按一個按鈕時,跟它相鄰的兩個按鈕狀態也會反轉。當然,如果你按的是最左或者最右邊的按鈕,該按鈕只會影響到跟它相鄰的一個按鈕。
當前密碼鎖狀態已知,需要解決的問題是,你至少需要按多少次按鈕,才能將密碼鎖轉變為所期望的目標狀態,
輸入
兩行,給出兩個由0、1組成的等長字符串,表示當前/目標密碼鎖狀態,其中0代表凹,1代表凸。輸出
至少需要進行的按按鈕操作次數,如果無法實現轉變,則輸出impossible
樣例輸入
011
000
樣例輸出

1

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{string a,b;cin>>a>>b;int cnt = 0;for(int j = 0;j<10;j++){for(int i = 0;i<a.size();i++){if(a==b){cout<<cnt;return 0;}if(a[i]!=b[i]){if(i==0&&a[0]!=b[0]&&a[1]!=b[1]&&a[2]==b[2]){cnt++;a[0] = b[0];a[1] = b[1];i = i+2;}else if(i==0&&a[0]!=b[0]&&a[1]!=b[1]&&a[2]!=b[2]){cnt++;a[0] = b[0];a[1] = b[1];a[2] = b[2];i = i+3;}else{int ii = i+1;if(ii<a.size()){int i2 = (int)(a[ii]-48);i2 = (i2+1)%2;a[ii] = (char)(i2+48);}if(ii<a.size()){int i3 = (int)(a[ii+1]-48);i3 = (i3+1)%2;a[ii+1] = (char)(i3+48);}if(ii>=0){int i1 = (int)(a[ii-1]-48);i1 = (i1+1)%2;a[ii-1] = (char)(i1+48);}cnt++;}}}}cout<<"impossible";return 0;
}

#include <bits/stdc++.h>
using namespace std;
int main()
{int n,m;cin>>n>>m;int a[1010] = {0};for(int i = 0;i<n;i++){cin>>a[i];}if(n<=m){cout<<a[n-1];return 0;}int b[1010] = {0};for(int i = 0;i<m;i++){b[i] = a[i];}for(int i = m;i<n;i++){sort(b+0,b+m);b[0] = b[0]+a[i];}sort(b+0,b+n);cout<<b[n-1];return 0;
}

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

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

相關文章

YOLOv8_pose預測流程-原理解析[關鍵點檢測理論篇]

YOLOv8_seg的網絡結構圖在博客YOLOv8網絡結構介紹_CSDN博客已經更新了,由網絡結構圖可以看到相對于目標檢測網絡,實例分割網絡只是在Head層不相同,如下圖所示,在每個特征層中增加了KeyPoint分支(淺綠色),通過兩個卷積組和一個Conv卷積得到得到通道數為51的特征圖,51表示…

window環境下QT5開發環境的搭建

1、安裝visual Stusio 15 生成工具2012 2、安裝Visual studio Enterprise 2017 3、Visual studio Enterprise 2017安裝完成之后&#xff0c; 修改&#xff1a;選擇桌面調試&#xff0c;如下&#xff1a; 4、打開QTcreator&#xff0c;選項中&#xff0c;配置編譯器&#xff…

摸魚大數據——Hive基礎理論知識——Hive環境準備

Hive環境準備 1、shell腳本執行方式 方式1: sh 腳本 注意: 需要進入腳本所在目錄,但腳本有沒有執行權限不影響執行 方式2: ./腳本 注意: 需要進入腳本所在目錄,且腳本必須有執行權限 方式3: /絕對路徑/腳本 注意: 不需要進入腳本所在目錄,但必須有執行…

線程池,日志

所要用到的知識點&#xff1a; 多線程的創建 生產消費模型&#xff0c; 線程鎖 條件變量 代碼&#xff1a; 線程池日志

基于STC12C5A60S2系列1T 8051單片機的TM1638鍵盤數碼管模塊的數碼管顯示與單片機連接的按鍵的按鍵值的功能

基于STC12C5A60S2系列1T 8051單片機的TM1638鍵盤數碼管模塊的數碼管顯示與單片機連接的按鍵的按鍵值應用 STC12C5A60S2系列1T 8051單片機管腳圖STC12C5A60S2系列1T 8051單片機I/O口各種不同工作模式及配置STC12C5A60S2系列1T 8051單片機I/O口各種不同工作模式介紹TM1638鍵盤數碼…

C++面向對象程序設計 - 輸入和輸出

程序的輸入指的是文件將數據傳送給程序&#xff0c;程序的輸出指的是從程序將數據傳送輸出文件。 C的輸入和和輸出包括以下三個方面&#xff1a; 對系統指定的標準設備的輸入和輸出&#xff0c;即從鍵盤輸入數據&#xff0c;輸出到顯示器屏幕。以外存磁盤&#xff08;或光盤、…

初探 Spring Boot Starter Security:構建更安全的Spring Boot應用

引言 Spring Boot 作為 Java 生態系統下的熱門框架&#xff0c;以其簡潔和易上手著稱。而在構建 Web 應用程序時&#xff0c;安全性始終是開發者必須重視的一個方面。Spring Boot Starter Security 為開發者提供了一個簡單但功能強大的安全框架&#xff0c;使得實現身份驗證和…

從動態代理角度簡單理解Spring AOP

1. 概述 動態代理 是指在運行時&#xff0c;動態地創建目標類的代理對象&#xff0c;并對其中特定的方法進行攔截或增強的技術。這種技術主要用于在不修改目標類代碼的情況下&#xff0c;增強目標類的功能。 在Java中&#xff0c;動態代理主要基于Java的反射機制和接口來實現…

gdc2024:Raytracing in Snowdrop技術實現與性能優化策略

在今年的GDC&#xff08;游戲開發者大會&#xff09;的Advanced Graphics Summit上&#xff0c;關于Snowdrop引擎中光線追蹤技術的討論引起了廣泛關注。 一、光線追蹤全局照明的實現細節 屏幕空間追蹤&#xff1a; 屏幕空間追蹤從相機出發&#xff0c;對屏幕上的每個像素點生成…

DDL—表—數據類型—字符串類型相關語法

&#xff08;1&#xff09;表格可視化 普通字符串 類型大小描述CHAR0~255 bytes定長字符串&#xff0c;其表示即使你存儲一個字符&#xff0c;它也會占用你括號里個數的字符的空間&#xff0c;因為未占用的字符的其它空間會用空格進行補位。需要再后面跟一個參數&#xff1a;…

harmony 鴻蒙ArkUI動畫/交互事件開發常見問題(ArkTS)

ArkUI動畫/交互事件開發常見問題(ArkTS) 焦點事件onBlur/onFocus回調無法觸發(API 9) 問題現象 焦點事件onBlur/onFocus回調無法觸發 解決措施 焦點事件默認情況下需要外接鍵盤的Tab鍵&#xff0c;或方向鍵觸發&#xff0c;點擊觸發焦點事件需要添加焦點控制屬性focusOnTo…

Linux 監控USB硬盤插拔事件并自動掛載和卸載

定義udev規則來監控USB插拔事件。 一、在/etc/udev/rules.d目錄下隨意創建一個規則文件&#xff0c;例&#xff1a;99-usb-mount.rules KERNEL"sd[b-z]?",SUBSYSTEM"block",RUN"/usr/local/src/mountusb.sh %k $env{ACTION}"二、創建 /usr/lo…

基于arm64架構國產操作系統|Linux下的RTMP|RTSP低延時直播播放器開發探究

技術背景 2014年4月8日起&#xff0c;美國微軟公司停止了對Windows XP SP3操作系統提供服務支持&#xff0c;這引起了社會和廣大用戶的廣泛關注和對信息安全的擔憂。而2020年對Windows7服務支持的終止再一次推動了國產系統的發展。工信部對此表示&#xff0c;將繼續加大力度&a…

C++ 紅黑樹

目錄 1.紅黑樹的概念 2.紅黑樹的性質 3.紅黑樹節點的定義 4.紅黑樹的插入操作 5.數據測試 1.紅黑樹的概念 紅黑樹&#xff0c;是一種二叉搜索樹&#xff0c;但在每個結點上增加一個存儲位表示結點的顏色&#xff0c;可以是Red或Black。 通過對任何一條從根到葉子的路徑上各個…

C++基礎與深度解析 | 泛型算法 | bind | Lambda表達式

文章目錄 一、泛型算法1.泛型算法的分類2.迭代器分類 二、bind與lambda表達式1.bind2.lambda表達式 三、泛型算法的改進--ranges(c20) 一、泛型算法 C中的泛型算法是標準模板庫&#xff08;STL&#xff09;的一部分&#xff08;這里重點討論 C 標準庫中定義的算法&#xff0c;而…

【vue-cli搭建vue項目的過程2.x】

vue-cli搭建vue項目 vue-cli搭建vue項目安裝node安裝vue-cli腳手架并創建項目安裝 Ant Design Vue或element-ui(筆者使用Ant-design-vue組件&#xff0c;并全局引入)開發安裝三方庫包1、Package.json文件---引入如下package.json文件執行npm i或npm install命令即可下載如下依賴…

數據結構~~鏈式二叉樹

目錄 一、基本概念 鏈式存儲概念 二、鏈式二叉樹的結構 鏈式二叉樹結構 構建鏈式二叉樹 二叉樹的遍歷 二叉樹節點和高度等 二叉樹銷毀 三、鏈式二叉樹的練習 相同的樹 對稱二叉樹 另外一顆子樹 二叉樹前序遍歷 二叉樹遍歷 四、完整代碼 Tree.h Tree.c 五、總結 一…

Linux服務升級:Predixy 升級代理 Redis-cluster 集群

目錄 一、實驗 1.環境 2. 啟動Redis服務 3.Predixy 升級代理 Redis-cluster 集群 二、問題 1. Predixy進行set操作報錯 2.如何創建腳本啟動predixy 3.Redis代理對比 一、實驗 1.環境 &#xff08;1&#xff09;主機 表1 主機 系統版本節點軟件IP備注CentOS7.9Redis…

Springboot開發 -- Postman 調試類型詳解

引言 在 Spring Boot 應用開發過程中&#xff0c;接口測試是必不可少的一環。Postman 作為一款強大的 API 開發和測試工具&#xff0c;可以幫助開發者輕松構建、測試和管理 HTTP 請求。本文將為大家介紹如何在 Spring Boot 開發中使用 Postman 進行接口測試。 一、準備工作 安…

C/C++|malloc分配內存詳解

看本節前&#xff0c;希望讀者有linux內存分布的基本概念&#xff0c;可以閱讀這篇文章&#xff1a; 進程虛擬地址空間和函數調用棧 在本節中希望讀者可以一口氣閱讀完所有內容。 本博客內容全部來自小林coding&#xff1a;malloc 是如何分配內存的&#xff1f; 這里僅為筆記記…