Atcoder ABC 141

Posted repulser

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Atcoder ABC 141相关的知识,希望对你有一定的参考价值。

Atcoder ABC 141

A - Weather Prediction

SB题啊,不讲。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>

using namespace std;

char ch[50];

int main() 
    scanf("%s",ch+1);
    if(ch[1] == 'S') puts("Cloudy");
    if(ch[1] == 'C') puts("Rainy");
    if(ch[1] == 'R') puts("Sunny");
    //system("pause");
    return 0;

B - Tap Dance

暴力判断每一位是否合法就行。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>

using namespace std;

#define LL long long
#define N 100010

char ch[N];
bool flag = 1;

int main() 
    scanf("%s",ch+1);
    int len = strlen(ch + 1);
    for(int i = 1 ; i <= len ; i++) 
        if(i % 2 == 1) 
            if(ch[i] == 'R' || ch[i] == 'U' || ch[i] == 'D') continue;
            else 
                flag = 0;
                break;
            
        
        if(i % 2 == 0) 
            if(ch[i] == 'L' || ch[i] == 'U' || ch[i] == 'D') continue;
            else 
                flag = 0;
                break;
            
        
    
    if(flag) puts("Yes");
    else puts("No");
    //system("pause");
    return 0;

C - Attack Survival

直接暴力会T的飞起,所以需要优化。
因为每一轮除了回答问题的人,其他人的值全部 $ -1 $ 。
所以我们可以考虑先全部 $ -1 $ ,再对回答问题的人 $ +1 $ 即可。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>

using namespace std;

#define LL long long
const int N = 1e5 + 100;

int a[N],n,k,q,x;

int main() 
    scanf("%d%d%d",&n,&k,&q);
    for(int i = 1 ; i <= n ; i++) a[i] = k - q;
    /*while(q--) 
        scanf("%d",&x);
        for(int i = 1 ; i <= n ; i++) a[i]--;
        a[x]++;
    */
    while(q--) 
        scanf("%d",&x);
        a[x]++;
    
    for(int i = 1 ; i <= n ; i++) 
        if(a[i] > 0) puts("Yes");
        else if(a[i] <= 0) puts("No");
    
    //system("pause");
    return 0;

D - Powerful Discount Tickets

贪心,拿个堆维护一下。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
 
using namespace std; 

#define LL long long
const int N = 1e5 + 100;

LL num[N],dis,m,n; 
priority_queue<LL> qu;

inline int fast_pow(int x, int y) 
    int ans = 1; 
    while(y) 
        if(y & 1) ans = x * ans; 
        y >>= 1; 
        x = x * x; 
    
    return ans; 


int main() 
    scanf("%lld%lld",&n,&m);
    for (int i = 1; i <= n; i++) 
        scanf("%lld",&num[i]);
        qu.push(num[i]); 
    
    if (n == 1) 
        if(log2(num[1]) + 1 <= m) puts("0"); 
        else printf("%lld\n", num[1] / fast_pow (2, m)); 
        return 0; 
    
    while(m) 
        int now = qu.top(); 
        if(now == 0) break; 
        qu.pop(); 
        int cost = 0; 
        if(qu.top() == 0) 
            if(log2 (now) + 1 <= m) qu.push(0); 
            else qu.push(now/fast_pow(2, m)); 
            break; 
        
        while(now/fast_pow(2, cost) - now/fast_pow(2, cost + 1) >= qu.top() - qu.top()/2 && cost + 1 <= m) cost++; 
        m -= cost; 
        qu.push(now/fast_pow(2, cost)); 
    
    while(!qu.empty()) 
        dis += qu.top(); 
        qu.pop(); 
    
    printf("%lld\n", dis);
    //system("pause"); 
    return 0; 

E - Who Says a Pun?

直接SA,没了。

以上是关于Atcoder ABC 141的主要内容,如果未能解决你的问题,请参考以下文章

AtCoder ABC 155F Perils in Parallel

AtCoder ABC 155D Pairs

[atcoder][abc123D]

ABC 076D - AtCoder Express

Atcoder ABC138

Atcoder ABC 071 C,D