牛客OI周賽9 普及組

2021-09-20 03:55:25 字數 2877 閱讀 5946

目錄a題

b題 c題

小q挺喜歡擼串的,沒錯,字串!

你給小q送上了n個字串

對於乙個字串s,如果在小q擼掉(刪除)任意個字元之後,"nowcoder"是其子串,則這個字串s是可擼的。小q最近切題切到手軟,想擼串散散心。如果你給他呈現的字串是可擼的,他會很開心,否則他會很桑心。

輸入描述:

乙個整數n,表示字串的數量

接下來每行乙個字串sisi,表示小q看到的第i個字串

輸出描述:

輸出有n行,如果小q開心他會說qak,否則他會說qie

這題目很簡單,只要定義乙個j,相等則j++ 這樣乙個乙個往後檢索,如果最後j等於nowcoder的長度  則輸出qak

我定義了乙個字串陣列,結果長度m定義到10000000,太大了 然後就wa了 出結果後改到100000 就過了

#includeusing namespace std;

const int m = 100000;

string s[m];

int n;

int main()

for(int k = 0; k題目描述:

如果乙個數x滿足的|x|二進位制中1的個數》0的個數我們認為他是乙個好的數。乙個好的數的價值是1,而乙個不好的數的價值是-1

比如|2|=|−2|=2(10)=10(2),|10|=|−10|=10(10)=1010(2)|2|=|−2|=2(10)=10(2),|10|=|−10|=10(10)=1010(2)  

小l想知道乙個序列anan的價值是多少

輸入描述:

第一行有乙個整數n,表示序列anan的長度

第二行有n個整數,第i個整數aiai表示序列中第i個數是多少

輸出描述:

輸出僅一行,表示這個序列的價值是多少

這道題需要對二進位制有所了解,我一看到二進位制,就想到了bitset,但是我忽略了乙個很重要的因素,那就是有的數可能是負數,應該用abs變成絕對值再進行運算 還有一點就是數值範圍比較大  用int是不能全部通過的

以下是用bitset的ac**:

#include#include#includeusing namespace std;

const int m = 10000000;

long long n;

long long a[m];

long long ans = 0;

long long solve(long long m)

int main()

std::bitset<32> bit;

for(long long i = 0; ib)

ans++;

else

ans--;

}cout《以下是不用bitset的ac**:

乙個數除以2  則二進位制就是向前移動一位  二進位制末尾是0的話 則這個數十進位制是偶數 若是1的話 這個數十進位制就是奇數

則可通過這個不用bitset寫出 而且感覺更簡單

#include#includeusing namespace std;

const int m = 100000+9;

long long n;

long long a[m];

int main()

if(a1 > a0)

ans++;

else

ans--;

}cout《題目描述:自從上次小w被奶牛踹了之後,就一直對此耿耿於懷。

於是"cow"成為了小w的禁忌,而長得和"cow"很像的"owc"…凡是同時含有"c","w","o"的都進入了他的禁忌名單。

小g想給他送一幅幅長為n個字元的長詩,但是又怕觸犯他的禁忌。所以他決定要是詩**現了他的禁忌就寧可不送,可是...他一寫起詩來就忘了一切。小g想知道他有多少種的詩可能不觸犯他的禁忌

注:小g只會用小寫字母寫詩

輸入描述:一行乙個整數n表示詩的長度

輸出描述:一行乙個整數表示小g有多少種可能的詩不觸犯小w的禁忌,由於可能數也許過大,請對109+7取膜後輸出

這道題我所知道的有兩種做法,其中一種很容易看出來,就是用dp解,dp[i][j]代表長度為i的詩裡包含j種禁忌字母,我們可以算出n種長度j為0, 1, 2的dp大小 然後相加

dpac:

#includeusing namespace std;

const int m = 100000+9;

const long long mod = 1e9+7;

long long dp[m][3];

int main()

long long ans = (dp[n][0] + dp[n][1] + dp[n][2]) % mod;

cout《還有一種就是用容斥演算法和快速冪解出,c(3,2)*pow(25,n)%mod - c(3,1)*pow(24,n)%mod + c(3,0)*pow(23, n)%mod

容斥ac:

#includeusing namespace std;

const int m = 100000+6;

const long long mod = 1e9+7;

typedef long long ll;

ll quickpow(ll a, ll b, ll c)

a = a * a % c;

b>>=1;

} return ans;

}int main(){

int n;

cin>>n;

ll ans;

if(n < 3) ans = quickpow(26, n, mod);

ans = (3*quickpow(25, n, mod) - 3*quickpow(24, n, mod) + quickpow(23, n, mod)+3*mod)% mod;

cout<

牛客OI周賽14 普及組

菜的真實,普及都 ak 不掉.score 100 100 100 0 300 rank 16 看來 pj t1 考字串讀入成鐵上釘釘了?考慮開桶 a 記錄 ascii 為 i 的字元是否出現即可。includeusing namespace std typedef long long ll cons...

牛客OI周賽7 普及組

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

牛客OI周賽11 普及組 C Colorful

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 小a最近學習了最小生成樹的演算法,覺得非常神奇。他現在在研究乙個更加神奇的問題 給定nn個點mm條邊的無向圖,每條邊都有乙個顏色,請找到一棵生成樹,滿足顏色的種類盡...