牛客oi周賽7

2021-09-11 06:39:09 字數 959 閱讀 7327

a-小睿睿的等式

theme:給定n、k(n%k==0,0<=n<=50000000;a,b>=0)表示開始時有根火柴,問滿足擺成a+b=n所使用的火柴數為n/k的等式有幾種(b+a=n與a+b=n看作一種),+、=各用兩根

數字擺法為:

solution:列舉。基本思路是用n減去擺n和+、=所用的火柴數得到擺a、b所需個數,然後從0到n/2遍歷等式得a,b,找到所需火柴數符合的。對於每個數字用%與/得到各個數為求。

注意:這題n可達5*10^7,在遍歷時利用求每個數火柴數函式求的話時間複雜度接近會達到10^8,超時無疑,所以利用動態規劃思想:cnt[i]=cnt[i/10]+l[i%10]無重複算出n以內數所需火柴數,這樣時間複雜度為n

#include#include#include#include#include#includeusing namespace std;

#define far(i,n) for(int i=0;i=0;--i)

typedef long long ll;

ll n,k;

int l[10]=;

int cnt[50000010];//記錄擺0~n所需的火柴數

//計算擺某個數所需的火柴數,用cnt陣列記錄時可不用這個函式

int countbar(int n)

return ans;

}int main()

//dp

far(i,10)

cnt[i]=l[i];

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

cnt[i]=cnt[i/10]+l[i%10];

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

printf("%d",res);

}

牛客OI周賽7 普及組

比賽鏈結 這題非常簡單,純模擬就可以過,不用解釋 如下 includeusing namespace std struct gg a 10005 int main cin m for int i 1 i m i cout 這題目看起來仍然簡單。但最開始我還以為要把所有區間全部列舉一遍。然後我打出暴力...

牛客OI周賽7 普及組 數糖紙

可能很多人要吐槽為什麼標題不是 救救blabla 了。第一行乙個正整數 n 表示共有 n 張糖紙。第二行共有 n 個正整數,第 i 個正整數表示第 i 張糖紙的顏色 ci 對於20 的資料 1 n 100 對於40 的資料 1 n 1000 對於100 的資料 1 n 1e6,0 ci 1e9乙個整...

牛客OI周賽7 普及組(A 救救貓咪)

某天,乙隻可愛的肥橘喵在路上走,突然遇到了乙個怪人,那怪人自稱pm6,小肥喵,這裡有一道水題,答對了我就請你吃狗肉,答錯了你就請我吃 喵咪瑟瑟發抖 qaq什麼題?pm6道 給你座標軸上的n個點,求出對於每個點,有多少個點的 x 座標和 y 座標都大於它。毫不意外,蠢肥喵完全不會這道題並面臨著被做成 ...