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

    A题

    分析:水题,模拟一下顺时针和逆时针情况就好了

     1 #include "iostream"
     2 #include "cstdio"
     3 #include "cstring"
     4 #include "string"
     5 #include "vector"
     6 using namespace std;
     7 char ch1,ch2;
     8 long long n;
     9 char cw[]={'v','<','^','>'};
    10 char ccw[]={'v','>','^','<'};
    11 int main()
    12 {
    13     ch1=getchar();
    14     getchar();
    15     ch2=getchar();
    16     getchar();
    17     cin>>n;
    18     int res=n%(long long)4;
    19     int flag=0;
    20     int pos1,pos2;
    21     for(int i=0;i<4;i++){
    22         if(cw[i]==ch1){
    23             pos1=i; break;
    24         }
    25     }
    26     int num1,num2;
    27     num1=(pos1+res)%4;
    28     if(cw[num1]==ch2){
    29         flag=1;
    30     }
    31     for(int i=0;i<4;i++){
    32         if(ccw[i]==ch1){
    33             pos2=i; break;
    34         }
    35     }
    36     num2=(pos2+res)%4;
    37     if(ccw[num2]==ch2){
    38         if(flag){
    39             flag=3;
    40         }else{
    41             flag=2;
    42         }
    43     }
    44     if(flag==1)  cout<<"cw"<<endl;
    45     else if(flag==2)  cout<<"ccw"<<endl;
    46     else  cout<<"undefined"<<endl;
    47 }
    View Code

    B题

    分析:水题,注意统计一下任意时刻开着的门有几个

     1 #include "iostream"
     2 #include "cstdio"
     3 #include "cstring"
     4 #include "string"
     5 using namespace std;
     6 const int maxn=500;
     7 int n,k;
     8 string s;
     9 int vis[maxn];
    10 int dp[maxn];
    11 int main()
    12 {
    13     cin>>n>>k;
    14     getchar();
    15     cin>>s;
    16     for(int i=0;i<n;i++){
    17         vis[s[i]]++;
    18     }
    19     int flag=0;
    20     for(int i=0;i<n;i++){
    21         if(dp[s[i]-'A']==0){
    22             dp[s[i]-'A']=1;
    23         }
    24         int cnt=0;
    25         for(int j=0;j<26;j++){
    26             if(dp[j])
    27                 cnt++;
    28         }
    29         vis[s[i]]--;
    30         if(vis[s[i]]==0)
    31             dp[s[i]-'A']=0;
    32         if(cnt>k){
    33             flag=1; break;
    34         }
    35     }
    36     if(flag)   cout<<"YES"<<endl;
    37     else  cout<<"NO"<<endl;
    38 }
    View Code

    C题

    分析:我们把式子变形一下就知道a*b必定是一个数的三次方,然后a和b都能够被那个数整除即可,可以二分或者pow

     1 #include "iostream"
     2 #include "cstdio"
     3 #include "cstring"
     4 #include "string"
     5 #include "cmath"
     6 using namespace std;
     7 long long res;
     8 int T;
     9 bool judge(long long x){
    10     if(x*x*x<=res)
    11         return true;
    12     else
    13         return false;
    14 }
    15 int main()
    16 {
    17     scanf("%d",&T);
    18     while(T--){
    19         long long a,b;
    20         scanf("%lld%lld",&a,&b);
    21         res=a*b;
    22         long long t=pow(res,1.0/3);
    23         while(t*t*t<res){
    24             t++;
    25         }
    26         int flag=0;
    27         if(t*t*t==res&&(a%t==0)&&(b%t==0)){
    28             flag=1;
    29         }
    30         if(flag){
    31             printf("Yes
    ");
    32         }else{
    33             printf("No
    ");
    34         }
    35     }
    36     return 0;
    37 }
    POW版
     1 #include "iostream"
     2 #include "cstdio"
     3 #include "cstring"
     4 #include "string"
     5 #include "algorithm"
     6 using namespace std;
     7 long long a,b;
     8 int T;
     9 int main()
    10 {
    11     scanf("%d",&T);
    12     while(T--){
    13         scanf("%lld%lld",&a,&b);
    14         long long res=a*b;
    15         long long l=1,r=1e6;
    16         int flag=0;
    17         while(l<=r){
    18             long long mid=(l+r)/2;
    19             long long ans=mid*mid*mid;
    20             if(ans==res){
    21                 if(a%mid==0&&b%mid==0){
    22                     flag=1; break;
    23                 }else  break;
    24             }else if(ans<res)  l=mid+1;
    25             else   r=mid-1;
    26         }
    27         if(flag)  printf("Yes
    ");
    28         else  printf("No
    ");
    29     }
    30 }
    二分版
  • 相关阅读:
    【持续更新】dp优化浅谈:实现篇
    【持续更新】dp优化浅谈:理论篇
    利用普通生成函数解斐波那契数列的通项问题
    【讲稿】动态规划基础4
    多项式板子(待完善)
    快速傅里叶变换学习笔记
    非阻塞同步算法实战(四)- 计数器定时持久化
    您还有心跳吗?超时机制分析(java)
    [分享]正则文本替换器(已开源)
    MySql大表分页(附独门秘技)
  • 原文地址:https://www.cnblogs.com/wolf940509/p/7261676.html
Copyright © 2011-2022 走看看