給定兩個正整數a,x,統計滿足以下條件的bbb的個數:
1≤b≤x1 \le b\le x1≤b≤x
a∣b=a+ba|b=a+ba∣b=a+b
首先,我們知道兩個數在二進位制『或』的操作下,a|b=a+b 只有在a和b兩個數 對應的二進位制位上的數不同才行,例如 10 | 01 = 11 (2+1=3)其他的是不行的。再次,對於數的搜尋列舉用搜尋顯然是超時的 o(x),可以加上記憶化,用陣列儲存到達某個已經經過狀態的結果,最終的結果就是乙個數字dp的題。
#include#include#include#include#define ll long long
using namespace std;
const int maxn=32+10;
int dp[maxn],a[maxn],b[maxn];
int k,x;
int dfs(int pos,int lmt)
if(!lmt) dp[pos]=temp;
return temp;
}int main()
int j=0;
while(k)
int ans=dfs(pos,1);
cout將數字以及加號用字元矩陣的形式進行表示,對應關係如下:
以字元形式給出乙個表示式,請你計算結果,同時也請你將結果按照字元的形式輸出
這個題的話。。。就挺好的
賽後補題整理的,可能是覺得很長時間沒寫**了吧,還是慢慢寫了寫這個題,思路還算清晰吧
把每個數都給整理出來,然後再轉回到那種圖形表示的數,這裡建議使用乙個p,也就是把所有的數都打出來。
這樣的話,我們第一步中把 圖形表示的數取出來時候可以使用,第二步轉回去也可以用一下
#include#include#include#include#includeusing namespace std;
const int maxn=500+10;
string p[11][6];
int n;
int trans(string a)
;int dy[4]=;
int n,m;
set> >s;
void bfs(int x,int y)
); v.push_back();
mp[x][y]=0;
int mix=x,miy=y;
while(!q.empty())
);v.push_back();
mp[nx][ny]=0;
mix=min(mix,nx);miy=min(miy,ny);}}
for(int i=0;i>n>>m&&n+m)
cout定義乙個座標變換,座標 (x,y) 變換後變為 (x⊕y,∣x−y∣)(x \oplus y, |x-y|)(x⊕y,∣x−y∣)。
給定一片矩形區域,計算區域內有多少個整數點在經過有限次變換後變為 (0,0)。
結論是:題意裡面的點都是可以的,所以直接計數就可以了 (別忘了long long )
#include#include#include#include#define ll long long
using namespace std;
int main()
if(flag==0)
cout<
當時我的思路是從兩端找不相等的地方,藉此找出 兩個位置,這兩個位置應該是在最長非回文串中的距離中間點距離相等的對應位置,想的可能是太多了吧。
後續我的隊友餅寶,發現一共就三種情況,n n-1 0 看他簡簡單單的過了我心態都快崩了
這題大概開賽30分鐘我都沒過。。
#include#include#include#include#define ll long long
using namespace std;
int main()
else
ans=n-1;
if(flag==1)
cout<
else
cout<<0<
}
牛客小白月賽3
a 我們規定母音字母有a e i o u,並且規定半母音字母y也是母音字母。cwbc在學習英語,xhrlyb為了讓cwbc的記憶更加深刻,於是她讓cwbc把每個字串的所有字母都變成乙個恰好不大於它本身的小寫母音字母。可是cwbc比較貪玩,並且他想讓你幫他完成這個任務。聰明的你在仔細閱讀題目後,一定可...
牛客小白月賽6
c 挑花 dfs或bfs 桃花一簇開無主,可愛深紅映淺紅。題百葉桃花 桃花長在桃樹上,樹的每個節點有乙個桃花,調皮的htbest想摘盡可能多的桃花。htbest有乙個魔法棒,摘到樹上任意一條鏈上的所有桃花,由於htbest法力有限,只能使用一次魔法棒,請求出htbest最多可以摘到多少個桃花。第一行...
牛客小白月賽16
很容易得到n 1時,因為小石先手,所以小石一定輸 而n!1時,假設n 5 小石先取1 小陽取2 4 小石去3 小陽輸,無論怎樣小石都有贏的機會 includeusing namespace std int main 打表求出1 1e3之間的所有三角形每層之和 include define ll lo...