第十二屆藍橋杯B組真題題解

2022-09-20 13:15:16 字數 2237 閱讀 6079

簡單的模擬題,換算好時間就行

#includeint main()

可以用dp做也可以直接母函式來做。都是比較模板的題hdu1709原題。寫文章-csdn部落格生成函式相關知識可以參考我之前寫的這篇來學習,重點在理解c1和c2在模擬多項式的作用。問題比這個簡單一點。稍微改改就行,不直接貼ac**了

#include using namespace std;

const int maxn=100005;

int n,c1[maxn],c2[maxn],num[105];

int elem[105];

int main()

for (int j=0;j<=sum;j++)

}vectorans;

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

if (!c1[i])ans.push_back(i);

printf("%lu\n",ans.size());

for (int i=0;i結合了二分和數學。首先楊輝三角對稱。所有右邊不考慮。對於左邊斜著看,由於每個斜行都是單調的,並且16行也是遞增的。所以可以結合二分和組合數來找到位置。注意從最多16層。因為c(32,16)大於1e9.只需要二分找到位置,再用公式計算它的具體位置即可

#include #include #include #define int long long

using namespace std;

int n;

int c(int a,int b)

bool check(int k)

if(c(r,k)!=n)return false;

else

}signed main()

}}

2016 天津oi省選的題的弱化版。可以直接用線段樹合併和分解做,對每個位置建立權值線段樹,維護下排序的過程即可,不過這題弱化了一些地方,所以不需要這麼麻煩的方法。觀察性質,分情況討論,用棧維護也可以通過這題。

#includeusing namespace std;

typedef long long ll;

typedef pairpii;

const int inf=0x3f3f3f3f,mod=1e9+7;

const int n=1e5+10;

int n,m,top,tot;

int rt[n],stk[n*40],op[n];

struct nodeq[n*40];

sets;

inline int newnode()

inline void del(int u);}

void upd(int &u,int l,int r,int p)

void print(int u,int l,int r,int f)

else

}void split(int x,int &y,int k,int f)

while(m--)

for(int x:s)

return 0;

}

乙個比較特殊的dp題,容易發現,所有間隔都可以插入括號,但是插入()形式的括號沒有意義,所以括號格式一定是)(的,那麼問題就變成了插入左括號的方案數乘插入右括號的方案數即可算出答案。所以我們只需要考慮左括號的插入方案數即可,定義dp[i] [j]的狀態為前i個括號,左括號比右括號多j個的方案數,那麼分情況討論,狀態轉移方程很容易列出

如果當前是左括號,f[i] [j]=f[i-1] [j-1];

如果當前是右括號,f[i] [j]=f[i-1] [j+1]+....f[i-1] [0]

對於第二種情況,可以用完全揹包的技巧,減少一維,從小到大列舉,至於右括號,翻轉序列,然後在改變括號,跑一邊就行。注意由於要求新增最少,所以答案是第乙個存在方案的,f[n] [j]。

#include using namespace std;

typedef long long ll;

const int mod = 1e9 + 7;

const int n = 5010;

char s[n];

ll f[n][n];

int n;

int get()

else

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

if(f[n][i])

return f[n][i];

}int main()

第十二屆藍橋杯校內模擬賽真題解析系列

第十二屆藍橋杯校內模擬賽真題解析系列 4 大學c組c c 問題描述 現在時間是 a 點 b 分,請問 t 分鐘後,是幾點幾分?輸入格式 輸入的第一行包含乙個整數 a。第二行包含乙個整數 b。第三行包含乙個整數 t。輸出格式 輸出第一行包含乙個整數,表示結果是幾點。第二行包含乙個整數,表示結果是幾分。...

第十二屆藍橋杯大賽軟體賽省賽

題解 includeusing namespace std int a 10 bool check int x return true int main cout答案 3181 題解 手動設定精度,小於該精度即認為相等 includeusing namespace std define db dou...

藍橋杯第十二屆第二期模擬賽

藍橋杯第十二屆第二期模擬賽 c 1 問題描述 請問在 1 到 2020 中,有多少個數既是 4 的整數倍,又是 6 的整數倍。答案提交 這是一道結果填空的題,你只需要算出結果後提交即可。本題的結果為乙個整數,在提交答案時只填寫這個整數,填寫多餘的內容將無法得分。答案 168 2 問題描述 小明要用二...