二分/貪心(ICPC小米預賽第一場 A 2020)
題目連結
題意:給你一個只包含0,1,2的序列,問你最多可以同時取出多少個“2020”子序列。
題解:比賽時是隊友寫出的,讚歎隊友的思維能力,真的強。二分答案,然後貪心取即可。檢查時傳入需要組成x個,遍歷陣列,每次遇到2,即優先讓沒有開始組成的序列獲取,然後由已經組成到“20”的序列獲取。每次遇到0,每次優先由已經組成“2”的序列獲取,然後由已經組成“202”的序列獲取。最後檢視是否組成了x個“2020”
下面是ac程式碼:
// % everyone
#include <cstdio>
#include<iostream>
#include<cstring>
#include <map>
#include <queue>
#include <set>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
#include <list>
#include <cctype>
#include <time.h>
namespace IO {
double start_time = 0.0;
void ct() { start_time = clock(); return; }
void fast_cin() { std::ios::sync_with_stdio(false); std::cin.tie(); }
void read_f(int flag = 0) { freopen("0.in", "r", stdin); if(!flag) freopen("0.out", "w", stdout); }
void run_time() { std::cout << "\nESC in : " << ( clock() - start_time ) * 1000.0 / CLOCKS_PER_SEC << "ms" << std::endl; }
}
using namespace IO;
template <typename T>
bool bacmp(const T & a, const T & b) { return a > b; }
template <typename T>
bool pecmp(const T & a, const T & b) { return a < b; }
#define ll long long
#define ull unsigned ll
#define _min(x, y) ((x)>(y)?(y):(x))
#define _max(x, y) ((x)>(y)?(x):(y))
#define max3(x, y, z) ( max( (x), max( (y), (z) ) ) )
#define min3(x, y, z) ( min( (x), min( (y), (z) ) ) )
#define pr make_pair
#define pb push_back
using namespace std;
const int N = 1e6+5;
const int inf = 0x3f3f3f3f;
const int mod = 1e9+7;
char su[N];
int dp[6];
int n;
bool che(int x)
{
memset(dp, 0, sizeof(dp)); dp[0] = x;
for (int i = 1; i <= n; i++)
{
if (su[i] == '2')
{
if (dp[0]) dp[0]--,dp[1]++;
else if (dp[2]) dp[2]--,dp[3]++;
}
else if (su[i] == '0')
{
if (dp[1]) dp[1]--,dp[2]++;
else if (dp[3]) dp[3]--,dp[4]++;
}
}
return dp[4]==x;
}
int main()
{
while(scanf("%d", &n) != EOF)
{
scanf("%s", su+1);
int n = strlen(su+1);
int l = 0, r = n;
while(l <= r)
{
int mid = (l + r) >> 1;
if (che(mid)) l = mid+1;
else r = mid-1;
}
printf("%d\n", l-1);
}
}
相關文章
- 2020ICPC小米邀請賽2 A-2020(貪心+二分)
- 2020ICPC·小米 網路選拔賽第二場 Subsequence Pair(貪心二分)AI
- 2020ICPC·小米 網路選拔賽第一場
- 2019-2020 ICPC, NERC, Northern Eurasia Finals E. Elections (暴力&貪心)
- 2020ICPC小米網路賽 C.Data Structure ProblemStruct
- 2024 ICPC 網路預選賽 第 2 場
- acm-(推式子、好題、數學、排列計數)2020ICPC·小米 網路選拔賽第一場 H.GroupingACM
- 2020 ICPC 上海賽區
- 2020ICPC·小米 網路選拔賽熱身賽K-Random Point in Trianglerandom
- 2024ICPC網路賽第一場題解(部分)
- leetcode1552題解【二分+貪心】LeetCode
- HDU6301 Distinct Values (多校第一場1004) (貪心)
- 【貪心】【二分】[NOIP2015]跳石頭
- ACM-ICPC 2018 徐州賽區網路預賽ACM
- E Revenge on My Boss CCPC 2023 Harbin Site 貪心,二分
- ACM-ICPC 2018 瀋陽賽區網路預賽ACM
- 貪心
- C240817C. 團隊協作:二分答案+貪心
- Codeforces 1070C - Cloud Computing 思路+線段樹+貪心 (2018-2019 ICPC, NEERC)Cloud
- 反悔貪心
- Supermarket(貪心)
- C++奧賽一本通貪心題解C++
- ZOJ——Copying Books 最大值最小化問題 (貪心 + 二分)
- ACM-ICPC 2018 徐州賽區網路預賽 F. Features TrackACM
- ccpc2020秦皇島Kingdom‘s Power(貪心)
- 貪心例題
- 貪心+搜尋
- 牛客練習賽40 B 小A與任務(貪心)
- ACM-ICPC 2018 南京賽區網路預賽__B The writing on the wall【列舉】ACM
- 2020ICPC 江西省賽 B. Apple(思維)APP
- 牛客練習賽26 C 城市規劃【思維+貪心】
- bzoj3613: [Heoi2014]南園滿地堆輕絮(二分+貪心)
- 反悔貪心雜題
- 貪心演算法演算法
- 貪心、構造合集
- HDU 5821 Ball(貪心)
- 貪心模式記錄模式
- 2020 ICPC 線上模擬賽 I題 Character Wheels(模擬)