cf刷題日誌

2021-09-29 20:16:36 字數 2647 閱讀 6910

e1. send boxes to alice (easy version)

e2. send boxes to alice (hard version)

easy和hard都沒想出來怎麼貪心。

首先對於k

1k_1k1

​​,且k1∣

k2k_1|k_2

k1​∣k2

​,可以顯然得到結論1:把所有數組合為k

1k_1

k1​比k

2k_2

k2​步驟少。

在某一區間之和等於k時,要把這些數集中在乙個點m。

也就是把數集中在中位數的地方(假設每個數都是1,區間和sum表示sum個1)

#include
using

namespace std;

typedef

long

long ll;

ll a[

1000010];

ll read()

while

(ch>=

'0'&&ch<=

'9') s=s*

10+ch-

'0',ch=

getchar()

;return s*w;

}int

main()

if(sum<=1)

ll ans=

1999999999999999999

;for

(ll i=

2;i*i<=sum;

++i)

ans=

min(ans,cnt);}

if(sum>1)

ans=

min(ans,cnt);}

printf

("%lld"

,ans)

;}d. harmonious graph

可以把每乙個並查集模擬成一條線段,每個並查集的父節點都是編號最大的數,從1開始貪心(也可以想象成把線段按左端點公升序排列),1#include

using

namespace std;

const

int maxn=

2e5+7;

int fa[maxn]

;int

find

(int x)

intmain()

int x,y,fx,fy;

for(

int i=

1;i<=m;

++i)

}int ans=0;

for(

int i=

1;i<=n;

)++i;}}

printf

("%d"

,ans)

;}c. sweets eating

首先把糖按濃度排序,需要吃i個糖時,從第i個開始吃,這樣使濃度大的最先吃,最後的傷害肯定小。然後需要遞推的思想:吃i個糖時,第一天吃i-m到

到到i個糖

前面的i-m個糖會推遲一天吃,要再加一遍,遞推公式:ans

[i]=

ans[

i−m]

+pre

[i];

ans[i]=ans[i-m]+pre[i];

ans[i]

=ans

[i−m

]+pr

e[i]

;吃i個糖和i-m個糖花費的天數肯定不同,所以再加上一邊pre[i-m]是正確的。

#include

using

namespace std;

int a[

200010];

long

long ans[

200010];

long

long pre[

200010];

intmain()

sort

(a+1

,a+1

+n);

pre[0]

=0;for

(int i=

1;i<=n;

++i)

for(

int i=

1;i<=m;

++i)

for(

int i=m+

1;i<=n;

++i)

for(

int i=

1;i<=n;

++i)

cout<

<<

" ";

return0;

}

a. payment without change判斷一下,價值為n的和價值為1的組合,保證aa(aa<=a)*n不超過s的同時,能否用1補充得到s。

#include

using

namespace std;

intmain()

return0;

}

cf刷題日記 1 28 2 1

題意 給你一棵樹,每個節點上有若干餅乾,並且給出每個節點上吃一塊餅乾需要多少時間,同時給出走過一條邊所需時間。總時限為 tt,兩個人輪流進行操作 mitya從當前節點擊擇乙個子節點向下走,或者直接結束遊戲並往根回動吃餅乾 vasya割斷當前節點到其某個子節點的邊,或者什麼都不做。問mitya可以吃到...

CF刷題總結 CF706E鍊錶

這題目應該要秒做出來的。首先看到二維,又沒什麼思路就直接降維 考慮一維的情況,就是一段連續的和另一端連續的交換,最快的當然是鍊錶模擬了。所以考慮到二維中也不應該用陣列儲存,而是鍊錶表示。但是由於二維的話,不可能是簡單的鍊錶。所以考慮每乙個矩形和旁邊的關係。肯定就是四周的,但是只考慮單向,那就是2個方...

PAT刷題日誌

調整刷題策略 集中精力刷 演算法筆記 第四章的題目,夯實基礎。基礎實在太差,第八章之後的題目壓根就不會,做題的時候就是抄一遍 理解一遍 根本不能算作刷題,而是被題刷。之前乙個知識點一道題的方法根本就是走馬觀花,蜻蜓點水,抄一遍 就覺得會了,第二天就忘乾淨了 兩個字來形容 浮躁 十多天的時間裡參加了倆...