poj 1862 Stripies/優先隊列

原題鏈接:http://poj.org/problem?id=1862

簡單題,貪心+優先隊列主要練習一下stl大根堆

寫了幾種實現方式寫成類的形式還是要慢一些。。。

手打的heap:

1:

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<cmath>
 4 #include<iostream>
 5 class Solution{
 6 public:
 7     static const int Max_N = 110;
 8     int sz;
 9     double heap[Max_N];
10     inline void init(){
11         sz = 0;
12     }
13     inline void push(double x){
14         int i = sz++;
15         while (i > 0){
16             int p = (i - 1) >> 1;
17             if (heap[p] >= x) break;
18             heap[i] = heap[p];
19             i = p;
20         }
21         heap[i] = x;
22     }
23     inline double pop(){
24         double ret = heap[0], x = heap[--sz];
25         int i = 0;
26         while ((i << 1) + 1 < sz){
27             int a = (i << 1) + 1, b = (i << 1) + 2;
28             if (b < sz && heap[a] <= heap[b]) a = b;
29             if (heap[a] <= x) break;
30             heap[i] = heap[a];
31             i = a;
32         }
33         heap[i] = x;
34         return ret;
35     }
36 };
37 int main(){
38 #ifdef LOCAL
39     freopen("in.txt", "r", stdin);
40     freopen("out.txt", "w+", stdout);
41 #endif
42     int n;
43     double a, b;
44     Solution ans;
45     ans.init();
46     scanf("%d", &n);
47     while (n--){
48         scanf("%lf", &a);
49         ans.push(a);
50     }
51     while (ans.sz > 1){
52         a = ans.pop(), b = ans.pop();
53         ans.push(2 * sqrt(a * b));
54     }
55     printf("%.3lf", ans.pop());
56     return 0;
57 }
View Code

2:

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<cmath>
 4 #include<iostream>
 5 struct Node{
 6     static const int Max_N = 110;
 7     int sz;
 8     double heap[Max_N];
 9     Node() :sz(0){}
10     inline void push(double x){
11         int i = sz++;
12         while (i > 0){
13             int p = (i - 1) >> 1;
14             if (heap[p] >= x) break;
15             heap[i] = heap[p];
16             i = p;
17         }
18         heap[i] = x;
19     }
20     inline double pop(){
21         double ret = heap[0], x = heap[--sz];
22         int i = 0;
23         while ((i << 1) + 1 < sz){
24             int a = (i << 1) + 1, b = (i << 1) + 2;
25             if (b < sz && heap[a] <= heap[b]) a = b;
26             if (heap[a] <= x) break;
27             heap[i] = heap[a];
28             i = a;
29         }
30         heap[i] = x;
31         return ret;
32     }
33 }ans;
34 int main(){
35 #ifdef LOCAL
36     freopen("in.txt", "r", stdin);
37     freopen("out.txt", "w+", stdout);
38 #endif
39     int n;
40     double a, b;
41     scanf("%d", &n);
42     while (n--){
43         scanf("%lf", &a);
44         ans.push(a);
45     }
46     while (ans.sz > 1){
47         a = ans.pop(), b = ans.pop();
48         ans.push(2 * sqrt(a * b));
49     }
50     printf("%.3lf", ans.pop());
51     return 0;
52 }
View Code

3:

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<cmath>
 4 #include<iostream>
 5 const int Max_N = 110;
 6 double heap[Max_N];
 7 int sz = 0;
 8 void push(double x){
 9     int i = sz++;
10     while (i > 0){
11         int p = (i - 1) >> 1;
12         if (heap[p] >= x) break;
13         heap[i] = heap[p];
14         i = p;
15     }
16     heap[i] = x;
17 }
18 double pop(){
19     double ret = heap[0], x = heap[--sz];
20     int i = 0;
21     while ((i << 1) + 1 < sz){
22         int a = (i << 1) + 1, b = (i << 1) + 2;
23         if (b < sz && heap[a] <= heap[b]) a = b;
24         if (heap[a] <= x) break;
25         heap[i] = heap[a];
26         i = a;
27     }
28     heap[i] = x;
29     return ret;
30 }
31 int main(){
32 #ifdef LOCAL
33     freopen("in.txt", "r", stdin);
34     freopen("out.txt", "w+", stdout);
35 #endif
36     int n;
37     double a, b;
38 
39     scanf("%d", &n);
40     while (n--){
41         scanf("%lf", &a);
42         push(a);
43     }
44     while (sz > 1){
45         a = pop(), b = pop();
46         push(2 * sqrt(a * b));
47     }
48     printf("%.3lf", pop());
49     return 0;
50 }
View Code

