NOIP模擬賽 天文觀測

2021-08-07 10:31:28 字數 1195 閱讀 4110

題目描述

daisy找到了兩個天文記錄。它們都描述了相同的恆星系。系統中的每乙個行星都可以有兩個引數,每個引數都是乙個正整數:行星的大小和它圍繞恆星執行的距離。所有行星的軌道距離都是不同的,但是一些行星的大小可能相等。 

第乙個記錄是乙個帶有x個元素的陣列a。這些元素給出了該恆星系中某x顆行星的相對大小,即:a[0]: a[1] : ... : a[x-1]。陣列a所描述的行星是按它們與恆星的距離所確定的。(也就是說,下標小的元素對應於離恆星更近的行星。)

第二個記錄是乙個帶有y個元素的陣列b。這些元素給出了該恆星系中某y顆行星的相對大小,即:b[0]: b[1] : ... : b[y-1]。陣列b所描述的行星是按它們與恆星的距離所確定的。(也就是說,下標小的元素對應於離恆星更近的行星。)

請注意,被記錄的行星並不一定是連續的。例如,如果包含了行星p、q、r、s、t和u,那麼第乙個記錄可能會比較p、r和s,而第二個記錄則比較q、r、t和u。

我們假設兩個記錄都是正確的。請求出該恆星系中最小可能的行星總數。

輸入格式

第1行:1個整數x,表示a陣列元素的個數

第2行:x個整數,表示陣列a

第3行:1個整數y,表示b陣列元素的個數

第3行:y個整數,表示陣列b

輸出格式

第1行:1個整數,表示恆星系中最少的行星數量

輸入樣例 5

1 2 1 2 1 5

2 1 2 1 2

輸出樣例 6

樣例說明

根據行星的大小比較,可以發現,最少需要6顆行星

題解用兩個序列的總長減去可以相同的部分,兩個序列的最長上公升子串行就是可以相同的部分。但還有乙個問題:序列中的大小是相對的,可以同時擴大或縮小相同的倍數,因此列舉可能倍數相乘。時間複雜度o(n^4)。

#include#include#includeusing namespace std;

const int n=105;

int x, y, sum, arr[n][n];

int reala[n], realb[n], a[n], b[n];

int main()

sum=min( sum, x+y-arr[x][y] );

} printf( "%d\n", sum );

return 0;

}

noip模擬賽 密碼

表示沒看懂演算法3 問題描述 有壓迫,就有反抗。mored的寵物在法庭的幫助下終於反抗了。作為乙隻聰明的寵物,他打算把魔法使mored的魔法書盜去,奪取mored的魔法能力。但mored怎麼會讓自己的魔法書輕易地被盜取?mored在魔法書上設定了乙個密碼鎖,密碼鎖上有乙個問題。施以斯臥鋪魔法吧,你有...

NOIP模擬賽 老師

題目描述 一座有n層的教學樓裡有一些學生,第i 0 i n 層有studentsi個學生。你被給定了乙個數k,如果第i層有x個學生,那麼這一層需要 x k 個老師。你可以調整每個學生的樓層,但是每個學生至多只能調整一層,就是說第i層的學生只能去第i 1層 如果有的話 第i層 第i 1層 如果i 1 ...

NOIP模擬賽 分錢

題目描述 兩個人在街上撿到了一些錢,這些錢共有n張,他們等了很久也沒有等來失主,於是決定把錢平分。但錢可能無法平分。他們先把能夠平分的錢盡量先平分了,使得剩下不能平分的錢盡量少。這些不能平分的錢怎麼辦呢他?他們決定拿去賭場裡面賭一把。他們運氣太好了,那些不能平分的錢變成了雙倍,於是他們就把那個錢分了...