首页 > 其他分享 >AtCoder Beginner Contest 365(4/7)

AtCoder Beginner Contest 365(4/7)

时间:2024-08-05 15:07:09浏览次数:13  
标签:std AtCoder Beginner int long i64 vector 365 dp

比赛链接:https://atcoder.jp/contests/abc365

solve:ABC

开头:

感觉好久没打abc了,这场被D单防了qwq,该好好练练dp了

A. Leap Year

思路:

签到题,闰年判断

代码:
#include<bits/stdc++.h>
using i64=long long;

void solve(){
    int n;
    std::cin>>n;
    if(n%400==0){
        std::cout<<366;
    }
    else if(n%100==0&&n%400!=0){
        std::cout<<365;
    }
    else if(n%4==0){
        std::cout<<366;
    }
    else{
        std::cout<<365;
    }
}

int main(){
    std::cin.tie(nullptr);
    std::ios_base::sync_with_stdio(false);

    solve();
}

B. Second Best

思路:

也是签到题

代码:
#include<bits/stdc++.h>
using i64=long long;

void solve(){
    int n;
    std::cin>>n;
    std::vector<int> a(n+1),b(n+1);
    for(int i=1;i<=n;i++){
        std::cin>>a[i];
        b[i]=a[i];
    }
    sort(a.begin()+1,a.end());
    for(int i=1;i<=n;i++){
        if(b[i]==a[n-1]){
            std::cout<<i;
            return;
        }
    }
}

int main(){
    std::cin.tie(nullptr);
    std::ios_base::sync_with_stdio(false);

    solve();
}

C. Transportation Expenses

思路:

标准的二分答案,如果所有人的费用总和比预算少,那么限额就可以是无限大

代码:
#include<bits/stdc++.h>
using i64=long long;
std::vector<i64> a;
i64 n,m;

bool check(i64 x){
    i64 sum=0;
    for(i64 i=1;i<=n;i++){
        sum+=std::min(a[i],x);
    }
    if(sum<=m){
        return true;
    }
    else{
        return false;
    }
}

void solve(){
    std::cin>>n>>m;
    a.resize(n+1);
    i64 sum=0;
    i64 ma=0;
    for(i64 i=1;i<=n;i++){
        std::cin>>a[i];
        sum+=a[i];
        ma=std::max(ma,a[i]);
    }
    if(sum<=m){
        std::cout<<"infinite";
        return;
    }
    i64 l=1;i64 r=ma-1;
    while(l<r){
        i64 mid=l+r+1>>1;
        if(check(mid)){
            l=mid;
        }
        else{
            r=mid-1;
        }
        //std::cout<<l<<' '<<r<<'\n';
    }
    std::cout<<r<<'\n';
}

int main(){
    std::cin.tie(nullptr);
    std::ios_base::sync_with_stdio(false);

    solve();
}

D. AtCoder Janken 3

思路:

是很简单的dp,但我好久没做dp了,一直在用贪心求

每一局有三种状态,即可以出剪刀石头布,当出剪刀时,上一局就不能是剪刀,同时如果这局对面出的是布,就赢了,如果对面出的是石头,那么就输了,就给它赋值为无穷小,最后求最大

代码:
#include<bits/stdc++.h>
using i64=long long;


void solve(){
    int n;
    std::cin>>n;
    std::string s;
    std::cin>>s;
    s='0'+s;
    int INF=0x3f3f3f3f;
    std::vector<std::vector<int>> dp(n+1,std::vector<int>(3,-INF));
    dp[0][0]=0;dp[0][1]=0;dp[0][2]=0;
    for(int i=1;i<=n;i++){
        dp[i][0]=std::max(dp[i-1][1],dp[i-1][2])+(s[i]=='S');//状态转移方程
        dp[i][1]=std::max(dp[i-1][0],dp[i-1][2])+(s[i]=='R');
        dp[i][2]=std::max(dp[i-1][0],dp[i-1][1])+(s[i]=='P');
        if(s[i]=='R'){
            dp[i][2]=-INF;
        }
        else if(s[i]=='P'){
            dp[i][0]=-INF;
        }
        else{
            dp[i][1]=-INF;
        }
    }
    std::cout<<std::max({dp[n][0],dp[n][1],dp[n][2]})<<'\n';
}

int main(){
    std::cin.tie(nullptr);
    std::ios_base::sync_with_stdio(false);

    solve();
}

E. Xor Sigma Problem(待补)

思路:

还有点没搞懂,先放个代码在这

代码:
#include<bits/stdc++.h>
using i64=long long;

