1. 程式人生 > >牛客網-2018 美團 CodeM 程式設計大賽-初賽 B 輪-3-低位值

牛客網-2018 美團 CodeM 程式設計大賽-初賽 B 輪-3-低位值

ACM模版

描述

這裡寫圖片描述

題解

一個規律題。預設,l0,考慮取 r,首先,如果有非最高位 1 存在 x 個,有第二個部分公式得答案加上 x,然後根據第三個公式得答案加 1 並且獲取一個新的二進位制串 r(全是 1),以此類推,直到 r=0

對於 r 我們需要考慮兩種情況,因為上述迴圈的第一次取的 r 不一定全是 1。如果 n 二進位制存在至少兩個一,例如 100100110,那麼從高位開始查詢到第二個 1,假如說第一個 1 的權值是 2k,第二個 1 的權值是 2k,然後取 r2k+2k1,此時二進位制是

100011111,也就是說初始存在 x=k 個非最高位 1,這是第一種情況;我們還需要考慮一下 rn 的情況,計數有多少個非最高位 1,然後在這兩種情況中取最優。這樣我們就處理完第一輪的運算了,後續的類推,都保證是全 1 二進位制,所以我們可以通過預處理來確定不同長度的全 1 二進位制通過多少次運算可以得到 r=0 的狀態。

這個題仔細模擬一下,很容易找到規律的,一開始以為是數論題,著實有些虛。

程式碼

#include <iostream>
#include <string>

using namespace std;

const
int MAXN = 2e4 + 10; string num; long long temp[MAXN] = {0, 1, 1}; void init() { for (int i = 3; i < MAXN; i++) { temp[i] = temp[i - 1] + i - 1; } } int main(int argc, const char * argv[]) { init(); cin >> num; long long ans = 0; for (int i = 1; i < num.length(); i++) { if
(num[i] == '1') { ans = (num.length() - 1) - i; break; } } long long cnt = 0; for (int i = 1; i < num.length(); i++) { if (num[i] == '1') { cnt++; } } ans = max(ans, cnt); ans += temp[num.length()]; cout << ans << '\n'; return 0; }

相關推薦

-2018 CodeM 程式設計大賽-初賽 B -3-低位

ACM模版 描述 題解 一個規律題。預設,ll 取 00,考慮取 rr,首先,如果有非最高位 11 存在 xx 個,有第二個部分公式得答案加上 xx,然後根據第三個公式得答案加 11 並且

-2018 CodeM 程式設計大賽-資格賽-2-可樂

