Codeforces 899 B.Months and Years】的更多相关文章

B. Months and Years   time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Everybody in Russia uses Gregorian calendar. In this calendar there are 31 days in January, 28 or 29 days in February (…
题目链接:Letters Removing 题意: 给你一个长度为n的字符串,给出m次操作.每次操作给出一个l,r和一个字符c,要求删除字符串l到r之间所有的c. 题解: 看样例可以看出,这题最大的难点在于每次在字符串中删除了前面的字符会对后面的字符产生影响.如何确定当前l和r所指的字符?这里由于对字符的位置查询相当于单点操作区间查询,可以用树状数组维护字符串的前缀和,这样就可以确定l和r的位置了(二分+树状数组 : 复杂度(log(n)×log(n))).再把所有的字符放到set里面进行删除操…
  C. Dividing the numbers   time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Petya has n integers: 1, 2, 3, ..., n. He wants to split these integers in two non-empty groups in such a way tha…
  A. Splitting in Teams   time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output There were n groups of students which came to write a training contest. A group is either one person who can write…
A /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) #define pb push_back using namespace std; typedef long long ll; typedef unsigned long long ull; const ll LLmaxn = 2e18; ; int main() { ; ; int n; cin >> n; ; i <= n;…
A. Splitting in Teams time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output There were n groups of students which came to write a training contest. A group is either one person who can write the…
[题目]F. Letters Removing [题意]给定只含小写字母.大写字母和数字的字符串,每次给定一个范围要求删除[l,r]内的字符c(l和r具体位置随删除变动),求m次操作后的字符串.n<=2*10^5. [算法]树状数组+平衡树(set) [题解]因为坐标是序列变动后的,动态坐标可以转化为找到第l个存在的数字到第r个存在的数字之间的范围. 将序列中存在记为1,删除记为0,转化为找前缀和恰好为l和r的位置,这是树状数组的经典操作,详见这篇题解介绍的方法(简单的排名功能) 找到l和r在原…
[题目]E. Segments Removal [题意]给定n个数字,每次操作删除最长的连续相同数字(等长删最左),求全部删完的最少次数.n<=2*10^6,1<=ai<=10^9. [算法]并查集+堆 [题解]将序列的相同数字段压缩,全部插入堆.那么每次操作删除堆顶,并尝试合并堆顶的前驱和后继,能合并就重新插入堆中. 在支持删除的序列中找前驱和后继,是经典的并查集实现. 具体而言,fa[i]表示 i 点左边(含自身)最近的未被删除的点,即把删除了的点全部并入左侧第一个未被删除的点,那么…
题目大意 给定 $n$($1\le n\le 24$)个正整数 $a_1,\dots, a_n$ 判断 $a_1$ 到 $a_n$ 是否可能为连续 $n$ 个月份的天数. 解法 由于 $n\le 24$,这 $n$ 个月包含在至多 3 年内,而三年的可能情况有: 闰年-平年-平年 平年-闰年-平年 平年-平年-闰年 平年-平年-平年 将这四种模式合并起来: 平年-平年-平年-闰年-平年-平年 将输入月份序列在上述模式中做匹配. 比赛时我的错误做法 没有考虑到这些月份可能包含在 3 年内,误认为包…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 闰,平,平 平,闰,平 平,平,闰 平,平,平 4种情况都考虑到就好. 可能有重复的情况. 但是没关系啦. [代码] #include <bits/stdc++.h> using namespace std; const int N = 24; int p[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; int r[12] = {31,29,31,30,31,30,31,31,30,3…