2023年NOIP普及組複賽題解

2022-05-24 08:36:08 字數 1876 閱讀 4082

題目涉及演算法:

入門題,直接開乙個迴圈遍歷一下就可以了。

實現**如下:

#include using namespace std;

int n, ans = 0;

int main()

cout << ans << endl;

return 0;

}

基礎題,直接遍歷一下地圖(對於每個格仔,統計一下周圍8個格仔)就可以實現地雷的統計。

實現**如下:

#include using namespace std;

const int maxn = 110;

int n, m, c[maxn][maxn];

char maze[maxn][maxn];

int dir[8][2] = ;

inline bool in_map(int x, int y)

int main()

}for (int i = 0; i < n; i ++)

cout << endl;

}return 0;

}

這道題目是一道簡單的數學推導。

首先,因為一共有m種顏色,並且我們只有具有相同奇偶性的一對數才能湊成x和z,所以我們將所有從1到n的編號劃分進 \(2 \times m\) 個集合,對於編號 \(i\):

然後我們去遍歷每乙個集合。

如果該集合的元素個數是 \(sz\) ,並且我們設該集合中所有元素數值和 \(s = \sum number[i]\) ,則我們遍歷集合中的每個元素 \(x\) ,並將

\((sz-1) \times x \times number[x] + x \times (s - number[x])\)

的結果加進我們的答案中。

實現**如下:

#include using namespace std;

const int maxn = 200020;

const long long mod = 10007;

vectorvec[maxn];

int n, m, color[maxn];

long long ans, num[maxn], sum[maxn];

int main()

for (int i = 1; i <= n; i ++) cin >> color[i];

for (int i = 1; i <= n; i ++)

for (int i = 1; i <= 2*m; i ++)

}cout << ans << endl;

return 0;

}

這道題目是貪心,貪心的思想是:

選擇 \(m\) 戶人家的最大疲勞值應該是以下兩種方案中的較大值:

所以,我們可以給 \(n\) 戶人家按照 \(a[i]\) 從大到小金星排序。

然後在開三個陣列(這3個陣列用到了dp來進行求解):

然後我們要在 \(n\) 戶人家裡面選擇 \(m\) 戶人家訪問的最大疲勞值就是sum[m] + 2 * maxs[m]suma[m-1] + 2 * maxs[i]的較大值。

實現**如下:

#include using namespace std;

const int maxn = 100100;

int n, s[maxn], a[maxn], idx[maxn], suma[maxn], maxs[maxn], maxsa[maxn];

bool cmp(int i, int j)

int main()

NOIP普及組複賽題集

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

2023年 NOIP普及組 複賽 標程 1 金幣

金幣 題目描述 國王將金幣作為工資,發放給忠誠的騎士。第一天,騎士收到一枚金幣 之後兩天 第二天和第三天 每天收到兩枚金幣 之後三天 第 四 五 六天 每天收到三枚金幣 之後四天 第 七 八 九 十天 每天收到四枚金幣 這種工資發放模式會一直這樣延續下去 當連續n天每天收到n枚金幣後,騎士會在之後的...

2023年NOIP普及組複賽題解

題目涉及演算法 這道題目是一道基礎的模擬題,只需要模擬將數字進行翻轉就可以了,注意 0 和 負數。實現 如下 include using namespace std void solve int num if num 0 int t 0 while num 0 cout t endl int n i...