zoukankan      html  css  js  c++  java
  • Codeforces Round #354 (Div. 2)

    想来想去,还是暴露自己真是菜如狗吧。
    A,B都是模拟,Awa是题目看错。
    Bwa是根本不想去想想,然后随便写,当然是wa。

    A - Nicholas and Permutation:
    题意:给你n个元素,允许交换任意两个元素的位置,但是只有一次,然后让你求1和N的distance。
    思路
    直接暴力一发直接切啊….(我是理解成了给的是位置…为什么不给位置呢,这样就难那么一点点啊…呸,一样水)

    code:

    #include<cstdio>
    #include<math.h>
    #include<queue>
    #include<iostream>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    typedef long long LL;
    #define INF 9999999
    const double pi=3.1415926535897932;
    
    const int N=105;
    int n;
    int arr[N];
    int ans=0;
    int flag;
    
    void solve()
    {
        int pos1;
        int pos2;
        for(int i=1;i<=n;i++)
        {
            if(arr[i]==1)
                pos1=i;
            if(arr[i]==n)
                pos2=i; 
        }
        ans=max(ans,abs(pos1-pos2));
    }
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)
            cin>>arr[i];
        flag=0;
        for(int i=1;i<=n;i++)
        {
            for(int j=i+1;j<=n;j++) 
            {
                swap(arr[i],arr[j]);
                solve();
                swap(     
    rr[i],arr[j]);
            }
        }
        cout<<ans<<endl;
    } 

    B - Pyramid of Glasses:
    题意:那些酒杯叠起来的样子我想应该可以懂吧,然后往最高的那一只杯子倒水,n是代表有几层,t代表是有多长时间然后他说一次就是一杯;
    思路:
    模拟吧,把杯子放到一个矩阵,让后就是纯模拟就好了。明白一共才t容量,以及一共才(1+n)*n/2个杯子。

    code:

    #include <stdio.h>
    #include <string.h>
    #include <math.h>
    #include <algorithm>
    #include <iostream>
    using namespace std;
    #define MAX 110
    #define ll __int64
    #define mod 9973
    
    
    double flag[15][15];
    int main()
    {
        int n,k;
        double t;
        scanf("%d%lf",&n,&t);
        int sum,ans;
        sum=(1+n)*n/2;
        for(int i=0;i<=15;i++)
        {
            for(int j=0;j<15;j++)
                flag[i][j]=0;
        }
        flag[1][1]=t;
        ans=0;
    
        for(int i=1; i<=n; i++)
        {
            for(int j=1; j<=i; j++)
            {
                if(flag[i][j]<1)
                    continue;
                ans++;
                double tem=flag[i][j]-1;
                flag[i+1][j]+=tem/2.0;
                flag[i+1][j+1]+=tem/2.0;
            }
        }
        printf("%d
    ",min(sum,ans));
        return 0;
    }

    C. Vasya and String

    题意:
    一个长度为n的字符串,里面只有a,b两种字符,可以允许改动不超过K个的字符,然后让你求一个最长连续的字符子串的长度。
    思路:
    我只讲思路…因为这波姿势弱不能想到…是借鉴别人的。
    这个字符串有a,b两种,我们分别处理,先转换b再转换a,因为是要求连续的一种,所以这样分开搞a搞b是合情合理的。
    而且这两种搞法也相同。举搞b求最长的a连续:
    我们遍历一遍,在遍历中我们开两个标记,头节点pt转换量used,然后在那些遍历中遇到b就干掉,used++;但是接下来可能会遇到断节,也就是used>k了,这就要从pt开始过来,目的就是少搞几个b,把used搞小,然后继续下去搞那些没有搞过的b,然后答案就是i-pt+1,和答案比一比就好了。
    遍历b也是一个道理。

    code:

    #include <stdio.h>
    #include <string.h>
    #include <math.h>
    #include <algorithm>
    #include <iostream>
    using namespace std;
    #define MAX 110
    #define ll __int64
    #define mod 9973
    #define N 100100
    char s[N];
    int main()
    {
        int n,k;
        scanf("%d%d",&n,&k);
        scanf("%s",s);
        int res=0;
    
        int used=0;
        int pt=0;
        //all a;
        for(int i=0;s[i];i++)
        {
            if(s[i]!='a') used++;
            while(used>k&&pt<=i)
            {
                if(s[pt++]!='a')
                    used--;
            }
            if(used>k) continue; 
            if((i-pt+1)>res)
                res=i-pt+1;
        }
    
        //all b;
        used=0;
        pt=0;
        for(int i=0;s[i];i++)
        {
            if(s[i]!='b') used++;
            while(used>k&&pt<=i)
            {
                if(s[pt++]!='b')
                    used--;
            }
            if(used>k) continue;
            if((i-pt+1)>res)
                res=i-pt+1;
        }
        printf("%d
    ",res);
    
    } 
  • 相关阅读:
    linux启动流程
    监控命令
    ansible组
    公钥和秘钥
    SSH协议介绍
    Java并发编程笔记之ThreadLocal内存泄漏探究
    【死磕 Java 集合】— ConcurrentSkipListMap源码分析
    GraphX介绍
    Storm内部的消息传递机制
    JanusGraph Server配置
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/5934518.html
Copyright © 2011-2022 走看看