2023年NOIP普及組複賽題解

2022-05-24 08:36:12 字數 1769 閱讀 8568

題目涉及演算法:

簡單列舉。

遍歷一遍,找到 \(a[i] + b[i]\) 最大的那個座標即可。

實現**如下:

#include using namespace std;

int a[8], b[8], id;

int main()

cout << id << endl;

return 0;

}

貪心。這裡告訴我們乙個條件是「假設這些植株下的花生個數各不相同」,所以我們可以直接按照花生個數從大到小進行排列,但是每乙個元素同時需要記錄他的行號、列號和花生個數。

對於排好序的元素,從路邊到第 \(0\) 棵植株(假設座標從 \(0\) 開始)的時間是確定的,就是第 \(0\) 棵植株的行號,採摘好第 \(n-1\) 棵植株之後回到路邊的時間也是可以確定的,就是 \(1\) ;

而從第 \(i\) 棵植株到第 \(i+1\) 棵植株的時間有兩種過渡方式:

從第 \(i\) 棵植株直接走到第 \(i+1\) 棵植株並採摘,花費的時間是 \(|x_i-x_| + |y_i+y_| + 1\) (這裡,\(x_i\) 表示第 \(i\) 棵植株的行號,\(y_i\) 表示第 \(i\) 棵植株的列號, \(|a|\) 表示 \(a\) 的絕對值);

從第 \(i\) 棵植株跳回路邊,然後再從路邊走到第 \(i+1\) 棵植株,並採摘,花費的時間是 \(x_i + x_ + 1\) 。

而我應該取兩者的較小值。\(\rightarrow\) 這就是此題貪心的精髓。

後來我發現我想多了,這個題目是假設猴子在取花生的過程中不會回到大路上的,有些同學在思考是否可能在中間回到大路上,因為題目沒說在大路上移動要花時間,所以有可能中途出來再進去摘的花生更多。

所以我們只考慮上述第2個條件就可以了~

然後這裡有乙個限定時間 \(k\) ,我們只需要確定在限定時間內能夠以上述方案摘多少株就可以了。

實現**如下:

#include using namespace std;

const int maxn = 440;

struct node a[maxn];

int n, m, k, cnt, dis, ans;

bool cmp(node a, node b)

int main()

}sort(a, a+cnt, cmp);

for (int i = 0; i < cnt; i ++)

cout << ans << endl;

return 0;

}

這道題目就是用遞迴實現區間遍歷。

我可以使用動態規劃來實現區間和,然後遞迴,或者套線段樹模板。

這裡僅介紹使用使用動態規劃+遞迴實現,**如下:

#include using namespace std;

const int maxn = (1<<10|1);

char ch[maxn+10];

int tree[maxn<<2], n, m, sum[maxn];

void solve(int l, int r, int n)

int tmp = sum[r] - sum[l-1];

if (tmp == (1const int maxn = 10010;

int n, m, a[maxn];

int main()

cout << endl;

return 0;

}

NOIP普及組複賽題集

題目描述 牛倌被通知,他的乙隻牛逃逸了!所以他決定,馬上出發,盡快把那只牛抓回來 他們都站在數軸上 牛倌在n 0 n 100000 處,牛在k 0 k 100000 處 約翰有兩種辦法移動,步行和瞬移 步行每秒種可以讓約翰從x處走到x l或x l處 而瞬移則可讓他在1秒內從x處消失,在2x處出現 然...

NOIP 2004 普及組 複賽 FBI樹

noip 2004 普及組 複賽 fbi樹 1.閱讀題目,還有些不知所云。2.對樣例進行手動模擬,弄明白題意了。fbi樹如下圖所示 ff f f b f i i b b b i b i i 1 t的根結點為r,其型別與串s的型別相同 此句是核心中的核心,也即f b i三種根節點。3.接下來程式設計實...

2023年NOIP普及組複賽題解

題目涉及演算法 入門題,直接開乙個迴圈遍歷一下就可以了。實現 如下 include using namespace std int n,ans 0 int main cout ans endl return 0 基礎題,直接遍歷一下地圖 對於每個格仔,統計一下周圍8個格仔 就可以實現地雷的統計。實現...