t1 題意簡述:jzoj5461
description
x 城的商場中,有著琳琅滿目的各種商品。一日,小x 帶著小y 前來購物,小y 一共看中了n件商品,每一件商品**為pi。小x 現在手中共有m個單位的現金,以及k 張優惠券。小x 可以在購買某件商品時,使用至多一張優惠券,若如此做,該商品的**會下降至qi。
小x 希望盡可能多地滿足小y 的願望,所以小x 想要知道他至多能購買多少件商品。
input
第一行包含三個整數n,k,m,表示商品總數,小x 擁有的優惠券與現金總數。
接下來n行每行包含兩個整數pi,qi。
output
共一行包含乙個整數,表示小x 至多能購買的物品數。
data constraint
解題思路:貪心。
考慮先用完k張優惠券,只需將商品按***排序,依次判斷錢是否足夠,若是則ans++,否
則直接退出迴圈並輸出ans即可。
k張優惠券用完後若錢還未用完,則考慮用前面商品的優惠券買後面的商品。注意要把未買
的商品按原價重新排序。
只需把用了優惠券的商
品的原價與
***之差價放進乙個小根堆,
每次判斷:
此商品原價是否小於堆頂商品差價+此商品
***。若是則直接用原價買即可,
否則用堆頂商品差價+此商品***買即可。
注意有0張優惠券的情況,因此要特判佇列是否為空,若是則直接用原價買即可。
由於本蒟蒻及erkkierkko均認為把商品按原價重新排序的方法有誤,故歡迎大佬hack。
8.11 fix:
zinn大佬已hack掉以上演算法。具體資料請看討論。
附上sdfzsyq大佬的正確**:
#include#include#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
#define ll long long
using
namespace
std;
ll n,k,m,ans;
priority_queue
,greater>que;
struct
uiowar[
50001
];bool
cmp(uio x,uio y)
bool
cmp1(uio x,uio y)
intmain()
sort(war+1+k,war+1+n,cmp1);
for(ll i=k+1;i<=n;i++)
printf(
"%lld\n
",ans);
return0;
}
t2 題意簡述:jzoj5455
description
企鵝國的網咖們之間由網線互相連線,形成一棵樹的結構。現在由於冬天到了,供暖部門缺少燃料,於是他們決定去拆一些網線來做燃料。但是現在有k只企鵝要上網和別人聯機遊戲,所以他們需要把這k只企鵝安排到不同的機房(兩隻企鵝在同乙個機房會吵架),然後拆掉一些網線,但是需要保證每只企鵝至少還能通過留下來的網線和至少另乙隻企鵝聯機遊戲。
所以他們想知道,最少需要保留多少根網線?
input
第一行乙個整數t,表示資料組數;
每組資料第一行兩個整數n,k,表示總共的機房數目和企鵝數目。
第二行n-1個整數,第i個整數ai表示機房i+1和機房ai有一根網線連線(1≤ai≤i)。
output
每組資料輸出乙個整數表示最少保留的網線數目。
data constraint
對於30%的資料:n≤15;
對於50%的資料:n≤300;
對於70%的資料:n≤2000;
對於100%的資料:2≤k≤n≤100000,t≤10。
解題思路:乍一看是一道樹形dp...然而現實狠狠地打了你的臉...
這道題的難度遠不及樹形dp...只需要分兩步:
1.計算出有多少對企鵝能只用一根網線相連
2.若還有企鵝沒有連線就每只企鵝分配一根網線
就完了...
#include#include#include
#include
#include
#include
#define ll long long
using
namespace
std;
ll t,n,m,cnt,dot,line,head[
100001],vis[100001
];struct
uioedge[
200001
];void
add(ll x,ll y)
void
dfs(ll x,ll fa)
}}int
main()
dfs(
1,0);
if(dot>=m) printf("
%d\n
",line);
else printf("
%d\n
",m-line);
}return0;
}
2018 8 17提高B組模擬考試
今天,是乙個重要的日子。想什麼呢?我說的當然是那位大人的生日啦 t1 題意簡述 jzoj3223 description input output 輸出 q行,第 i行輸出對於第 i個詢問的答案。data constraint 解題思路 出題人居然已經懶到用河北2013年的省選題當考題了.而且重點是...
2017 8 15 提高B組模擬總結
alice要搭建平台,平台不能漂在空氣中,必須要有兩根柱子支撐,具體地說,每個平台的兩端必須由一根柱子支撐,柱子的另一端在地板或另乙個平台上。給你平台的放置位置 如下左圖所示 每個平台的位置由它的高度 離地面的垂直距離 和水平方向兩個端點的座標決定,每根柱子必須安放在離端點0.5個單位的位置,如下右...
2019 01 24 NOIP提高組 模擬 B 組
jzoj 3903 艱難的選擇 jzoj 3914 人品問題 後續求 i 1yxm od y sum yx mod y i 1y xmod y 那麼這道題其實高仿餘數求和的題目,my 題解 那麼首先這個式子可以改寫成xy i 1 y xi ixy sum y lfloor frac rfloor t...