void solve(){
    int n;
    std::cin>>n;
    std::vector<int> a(n+1);
    for(int i=1;i<=n;i++){
        std::cin>>a[i];
    }
    std::vector<std::vector<int>> sum(n+1,std::vector<int>(30,0));
    for(int i=1;i<=n;i++){
        for(int j=0;j<30;j++){
            sum[i][j]=(a[i]>>j&1);
            sum[i][j]^=sum[i-1][j];
        }
    }
    i64 res=0;
    std::vector<std::vector<int>> cnt(30,std::vector<int>(2,0));
    for(int i=1;i<=n;i++){
        for(int j=0;j<30;j++){
            res+=1LL*cnt[j][sum[i][j]^1]*(1<<j);
            cnt[j][sum[i-1][j]]+=1;
        }
    }
    std::cout<<res<<'\n';
}

int main(){
    std::cin.tie(nullptr);
    std::ios_base::sync_with_stdio(false);

    solve();
}

F. Takahashi on Grid(待补)

思路:
代码:

G. AtCoder Office(待补)

思路:
代码:

标签:std,AtCoder,Beginner,int,long,i64,vector,365,dp
From: https://www.cnblogs.com/lime-wk/p/18343262

相关文章

  • Atcoder ABC299 E-G
    AtcoderABC299E-GE-NearestBlackVertex链接:E-NearestBlackVertex(atcoder.jp)简要题意:问题陈述给你一个简单连接的无向图,有\(N\)个顶点和\(M\)条边(简单图不包含自循环和多条边)。在\(i=1,2,\ldots,M\)中,\(i\)-th边双向连接顶点\(u_i\)和......
  • AtCoder Beginner Contest 365
    AtCoderBeginnerContest365A-LeapYear给出年份,判断这一年有多少天闰年条件已经给出,逐条判断模拟即可。#include<iostream>usingnamespacestd;intmain(){inty;cin>>y;if(y%400==0||y%4==0&&y%100!=0)cout<<366<<endl;else......
  • AtCoder Beginner Contest 365
    F-TakahashionGrid用线段树上的节点维护一下\((l,r,c)\),如果\(c\)为\(-1\):\(l,r\)表示这一段区间内\([l,r]\)的交。如果\(c\ne-1\),\(l,r\)表示这一段第一次上下界相等的时候的位置为\(l\),合并后走出来的位置为\(r\),然后转折的步数为\(c\)。然后这玩意可以合并......
  • ABC365
    Alink题目已经说的很明白了,判断即可。点击查看代码#include<bits/stdc++.h>usingnamespacestd;inty;signedmain(){ cin>>y; if(y%4!=0)cout<<365; elseif(y%4==0&&y%100!=0)cout<<366; elseif(y%100==0&&y%400!......
  • ABC365
    A.LeapYear模拟代码实现importcalendary=int(input())ifcalendar.isleap(y):print(366)else:print(365)B.SecondBest模拟代码实现n=int(input())a=list(map(int,input().split()))print(a.index(sorted(a)[-2])+1)C.TransportationEx......
  • 【A~E】AtCoder Beginner Contest 365
    A-LeapYear题目大意给定\(n\),求第\(n\)年的天数(\(365\)或\(366\))。思路显然地,我们需要判断这个是否为闰年。如果\(n\)不能被\(4\)整除,那么不是闰年。如果\(n\)可以被\(400\)整除,那么是闰年。如果\(n\)不可以被\(100\)整除但是可以被\(4\)整除,那么是......
  • AtCoder Beginner Contest 365 补题记录(A~E,G)
    Perf2000+,但是补不回来上场超低的Rating/llA#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;signedmain(){intn;cin>>n;if(n%400==0)cout<<"366\n";elseif(n%100==0)cout<<"365\n";......
  • AtCoder Beginner Contest 365 随笔
    擦,F假了A判断闰年B输出次大值的下标用pair排序后即可C给定一个数组\(A_n\)和整数\(M\),尝试找到一个最大的\(m\),使得:\[\sum_{i=1}^n\min(A_i,m)\leM\]不等号左边显然随着\(m\)的增大而增大,所以可以二分一个\(m\),然后判断即可D两个人玩\(n\)局剪刀石头布......
  • ABC365(A-D)未补
    A-LeapYear(模拟)题意:给定一个数字n,如果n不是4的倍数,输出365;如果n是4的倍数但不是100的倍数,输出366;如果n是100的倍数但不是400的倍数,输出365;如果n是400的倍数,输出366分析:模拟题目即可代码:#include<bits/stdc++.h>usingnamespacestd;intmain(){intn;cin>>n;......
  • 如何通过PowerShell批量修改O365用户的office phone属性值
    我的博客园:https://www.cnblogs.com/CQman/如何通过PowerShell批量修改O365用户的officephone属性值?需求信息: 组织中的O365用户在创建时,已手动录入了办公电话(Officephone),现在需要在办公电话前面加上统一的数字,如“0571-0985”,以批量的方式统一修改。备注:O365用户的Offic......