ACM模版 描述 題解 貪心,這裡我們其實只用取一種可樂即可,因為可樂是無限的,所以我們只需要簡單算一下 max(p∗a[i]+(1.0−p)∗b[i])max(p∗a[i]+(1.0

-2018 CodeM 程式設計大賽-資格賽-1-下單

ACM模版 描述 題解 貪心,因為只能一次購買,所以要麼全部按原價求和然後算滿減,要麼能特價的全部算特價,取小的值即可。 程式碼 #include <iostream&g

2018年全國多校算法寒假訓練營練習比賽(第四場)

ios ext ++i onclick 比賽 dag 練習 empty 分享圖片 T1 石油采集 這題可以建一張二分圖跑最大匹配,也可以直接染色然後數數 #include<bits/stdc++.h> using namespace std;

2018CodeM編程大賽 Round A Problem 2 下棋 【貪心】

AC 什麽 vector col break begin 遍歷 boa 需要 應該一眼看出來是貪心題,然後想最優解是什麽。正確的貪心策略是【原棋盤上每個位置的棋子】都往最近的左邊【目標棋盤上棋子】移動,如果左邊沒有棋子了那就閑置最後處理,如果目標棋盤在該位置上也有棋子,那

2018暑期ACM多校訓練營(第二場)G transform 尺取法 帶權中位數

#include <bits/stdc++.h> #define LL long long using namespace std; const LL mod=1e9+7; const int maxn=5e5+10; int n;LL t; inline int read() {

(劍指Offer)線上程式設計-演算法

1、在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。 public class Solution { public boolean

2018年全國多校演算法寒假訓練營練習比賽(第四場) 題解

A-石油採集 題目描述 隨著海上運輸石油洩漏的問題,一個新的有利可圖的行業正在誕生,那就是撇油行業。如今,在墨西哥灣漂浮的大量石油,吸引了許多商人的目光。這些商人們有一種特殊的飛機,可以一瓢略過整

(2016程式設計測試題)大富翁

/* 大富翁遊戲,玩家根據骰子的點數決定走的步數,即骰子點數為1時可以走一步,點數為2時可以走兩步,點數為n時可以走n步。求玩家走到第n步(n<=骰子最大點數且是方法的唯一入參)時,總共有多少種投骰子的方法。  輸入描述: 輸入包括一個整數n,(1 ≤ n ≤ 6

斯特林公式-Stirling公式(取N階乘近似值)-HDU1018-Big Number NowCoder 2018年全國多校算法寒假訓練營練習比賽(第三場)A.不凡的夫夫

subject color content coder -m ria 一點 練習 java 最近一堆題目要補,一直鹹魚,補了一堆水題都沒必要寫題解。備忘一下這個公式。 Stirling公式的意義在於:當n足夠大時,n!計算起來十分困難,雖然有很多關於n!的等式,但並不能很

NowCoder 2018年全國多校算法寒假訓練營練習比賽(第四場)A.石油采集(dfs) B.道路建設(最小生成樹prim) C.求交集(暴力) F.Call to your teacher(迪傑斯特拉亂用) H.老子的全排列呢(dfs)

初始 -o 地圖 意義 技術 tle bject ios urn 菜哭了。。。 A.石油采集 時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 32768K,其他語言65536K 64bit IO Format: %lld 鏈

NowCoder 2018年全國多校算法寒假訓練營練習比賽(第五場)A.逆序數 B.Big Water Problem(線段樹-區間查詢求和和單點更新) F.The Biggest Water Problem H.Tree Recovery(線段樹-區間查詢求和和區間更新)

numbers col 如果 -o img 數組 數據 .html log 隨便補了幾道題,可能也就能寫出來這幾道吧。最近被搜索虐爆了,要抓緊去看搜索,隨便寫寫就溜,備忘一下線段樹新的板子(以前的不好用,太垃圾了) A.逆序數 時間限制:C/C+

2018年,小白月賽5

bject www urn 小時 %d describe desc bsp n+2 第一次啊,補題,希望大佬批評。 題目按我補題順序來的。 https://www.nowcoder.com/acm/contest/135#question H 題 最大公倍數 題意:給出兩

2018暑期ACM多校訓練營(第三場)C Shuffle Cards(可持久化平衡樹/splay)

car 訓練營 shu cas queue math getchar() %d fir 題意 牌面初始是1到n,進行m次洗牌,每次抽取一段放到最前面。求最後的序列。 分析 神操作!!!比賽時很絕望,splay技能尚未點亮,不知道怎麽用。 殊不知,C++庫裏有rope

2018暑期ACM多校訓練營(第九場)A -Circulant Matrix(FWT)

html ++ oid logs sync const stdout i++ scan 分析 大佬說看樣例就像和卷積有關。 把題目化簡成a*x=b,這是個xor的FWT。 FWT的講解請看:https://www.cnblogs.com/cjyyb/p/9065615

【比賽報告】2018.10.30網線上賽[ NOIP賽前集訓營-提高組(第四場)] NOIP練習賽卷二十七

題目連結 A.動態點分治 模擬 題目連結 #include<cstdio> typedef long long ll; int t,find; ll l,r,k,x; int main() { //freopen("in.txt","r",stdin

【比賽報告】2018.10.30網線上賽[NOIP賽前集訓營-提高組(第三場)] NOIP練習賽卷二十六

題目連結 A.管道維修 數學期望 題目連結 #include<cstdio> #include<algorithm> #include<cmath> using namespace std; typedef long long

【比賽報告】2018.10.30網線上賽[NOIP賽前集訓營-提高組(第二場)] NOIP練習賽卷二十五

比賽連結 A.方差 字首和 題目連結 我們把方差公式進行化簡。記 s u

【比賽報告】2018.10.28網線上賽[NOIP賽前集訓營-提高組(第一場)] NOIP練習賽卷二十四

比賽連結 A.中位數 二分+字首和 題目連結 構造一個序列 B B B 。每次二分一個

刷題】一次難忘的程式設計教訓

昨天刷這樣一道程式設計題: -------------------------------------------------------------------------------------------------- 求連續子陣列的最大和。 一個非空整數陣列,選擇其中的兩個位置,使得兩個位置