4:

std::priority_queue<double> ans
 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<cmath>
 4 #include<queue>
 5 #include<iostream>
 6 int main(){
 7 #ifdef LOCAL
 8     freopen("in.txt", "r", stdin);
 9     freopen("out.txt", "w+", stdout);
10 #endif
11     int n;
12     double a, b;
13     scanf("%d", &n);
14     std::priority_queue<double> ans;
15     while (n--){
16         scanf("%lf", &a);
17         ans.push(a);
18     }
19     while (ans.size() > 1){
20         a = ans.top(), ans.pop();
21         b = ans.top(), ans.pop();
22         ans.push(2 * sqrt(a * b));
23     }
24     printf("%.3lf", ans.top());
25     return 0;
26 }
View Code

?

轉載于:https://www.cnblogs.com/GadyPu/p/4456873.html

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

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

相關文章

java url下載ics_使用Microsoft Graph API處理外部(Internet / .ics)日歷URL

在新的Graph API中&#xff0c;是否可以根據外部.ics日歷網址為用戶創建新日歷&#xff1f;我d like to do is to use a daemon to inject a link to an external calendar into the list of calendars a user has if they don已經有了這樣一個鏈接 . 這將有效地復制用戶可以在…

命令行生成jar文件

1.打開cmd&#xff0c;進入編譯完后所有類的當前目錄 命令行 jar -cvf javaname.jar *.class 這時已經生成了 javaname.jar 不過如果有多個類&#xff0c;雙擊打不開 2.解壓javaname.jar 進入META-INF&#xff0c;編輯MANIFEST.MF: 尾行寫入Main-Class:&#xff08;&…

Github鏈接地址

https://github.com/kzj1/test轉載于:https://www.cnblogs.com/lalal/p/4456923.html

java foreach和for循環區別_java相關:老生常談foreach(增強for循環)和for的區別

java相關&#xff1a;老生常談foreach(增強for循環)和for的區別發布于 2020-8-18|復制鏈接下面小妖就為大家帶來一篇老生常談foreach(增強for循環)和for的區別。小妖覺得挺不錯的&#xff0c;現在就分享給大家&#xff0c;也給大家做個參考。一起跟隨小妖過來看看吧首先說一下f…

關于事件冒泡和捕獲的問題

由于習慣于jquery的方便操作&#xff0c;往往讓我們慢慢淡忘了原生js應有的功能和屬性&#xff0c;今天重溫一下事件冒泡和捕獲問題。 冒泡&#xff1a;從內向外&#xff0c;如&#xff1a;div > body > html (不同瀏覽器稍有不同) 捕獲&#xff1a;從外向內&#xff0c;…

root無法運行命令解決辦法

今天運行一個命令wget(wg再使用tab鍵無法使用)&#xff0c;如下提示 -bash: /usr/bin/wget: 權限不夠 [rootwww /]# ls -Z /usr/bin/wget-rw-r--r--. root root system_u:object_r:bin_t:s0 /usr/bin/wget發現沒有執行權限 chmod x /usr/bin/wget -bash: /usr/bin/wget: …

java類編寫sql_用JavaBean編寫SQL Server數據庫連接類

以下為引用的內容&#xff1a;//類conn.db.conndb.javapackage conn.db;import java.sql.*;public class conndb {Connection conn;ResultSet rs;private int count;public conndb() {try {Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");} catch (Exception ex) {}…

ASP.NET中Request.ApplicationPath、Request.FilePath、Request.Path、.Request.MapPath、

1.Request.ApplicationPath->當前應用的目錄 Jsp中, ApplicationPath指的是當前的application(應用程序)的目錄,ASP.NET中也是這個意思。 對應的--例如我的服務器上有兩個web應用域名都是mockte.com 一個映射到目錄mockte.com/1/ 另一個影射到 http://mockte.com/2/ …

java timezone id_java.util.TimeZone.setID()方法實例

全屏setID(String ID)方法被用于設置時區ID。這不會改變的時區對象中的任何其他數據。聲明以下是java.util.TimeZone.setID()方法的聲明。public void setID(String ID)參數ID--這是新的時區ID。返回值NA異常NA例子下面的例子顯示java.util.TimeZone.setID()方法的使用package …

