pku1456 Supermarket

2023-12-12 20:59
文章标签 supermarket pku1456

本文主要是介绍pku1456 Supermarket,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一道经典贪心题,用并查集来优化。

万恶的pku,这题pascal读入必须用seekeof判断是否读完数据,否则WA死你。。。

View Code
 1 program pku1456(input,output);
 2 var
 3     x,w        :array[0..11000] of longint;
 4     f        :array[0..11000] of longint;
 5     n        :longint;
 6     answer    :longint;
 7 procedure swap(var aa,bb:longint);
 8 var
 9     tt:longint;
10 begin
11     tt:=aa;
12     aa:=bb;
13     bb:=tt;
14 end;
15 procedure sort(p,q:longint);
16 var
17     i,j,m:longint;
18 begin
19     i:=p;
20     j:=q;
21     m:=w[(i+j)>>1];
22     repeat
23         while w[i]>m do
24             inc(i);
25         while w[j]<m do
26             dec(j);
27         if i<=j then
28         begin
29             swap(w[i],w[j]);
30             swap(x[i],x[j]);
31             inc(i);
32             dec(j);
33         end;
34     until i>j;
35     if i<q then sort(i,q);
36     if j>p then sort(p,j);
37 end;
38 function getfather(x:longint):longint;
39 begin
40     if f[x]=x then
41         exit(f[x]);
42     f[x]:=getfather(f[x]);
43     exit(f[x]);
44 end;
45 procedure init;
46 var
47     i:longint;
48 begin
49     read(n);
50     for i:=1 to n do
51         read(w[i],x[i]);
52     for i:=0 to 10000 do
53         f[i]:=i;
54 end;
55 procedure main;
56 var
57     i,xx:longint;
58 begin
59     sort(1,n);
60     answer:=0;
61     for i:=1 to n do
62     begin
63         xx:=getfather(x[i]);
64         if xx=0 then
65             continue;
66         inc(answer,w[i]);
67         f[xx]:=xx-1;
68     end;
69     writeln(answer);
70 end;
71 begin
72     while not seekeof do
73     begin
74         init;
75         main;
76     end;
77 end.

转载于:https://www.cnblogs.com/neverforget/archive/2012/04/19/2457257.html

这篇关于pku1456 Supermarket的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/485922

相关文章

poj 动态规划DP - 1456 Supermarket

题目大意:每一个商品有自己的价值和保存日期,必须在日期内卖出,要求算出在满足保存日期内所卖出商品的最大价值和。 背包问题的标准体现。我的做法是,第i件商品在保存日期的每一天内与前i件商品在那天卖出的商品作比较,大于则停止判断,开始判断第i+1件商品。 #include<stdio.h>#include<string.h>#include<stdlib.h>#define

CodeForces 815C :Karen and Supermarket 树上有依赖背包

传送门 题目描述 在回家的路上,凯伦决定到超市停下来买一些杂货。 她需要买很多东西,但因为她是学生,所以她的预算仍然很有限。 事实上,她只花了 b b b美元。 超市出售 N N N种商品。第 i i i件商品可以以 c i c_{i} ci​美元的价格购买。当然,每件商品只能买一次。 最近,超市一直在努力促销。凯伦作为一个忠实的客户,收到了 n n n张优惠券。 如果凯伦购买 i i i次商

Codeforces Round #419 (Div. 1) C. Karen and Supermarket(树上背包)

题目链接:http://codeforces.com/contest/815/problem/C 啊,怎么xjb剪剪枝就过了啊,最开始写了个一个5000^3的算法,然后就T了啊。。。。后来约束了一下背包的上界,就过了?题解说复杂度变成了O(n^2),考虑一下满二叉树,我感觉我这样是带着log的啊?竟然分析不出来复杂度了。。。 剩下的就是一个裸的树上背包了啊?敢写敢过? dp

CISCN-2018-Quals——supermarket分析

supermarket的题目分析 2020-02-01 11:26:17 by hawkJW 题目附件、ida文件及wp链接    这道题实际上我们大体一看,就可以发现是于堆相关的题目,正好用这道题来学习内存的分配机制。这个分配机制是经过查阅的资料综合一些实验,经过自己的理解得出来的,如果有错误,希望各位师傅谅解! 1. 程序流程总览 首先,按照惯例,我们看一下程序开启的保护

G - Supermarket

传送门:Supermarket 题意:有n件商品,每件商品的利润为p_i,销售日期的截止时间为d_i(即只能在d_i时间前销售该物品)。一天只能销售一件物品。问这n件商品的最大利润为多少 思路:具体见代码和注释。 代码: #include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namesp

攻防世界 Pwn supermarket

攻防世界 Pwn supermarket 1.题目下载地址2.checksec3.IDA分析4.exp 1.题目下载地址 点击下载 2.checksec 3.IDA分析 这里出现漏洞 我们需要先了解realloc realloc原型是extern void *realloc(void *mem_address, unsigned int newsize); 先

攻防世界PWN之Supermarket题解

Supermarket 首先,看一下程序的保护机制。看起来还不错 然后,我们用IDA分析一下 分析出程序大概有这样的一个结构体 typedef struct Node {      char name[16];      int price;      int description_size;      char *description;  } Node;     用