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

    A:v < ^ > v,变换顺序是这样的,给你任意两个字符,问第一个字符,再给你这两个字符之间间隔的字符数,问你通过什么样的方式使得第一个字符变到第二个字符。若是顺时针就是输出cw,逆时针就是ccw,顺时针逆时针都可以的话输出undefined比如:

    ^ >

    1

    输出cw

    思路:看题解

    #include<stdio.h>
    #include<iostream>
    using namespace std;
    char a,c;
    int m;
    char b[10];
    int main()
    {
    b[0]='v';
    b[1]='<';
    b[2]='^';
    b[3]='>';
    b[4]='';
    cin>>a>>c;
    cin>>m;
    int flag=1;
    int cnt=0,ans=0;
    for(int i=0; i<4; i++)
    {
    if(a==b[i])
    cnt=i;
    if(c==b[i])
    ans=i;
    }
    int x=(ans+4-cnt)%4;
    int y=(4-x)%4;
    //printf("%d %d ",x,y);
    if(m%4==x)
    flag=2;
    if(m%4==y)
    flag=1;
    if(x==y)
    flag=3;
    if(flag==2)
    printf("cw ");
    else if(flag==1)

    printf("ccw ");
    else if(flag==3)
    printf("undefined ");
    return 0;
    }

    B:

    题意:给你一个序列,表示每个时候应该开哪个门(用A~Z表示),每个门一旦开启之后必须直到后面不用的时候才关闭(门一旦开启就需要管理员来守),再给你k个管理员,每个管理员在同一时刻只能守一个门,问你需不需要添加管理员,若需要就输出Yes,否则就是No

    思路:见代码

    #include <cstdio>
    #include <algorithm>
    #include <iostream>
    using namespace std;

    struct letter
    {
    int r;
    int l;
    } arr[30];
    char str[1000050];

    int main()
    {
    int n, k;
    char tmp;

    while(cin >> n >> k)
    {
    for(int i=0; i<26; i++)
    arr[i].r = -1, arr[i].l = -1;
    getchar();
    int flag = 0;
    int ans = 0;
    for(int i=0; i<n; i++)
    {
    cin >> str[i];
    if(arr[ str[i] - 'A'].r == -1)
    arr[ str[i] - 'A'].r = i;
    if(arr[ str[i] - 'A'].l == -1)
    arr[ str[i] - 'A'].l = i;
    else if(i >= arr[ str[i] - 'A'].l)
    arr[ str[i] - 'A'].l = i;
    printf("arr %d %d %d ", str[i] - 'A', arr[ str[i] - 'A'].r, arr[ str[i] - 'A'].l);
    }
    puts(str);
    for(int i=0; i<n; i++)
    {
    if(arr[ str[i] - 'A' ].r == i)
    ans++;
    if(ans > k)
    {
    flag = 1;
    break;
    }
    if(arr[ str[i] - 'A' ].l == i)
    ans--;
    printf("ans = %d ", ans);
    if(ans > k)
    {
    flag = 1;
    break;
    }
    }
    if(flag)
    printf("YES ");
    else
    printf("NO ");

    }
    return 0;
    }

    C:

    题意:Slastyona 和 Pushok 一开始分数都为1,Slastyona 和 Pushok 各自报一个数(数字大的那个人赢)赢得那个人的分数乘k^2(k是报的数字大的那个数),输了的那个人分数乘k。然后给你两个Slastyona 和 Pushok 最后的得分,问有没有情况结果导致Slastyona 和 Pushok 分数是这样的,如果有就是YES,没有就是NO

    思路:我一拿着就直接乘起来开三方了,错在精度的问题,交GNU C++14没有过,最后交GNU C++11过了的,也可以二分这题。

    #include<stdio.h>
    #include<math.h>
    #include<algorithm>
    #define ll long long
    using namespace std;
    const long double N=1e-8;
    int n;
    ll a,b;
    int main()
    {
    while(~scanf("%d",&n))
    {
    while(n--)
    {
    scanf("%I64d%I64d",&a,&b);
    ll x=a*b;
    long double y=powl(x*1.0,1.0/3.0);
    int z=pow(x,1.0/3.0);
    if(fabs(y-1)>=N)
    z++;
    // printf("%.14lf %d ",y,z);
    if(fabs(y-z)<N)
    {
    if(a%z==0&&b%z==0||a%z==0&&z%b==0||z%a==0&&b%z==0||z%a==0&&z%b==0)
    printf("Yes ");
    else
    printf("No ");
    }
    else
    {
    printf("No ");
    }
    }
    }
    return 0;
    }

  • 相关阅读:
    git push 报错:missing Change-Id in commit message footer
    script命令录屏
    dubbo.xsd
    常规项目用到的jar包之maven的pom.xml
    WebSocket Demo
    对程序员有帮助的站点集锦
    java之finally的用法
    Java 中的四种引用
    字符串类型的对象与引用及字符串常量池详解
    如何掌握一项新的技能?
  • 原文地址:https://www.cnblogs.com/xiejiamin/p/7261806.html
Copyright © 2011-2022 走看看