題意: n 只熊貓排成一排喝奶。每只熊貓至少分配 200ml 的牛奶,如果乙個熊貓比它旁邊的熊貓重,那麼就需要比旁邊的熊貓至少多喝 100ml 的牛奶。如果體重相同,分配的牛奶要相同。問最少需要分配多少的牛奶,才能滿足要求
思路:從左往右掃一遍,每只熊貓都和左邊的比。然後從右往左掃一遍,每只熊貓都和右邊的比。這樣就可以滿足條件了。
#include
.h>
#define ll long
long
using namespace std;
const
int maxn=
1e5+5;
int n;
int a[maxn]
,val[maxn]
;int
main()
cur=
10000
;for
(int i=n; i>=1;
--i)
else
if(a[i]
==cur)
else val[i]
=max
(val[i]
,200);
cur=a[i];}
int ans=0;
for(
int i=
1; i<=n;
++i) ans+=val[i]
;printf
("%d\n"
,ans)
;return0;
}
題目鏈結
題意:給定 n 塊地,m 塊錢,每塊地的**為 a
ia_i
ai 。你可以選擇乙個區間 [l,
r][l,r]
[l,r
] 買地,問有幾種不同的買法?
思路:二分。列舉起點 i,對每乙個 i 找到最右邊可以買的地方。中間的都是可以選擇的。
題意:給定中序和前序遍歷的結果,求一顆二叉樹的左檢視
思路:常規建樹操作。
題意:有 n 個等級,等級之間存在前置關係。假設 a 等級是 b 等級的前置,a 需要達到 s 分,才能達到 b 等級,並且會獲得 d 元的代金券。現有 m 個關係,k 個詢問,問 t 點能否直接到達,或者求最短(分數最少)的達到 t 的路徑。如果最短路相同,則輸出獲得代金券最多的路徑。
思路:
#include
.h>
#define ll long
long
using namespace std;
const
int maxn=
1010
,inf=
1e9;
int n,m;
struct egde
;vector
e[maxn]
;int in[maxn]
,dis[maxn]
,val[maxn]
,pre[maxn]
;int op[maxn]
,out[maxn]
;void
topo()
queue<
int>
q;for
(int i=
0; i<=n-1;
++i)
}while
(!q.
empty()
)else
if(dis[v]
==dis[u]
+w)}}}
}int
main()
);in[v]++;
out[v]++;
}topo()
;int k;
scanf
("%d"
,&k)
;for
(int i=
1; i<=k;
++i)
scanf
("%d"
,&op[i]);
bool ok=1;
for(
int i=
1; i<=k;
++i)
if(dis[op[i]
]==inf) ok=0;
if(ok)
}else
}return0;
}
7-1:左右掃一遍即可。一開始想的是以大小來貪心,會有點錯誤。。
7-2:二分結束之後,需要check一下,這個二分的結果 l 是否符合要求。
7-3:無
7-4:無
PAT(乙級)2023年秋季考試
模擬。include using namespace std int sum string s int main else 模擬。include using namespace std int func int n int res 0 while mul return res int main in...
2020 PAT秋季甲級考試 91分 記
好坑,我想的是找出單調序列,從小到大依次賦值,序列最大的點先放著,之後根據兩邊的值確定每個最大點處的值。最後乙個點wa 3分 code1 include using namespace std typedef long long ll int d 10005 int main if j n j if...
2019秋季PAT甲級考試心得
第一道題一共四個測試點,做了乙個小時,有兩個測試點沒過,得了12 20分 做題的時候遇到乙個問題,就是include之後,使用pow 10,n 計算報錯具有多個定義之類的 具體忘了怎麼說的了,sqrt也會報錯,有空的時候看看是什麼原因,上次pat考試也遇到了這個問題,而且後來忘了這回事,一直沒解決,...