0208牛客題解

2021-10-02 19:21:07 字數 2246 閱讀 8646

題意

給乙個m行n列的二維字元陣列,全都有 b r d組成 r 只能往右走,d只能往下走,b往右走往下走都行問 走到 n,m點總共有多少種走法

思路

dfs 超時了,迭代 假設 a[i][j]是走向 i,j點的放法和 ,那麼 i-1,j 往下走就到了ij 點 那麼如果這點能往下走 就能把通向i-1,j的步數加到 i,j裡 往右同理

**

#include

#include

#include

using

namespace std;

const

int mod =

1e9+7;

int a[60]

[60];

char s[60]

[60];

intmain()

cout<[m]%mod

}

題意

給乙個字串全都是由0 和1組成的,每個 1 和 另外乙個1 都會產生能量,產生的能量就是 下標差,例如101 產生的能量為 2 1011 總共產生的能量為 第乙個1與第二個1產生 2,第1個1與第三個1產生3,第二個與三個產生1加起來是6

思路

sum【i】表示第i個位置 的1產生的總能量,那麼第i 個位置產生的總能量就等於 第i-1個1與前面產生的能量加上 多了後面的1所引起的變化的能量,多了後面的1,那麼 所有1 就與後面的1 多拉出了 新出現的1 與 上乙個1的距離 ,多出來變化的能量就是 一的個數*新出現的1 與上乙個1的距離

可以分析出第i個』1』可以產生的能量,是i - 1個』1』與前面產生的能量,加上i和i-1的距離乘於前面』1』的個數(因為前面每個』1』與第i個1的距離與第i - 1的距離相比都增加了i和i-1的距離)

**

#include

#include

#include

using

namespace std;

const

long

long mod=

1e9+7;

long

long sum[

200000];

//sum[i]表示第i個點總共產生的能量

long

long s;

//記錄第i-1個點產生的能量

long

long p=-1

;//記錄1的個數

char a[

100010];

long

long ans;

int n;

intmain()

}long

long sum=0;

for(

int i=

0;i<=n;i++

) sum+

=sum[i]

%mod;

cout

}

題意

給你乙個數n 問i 到n k合因子數的個數 合因子數 就是 即是他的因子數也是合數

思路

先求1 到n 每個數有多少個 k 合因子數 ,方法就是 既不是素數 而且能被 這個數整除,然後在統計1到n中 因子數為k的個數 輸出

**

#include

using

namespace std;

bool b[

200000];

//用來判斷因數是否為質數true就不是 ,false 是

int d [

600]

;int sum[

200000];

bool a[

200000];

int n, m;

int ans[

200000];

voidfs(

int x)

else}}

//判斷 x 是幾合因子數

intmain()

for(

int i =

1; i <= n; i ++)fs

(i), ans[sum[i]]++

;while

(m --

)return0;

}

牛客50915題解

題目鏈結 可能需要許可權 題目大意 給你n個集合,每個集合中都有不超過32個數,總共詢問m次,每次詢問區間 l,r 中的所有集合,是否都有乙個異或和等於x的子集。n le 5e4,m le 5e4,所有數值域 0,2 322 232 難度 ag 分析 這個題很明顯,要求線性基的交,也就是說假設有a,...

牛客2 13題解

題意給兩字串,每次可以執行以下三種操作,1是將乙個字母變成乙個字母,另乙個就是從後面加乙個字母,再乙個就是從後面刪除乙個字母問最少可以轉換多少次讓這兩個字串相同 思路 這題其實特別簡單,就是先求兩個字串的長度差,這個長度差 肯定是轉換次數的一部分,用23其實都一樣,然後看 他們長度相同的那一段有多少...

牛客網 single number系列題解

給定乙個整型陣列,除乙個元素僅出現一次之外,其餘每個元素都出現兩次 三次 試著找出這個元素。此類題目,若每個元素出現i次,如果將問題的視角放在資料位上來看的話,實際上就是除那個 single number 所在的bits外,每個bit上出現資料的次數 i 0。1.兩次 a.常規思路 class so...