hdu 5014 思維題 推理

2021-09-06 23:37:33 字數 1321 閱讀 5892

從小數開始模擬找方法規律,然後推廣,尤其敢猜敢嘗試,錯了一種思路繼續猜-----這是一種非常重要的方法啊

這道題還是從小數開始模擬,我是依據16以內的找的規律

依據2^k---2^k-1

2^k+1---2^k-2

...這樣陪下去

當2^k==n的時候,

從2^(k-1)按相同的方法配下去,

wa了非常久,是lower_bound用錯了 只是沒明確為啥  換成upper_bound也能夠ac....但還不明確為啥lower_bound  wa......

目的是找以乙個<=n的下標

int id=lower_bound(mi,mi+17,n)-mi;

if(mi[id]>n)id--;

跟int id=16;

while(mi[id]>n && id>=0)id--;

不一樣麼?後者ac 前者wa。。

以下是ac**

//#pragma comment(linker, "/stack:102400000,102400000")

#include #include #include #include #include #include #include #include #include #include using namespace std;

#define ls(rt) rt*2

#define rs(rt) rt*2+1

#define ll long long

#define ull unsigned long long

#define rep(i,s,e) for(int i=s;i>1;

const double eps = 1e-8;

const double pi = acos(-1.0);

const int inf = 100000000;

const int maxn = 1e5+50;

ll a[maxn],ans[maxn];

const ll mi[20]=;

ll n;

void print()

int main()

if(mi[id]>n)id--;

ll cnt=0,last=0,ls=n;

while(id>=0&& ls>=0)

ls=last-1;

id--;

}if(ans[0]==0 && ans[1]==1)swap(ans[0],ans[1]);

print();

}return 0;

}

hdu 5014 貪心 位處理

題意略。分析 通過發現規律貪心處理即可,從n開始反向遍歷到0,假設與數i匹配的是 xi 那麼i xi的二進位制位一定全1,並且二進位制位數等於i的二進位制位數 include include include include include const int n 1e5 100 using name...

hdu5014 異或 找區間

題意 給出乙個由 這 個數字組成的序列 要求你給出另乙個序列有 組成,讓他們一一對應 異或相加的值最大 輸出最大值,和你給出的序列 思路 異或完要得到最大值,就應該要二進位制是互補的,如 我們的最大值是 所以我們首先要找到和 互補的值是多少,例如找到是 和 互補 那麼 和 互補 和 也互補 類推 然...

HDU4357 數學思維題

題目 string change 把26個字母看成0 25對應的數字,當數慢慢增大時就對26取模,則字串有乙個總和s1,要使其變為末狀態的總和s2 那麼每交換一次s1要加2,故,s1 s2必須為偶數。兩個字母單獨處理,兩個以上時,以三個數字為例,a,b,c 為三個數,則有 a,b,c a,c 1,b...