Codeforces Round #560 (Div. 3)

A:
给定一个数,为01串,每次可以翻转一个位置上的数,问最少几步可以使得它模10x余10y

从后往前贪心即可

#include
#include
#include
#include
#include
#include
#include
#define MAXN 200010
int n,m1,m2,ans;
int a[MAXN];
using namespace std;
int main()
{
    #ifndef ONLINE_JUDGE
    freopen("ce.in","r",stdin);
    #endif
    scanf("%d%d%d",&n,&m1,&m2);
    int i,j;
    for(i=1;i<=n;i++) 
    {
        scanf("%1d",&a[i]);
    }
    for(i=n,j=1;i>=1&&j<=m1;i--,j++)
    {
        if(a[i]==1)
        {
            if(j!=m2+1) ans++;
        }
        else
        {
            if(j==m2+1) ans++;
        }
    }
    cout<

B.第i天要写i道题,一些题单,每天可以选择一个还没有写过的题单来写,上面的题数必须大于等于i,无论一天写完这个题单还是没有这个题单都算做过了,以后不能再用。如果不存在这样一个题单,终止。问最多写几天。

排序,然后遍历一遍即可

#include
#include
#include
#include
#include
#include
#include
#define MAXN 200010
int n,m1,m2,ans;
int a[MAXN];
using namespace std;
int main()
{
    #ifndef ONLINE_JUDGE
    freopen("ce.in","r",stdin);
    #endif
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    sort(&a[1],&a[n+1]);
    int k=1;
    for(int i=1;i<=n;i++)
    {
        if(a[i]

C给你一个字符串,要求删去尽量少的一些字符,使得删完后这个字符串长度为偶数+每个奇数位和它后面的那个偶数位(如果没有就算了)字符不一样。

考虑如果从前往后删,每次如果i和i+1相同,我们不要其中一个,这样的话不仅这个相同的问题解决了,后面的可能因为整体前移一位也消除了一部分的问题,每次操作的效益明显高一些。

#include 

using namespace std;

const int maxn = 2e5+100;

char a[maxn];
char t[maxn];
int main()
{
    int n;
    scanf("%d",&n);
    scanf("%s",a);
    int cnt=0;
    for(int i=0;i

你可能感兴趣的:(cf)