鄭輕邀請賽 G 密室逃脫

2021-09-28 09:54:53 字數 1319 閱讀 3882

【題目鏈結】:

【題意】

【題解】

考慮每乙個二進位制數的最高位->第i位;

肯定是1(這裡不討論0的情況)

然後對於其餘n-1個二進位制數;

如果它們在第i位和它一樣->也是1的話,那麼異或結果是0

那麼不管第i位後面的位怎麼變;它肯定是變小的->我們要求的

如果它們在第i為和它不一樣->即為0,那麼異或結果是1;

則它肯定是變大了;

綜上 我們只要確定每個數的最高位所在的位置i

然後確定其他數字在第i位上是為1的數的個數cnt;

然後加上cnt就好;

【number ofwa】

0 【完整**】

#include 

using

namespace

std;

#define lson l,m,rt<<1

#define rson m+1,r,rt<<1|1

#define ll long long

#define rep1(i,a,b) for (int i = a;i <= b;i++)

#define rep2(i,a,b) for (int i = a;i >= b;i--)

#define mp make_pair

#define ps push_back

#define fi first

#define se second

#define rei(x) cin >> x

#define pri(x) cout << x

#define ms(x,y) memset(x,y,sizeof x)

typedef pair pii;

typedef pairpll;

const

int dx[9] = ;

const

int dy[9] = ;

const

double pi = acos(-1.0);

const

int n = 1e6+100;

int t,n,m,top[n],tot[n];

ll ans;

string s;

int main()}}

rep1(i,1,n)

ans+=tot[top[i]];

cout

<< ans << endl;

}//printf("\n%.2lf sec \n", (double)clock() / clocks_per_sec);

return

0;}

鄭輕邀請賽 D hipercijevi

題目鏈結 題意 題解 把那個管泛化成乙個點 然後把每乙個在管裡面的點都和它相連 然後從起點跑bfs就好 最後輸出dis n 2 因為是點的數目所以要加 然後每個點都要經過乙個泛化的點再到其他點 所以肯定邊的數目是偶數個 用了ios sync with stdio 0 之後puts不能用 number...

鄭輕邀請賽 2266 number 集合

給定n,問有多少數對 x,y滿足 x,y 1,n x y x,y 現的 0,9 的數碼種類相同輸入 乙個整數n n 107 輸出輸出乙個數即答案 樣例輸入 樣例輸出 提示 1,11 2,22 12,21 下面 感覺比較優了,但還是會超時,有新思路會再更新 include define ll long...

湘潭邀請賽A

哥德 猜想 任一大於2的偶數,都可表示成兩個素數之和。是世界上最著名的未解問題之一,但是下面的反哥德 猜想 任一大於11的奇數,都可表示成兩個合數之和。確很容易證明。定義反哥德 分拆數g n 表示將大於11的奇數n分解為兩個合數之和的方案數。再定義sg n sum 即所有不大於n的奇數的反哥德 分拆...