字首a的數量,字尾c的數量,遇到b就計算一次答案。
#includeusing namespace std;
typedef long long ll;
const int n = 1e5+100;
char s[n];
int cnt[n];
int main()
int tmp =0 ;
for(int i=1;i<=n;++i)
printf("%lld\n",ans);
}
預處理出每個字元後面26個字母第一次出現的位置。
#includeusing namespace std;
typedef long long ll;
const int n = 1e5+100;
char s[n];
int pos[26][n],cnt[26],cur[n][26];
int main()
}while(m--)
}puts(flag?"yes":"no");}}
這題比賽時一臉懵逼。周大佬說是以前打過的一道網路賽原題,好吧,忘記了。搜了一波題解。
} }解法一:比賽時想的是貪心暴力。對於每乙個位置記錄能被哪些羊兒吃以及羊兒能吃到的左端點,然後對這些左端點進行從小到大排序。每次詢問乙個區間時,怎樣給每個位置i分配羊兒呢?貪心選左端點最近的,假設現在有兩個端點l1,l2,l1using namespace std;
const int n = 400+10;
int vis[n];
struct node);
}} }
for(int i=1;i<=400;++i)
while(q--)
}} printf("%d\n",ans);
}}解法二:
其實這就是乙個二分圖,對於羊兒能到達區間的每乙個點建一條邊,然後在詢問區間內跑一遍匈牙利就行了。
#includeusing namespace std;
vectore[1000];
int vis[1000],match[1000],a[1000],b[1000];
int n,q;
int dfs(int x)
for(int i=1;i<=mx-n%mx;i++)
puts("");
}
牛客練習賽51
theme 給定n與m,要求你用正整數填充n個元素,使得這n個元素的和 m,定義喜愛度為i的個數使得2 i n且a i a i 1 1。1 n 1e5,1 m 1e9 solution 構造題。考慮列舉分成幾個段i,若某段的長度為len,則該段的數為1 len,可知喜愛度應為n i,所以我們的目標是...
牛客練習賽22題解
簡單瞎搞題 不會用bitset,所以沒做出來。實際上還是比較簡單的。include using namespace std bitset 1000005 dp 2 int main cout 2 count 簡單資料結構1 這裡要運用拓展尤拉定理。ab modp ab p b p p 0 modp ...
牛客練習賽64 題解
a 怪盜 1412題目描述 乙個長度為n m k包含n個數字1,m個數字2和k個數字4的陣列,最多可能有多少個子序列1412?如果乙個序列是陣列的子串行,當且僅當這個序列可以由陣列刪去任意個元素,再將陣列中的剩餘元素按順序排列而成。思路 將序列排列成111444441111222222,這樣可以得到...