2019 藍橋杯省賽 B 組模擬賽(一)

2021-09-10 14:08:11 字數 1780 閱讀 1476

d. 結果填空:馬的管轄

e. **填空:lis

f. 程式設計:找質數

思路:因為時間複雜度的問題,o(n*n)的時間複雜度可能會超時,可以選擇的篩選素數的方法有埃氏篩法o(n*logn),尤拉篩法,這裡選的是尤拉篩法o(n)。

直接遍歷找兩個素數相加等於n(因為要求字典樹最小,所以不會超時)。

ac**:

#include//尤拉篩法用了最小質因數,減少了重複篩選的次數 

#include//相比於埃氏篩選

#include#define in(x) scanf("%d",&x)

#define out(x) printf("%d",x)

using namespace std;

const int maxn=1e6+5;

int vis[maxn]=,isp[maxn]=,go[maxn]=;

int len=0;//用來記數

void prime()

;//排序需要重新弄一下,因為前半元素翻倍後可能和後半元素相等

struct node//如果相等使得前半元素(翻倍後)排在前面,這樣只需逆序遍歷一下

pp[maxn];

bool cmp(node x,node y)//重新排序,使得如果有相同的標記為1的排在前面

} out(n-s);

}

j. 程式設計:蒜廠年會

在蒜廠年會上有乙個**,在乙個環形的桌子上,有 nnn 個紙團,每個紙團上寫乙個數字,表示你可以獲得多少蒜幣。但是這個遊戲比較坑,裡面竟然有負數,表示你要支付多少蒜幣。因為這些數字都是可見的,所以大家都是不會出現的賠的情況。

遊戲規則:每人只能抓一次,只能抓取一段連續的紙團,所有紙團上的數字和就是你可以獲得的蒜幣。

蒜頭君作為蒜廠的一員在想,我怎麼可以獲得最多的蒜幣呢?最多能獲取多少蒜幣呢?

因為年會是發獎,那麼一定有大於 000 的紙團。

輸入格式

第一行輸入乙個整數 nnn,表示有 nnn 個紙團。

第二行輸入輸入 nnn 個整數 aia_iai​,表示每個紙團上面寫的數字(這些紙團的輸入順序就是環形桌上紙團的擺放順序)。

輸出格式

輸出乙個整數,表示蒜頭君最多能獲取多少蒜幣。

資料範圍

樣例輸入複製

31 -2 1

樣例輸出複製

2題目**

2019 藍橋杯省賽 b 組模擬賽(一)

思路:有很多方法能寫,比如優先順序佇列

這裡提供一種較為簡便的方法,有兩種可能情況,

一種是1~n**現了最大,直接用o(n)的方法當輸入時找出最大值

還有就是跨越了尾部出現。為後者時,只需應總的和減去最小連續和,再與前一種情況比較大小即可。

**:

#include#include#include#include#define in(x) scanf("%lld",&x)

#define out(x) printf("%lld",x)

using namespace std;

typedef long long int ll;

const ll inf=0x3f3f3f3f;

const int maxn=1e6+5;

ll a[maxn]=;

int main()

smax=max(smax,sum-smin);

out(smax);

}

2019 藍橋杯省賽 B 組模擬賽 程式設計 好友

題目 如下 includeusing namespace std int a 100005 int main 這道題如果你用暴力每次回溯去計算次數,就算加乙個優化,還是不能通過全部資料,因為暴力的複雜度達到了o n 2 這道題要用到二分的思想,首先將所有漁民房子的座標從小到大排序,然後從第乙個開始尋...

2018 藍橋杯省賽 B 組模擬賽(一)

給你乙個序列,請你在其中求出一段最長嚴格上公升的部分,它不一定要連續。include includeusing namespace std int f 10000 b 10000 int lis int n res max res,f i return res 1 int main printf d...

2019 藍橋杯省賽 A 組模擬賽(一) 修建公路

題目 蒜頭國有 nn 座城市,編號分別為 0,1,2,3,n 1。編號為 x和 y的兩座城市之間如果要修高速公路,必須花費 x y個金幣,其中 表示二進位制按位或。吝嗇的國王想要花最少的 修建高速公路,使得所有城市可以通過若干條高速公路互相達到。現在請你求出 n 2019時,一共有多少不同的方案,能...