2019計蒜客藍橋杯模擬賽三

2021-09-13 00:10:19 字數 1173 閱讀 3072

思路:一開始遞推推錯了,改用dfs

**:

#includeusing namespace std;

int ans;

void dfs(int x, int sum)

//記住i從x開始搜的這一剪枝,不僅僅可以提公升效率

//更重要的是可以保證搜尋出來的結果不會重複,是有序的

for(int i = x; i <= 10 - sum; i++)

}int main()

在蒜國,有 n 戶漁民住在海岸線上,整齊的排列成一條直線。每個漁民的房子我們用乙個座標 pi​ 來表示,每個漁民的活動半徑為 d。也就是說兩個距離小於等於 d 的房子,這兩戶漁民相互認識,是好友。

那麼在蒜國,有多少對漁民相互認識?

第一行輸入兩個整數 n,d。

第二行輸入 n 個整數 pi​,表示每個漁民房子的座標(存在座標相同的 pi​)。

輸出乙個整數,表示有多少對漁民相互認識。

對於 50% 的資料範圍:1≤n≤10^3。

對於 100% 的資料範圍:1≤n≤10^5,1≤d≤10^4,1≤pi​≤10^8。

樣例輸入複製

5 10

10 12 16 37 40

樣例輸出複製

4
思路:

一開始用暴力,雙重for迴圈列舉所有的答案

看了題解才知道我是個弟弟,這麼好用的upper_bound二分我竟然沒想到用

awsl

**:

#include#include#define ll long long 

using namespace std;

int n, d;

int p[101000]; //這題還有兩個坑點,乙個是陣列要開到1e6

ll sum; //第二個就是sum不用ll會爆

int main()

sort(p, p + n); //前提是有序

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

cout << sum << endl;

return 0;

}

計蒜客藍橋杯模擬賽心得

1.有趣的數字 我們稱乙個數是質數,而且數字 現了 55 的數字是有趣的。例如 5,59,457 都是有趣的,而 15,7 不是。求 1 到 100000 中有趣的數的個數。思路 其實很簡單,1 判斷是否為素數 2 位數是否含有5 注意點 剛開始以為要總數減去1,就是15這個數,後來才發現15不是素...

計蒜客藍橋杯省賽模擬五

a.了解進製轉換原理 b.熟練掌握求數字中各個位置數的方法 includeusing namespace std int check int a return re int main void printf lld n ans return 0 c.做法一 費馬小定理的運用,若a和b互質,則a的 b...

藍橋杯 計蒜客2017模擬賽A習題整理

輸出的不老練,還是分開自己在加一下吧。includeusing namespace std int main for int i 1 i 20 i printf lld n sum printf f s 0.5 return 0 沒啥說的,暴力就行了。includeusing namespace s...