[POJ3253]Fence Repair

题目链接:http://poj.org/problem?id=3253

 

单调队列和优先队列(哈夫曼编码)分别实现:

 

 1 #include <algorithm>
 2 #include <iostream>
 3 #include <iomanip>
 4 #include <cstring>
 5 #include <climits>
 6 #include <complex>
 7 #include <fstream>
 8 #include <cassert>
 9 #include <cstdio>
10 #include <bitset>
11 #include <vector>
12 #include <deque>
13 #include <queue>
14 #include <stack>
15 #include <ctime>
16 #include <set>
17 #include <map>
18 #include <cmath>
19 
20 using namespace std;
21 typedef long long LL;
22 
23 const int maxn = 20010;
24 int n;
25 int ha, hb, rb, cnt;
26 LL a[maxn], b[maxn];
27 LL ans;
28 
29 int main() {
30     // freopen("in", "r", stdin);
31     while(~scanf("%d", &n)) {
32         memset(b, 0, sizeof(b));
33         ha = 0;
34         hb = 0;
35         rb = 0;
36         cnt = 0;
37         ans = 0;
38         for(int i = 0; i <n ; i++) {
39             scanf("%I64d", &a[i]);
40         }
41         sort(a, a+n);
42         while(++cnt < n) {
43             int sum = 0;
44             if(hb == rb || (ha < n && a[ha] < b[hb])) {
45                 sum += a[ha];
46                 ha++;
47             }
48             else {
49                 sum += b[hb];
50                 hb++;
51             }
52             if(hb==rb || (ha < n && a[ha] < b[hb])) {
53                 sum += a[ha];
54                 ha++;
55             }
56             else {
57                 sum += b[hb];
58                 hb++;
59             }
60             b[rb++] = sum;
61             ans += sum;
62         }
63         printf("%I64d\n", ans);
64     }
65     return 0;
66 }
单调队列0ms

 

 1 #include <algorithm>
 2 #include <iostream>
 3 #include <iomanip>
 4 #include <cstring>
 5 #include <climits>
 6 #include <complex>
 7 #include <fstream>
 8 #include <cassert>
 9 #include <cstdio>
10 #include <bitset>
11 #include <vector>
12 #include <deque>
13 #include <queue>
14 #include <stack>
15 #include <ctime>
16 #include <set>
17 #include <map>
18 #include <cmath>
19 
20 using namespace std;
21 typedef __int64 LL;
22 
23 const int maxn = 20010;
24 int n;
25 priority_queue<LL, vector<LL>, greater<LL> > pq;
26 LL ans;
27 
28 int main() {
29     // freopen("in", "r", stdin);
30     while(~scanf("%d", &n)) {
31         while(!pq.empty())    pq.pop();
32         ans = 0;
33         LL a;
34         for(int i = 0; i < n; i++) {
35             scanf("%I64d", &a);
36             pq.push(a);
37         }
38         while(n-- > 1) {
39             a = pq.top();
40             pq.pop();
41             a += pq.top();
42             pq.pop();
43             pq.push(a);
44             ans += a;
45         }
46         printf("%I64d\n",ans);
47     }
48     return 0;
49 }
STL优先队列32ms

 

转载于:https://www.cnblogs.com/kirai/p/4857069.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值