c語言中賦值截斷

在c語言中進行變量賦值的時候&#xff0c;如果將字節多的數據類型賦給一個占字節少的變量類型&#xff0c;會發生“截斷”。 發生這種情況的原因是&#xff1a;在賦值過程中只將占字節較長的變量的地位賦給占字節較少的變量。 如&#xff1a; int i345&#xff1b; char c‘…

創建一個自己的GitHub,創建自己的開源項目

作者是一個大學在讀學生&#xff0c;自己在平時的學習中&#xff0c;GitHub上的開源項目給自己提供了很大的幫助。GitHub是目前使用最廣泛的分布式項目管理軟件&#xff0c;GitHub上面托管了許多非常優秀的開源項目。我覺得每一個從事IT行業都應該有一個屬于自己的GitHub。下面…

設計模式之行為型(1)-職責鏈模式(Chain)

設計模式之行為型(1)-職責鏈模式(Chain)轉載于:https://www.cnblogs.com/lihuali/p/7493415.html

php apache win7,win7安裝apache+php

轉自百度經驗1 系統環境與軟件1php5.5.6 下載鏈接&#xff1a;http://windows.php.net/download/#php-5.5推薦 V11 x64&#xff0c;也就是64bit的。2apache2.4&#xff0c;下載鏈接&#xff1a;http://www.apachelounge.com/download/同樣是推薦 V11&#xff0c;64位的。3前面提…

photoshop 常用快捷鍵大全

一、文件新建 CTRLN打開 CTRLO 打開為 ALTCTRLO關閉 CTRLW保存 CTRLS 另存為 CTRLSHIFTS另存為網頁格式 CTRLALTS打印設置 CTRLALTP頁面設置 CTRLSHIFTP打印 CTRLP退出 CTRLQ 二、編輯撤消 CTRLZ向前一步 CTRLSHIFTZ向后一步 CTRLALTZ退取 CTRLSHIFTF剪切 CTRLX復制 CTRLC合并…

Ubuntu如何安裝setuptools

首先百度setuptools&#xff0c;基本第一個就是官網的結果然后我們看到有兩個這樣的文件第一個不用想了&#xff0c;如果你要使用第一個的話&#xff0c;還要首先安裝wheel。我們這里直接用鼠標選中第二個zip文件&#xff0c;然后右鍵&#xff0c;復制鏈接。然后在我們的Ubuntu…

Spring MVC 文件上傳下載

本文基于Spring MVC 注解&#xff0c;讓Spring跑起來。 (1) 導入jar包&#xff1a;ant.jar、commons-fileupload.jar、connom-io.jar。 (2) 在src/context/dispatcher.xml中添加 <bean id"multipartResolver" class"org.springframework.web.multipart.comm…

.php y=mp4,PHP輸出MP4視頻流函數

function GetMp4File($file) {$size filesize($file);header(“Content-type: video/mp4”);header(“Accept-Ranges: bytes”);if(isset($_SERVER[‘HTTP_RANGE’])){header(“HTTP/1.1 206 Partial Content”);list($name, $range) explode(“”, $_SERVER[‘HTTP_RANGE’]…

JMeter學習(四)參數化、斷言、集合點

1.參數化 錄制腳本中有登錄操作&#xff0c;需要輸入用戶名和密碼&#xff0c;假如系統不允許相同的用戶名和密碼同時登錄&#xff0c;或者想更好的模擬多個用戶來登錄系統。 這個時候就需要對用戶名和密碼進行參數化&#xff0c;使每個虛擬用戶都使用不同的用戶名和密碼進行訪…

Windows在安裝builtwith時遇到問題

builtwith是一個十分有用的工具&#xff0c;可以用來檢查網站構建的技術類型。但是我在安裝這個包的時候出現了問題百度之后發現是編碼的問題&#xff0c;應將編碼格式設置為gbk具體過程就是&#xff1a;首先要找到Python路徑下的Lib文件夾的mimetypes.py文件。然后在import下面…

php class使用方法,php的類使用方法問題

php的類使用方法&#xff1a;1、類通過class關鍵字來定義&#xff1b;2、訪問對象的時候&#xff0c;屬性名前不要加【$】&#xff1b;3、通過【->】訪問修改類內成員變量&#xff1b;4、函數的返回值通過return來返回。php的類使用方法&#xff1a;1.語法說明和其他語言一樣…