首页 > 其他分享 >TOYOTA SYSTEMS Programming Contest 2022(AtCoder Beginner Contest 279)A-D题(暂定)

TOYOTA SYSTEMS Programming Contest 2022(AtCoder Beginner Contest 279)A-D题(暂定)

时间:2022-11-26 22:26:00浏览次数:48  
标签:AtCoder ch Beginner Contest int while maxn ans getchar

A,w是两个v是一个 送分题

#include<bits/stdc++.h>
using namespace std ;
#define maxn 400100
#define int long long
int read(){
    int ans = 0 , f = 1 ; char ch = getchar() ;
    while ( !isdigit(ch) ){ if( ch == '-' ) f = -1 ; ch = getchar() ; }
    while ( isdigit(ch) ) ans = (ans * 10) + (ch ^ '0') , ch = getchar() ;
    return ans * f ;
}
char in[maxn] ; 
signed main(){
//    freopen("test.in" , "r" , stdin) ;
//    freopen("test.out" , "w" , stdout) ;\
    
    scanf("%s" , in + 1) ; 
    int len = strlen(in + 1) ; 
    int sum = 0 ; 
    for(int i = 1 ; i <= len ; i++){
        if(in[i] == 'v') sum++ ; 
        else sum += 2 ; 
    }
    printf("%lld" , sum) ; 
    return 0 ;
}

B.数据范围很小 直接暴力判断即可

#include<bits/stdc++.h>
using namespace std ;
#define maxn 400100
#define int long long
int read(){
    int ans = 0 , f = 1 ; char ch = getchar() ;
    while ( !isdigit(ch) ){ if( ch == '-' ) f = -1 ; ch = getchar() ; }
    while ( isdigit(ch) ) ans = (ans * 10) + (ch ^ '0') , ch = getchar() ;
    return ans * f ;
}
char s[maxn] , t[maxn] ; 
int slen , tlen ; 
bool check(int st){
    if(st + tlen - 1 > slen) return 0 ; 
    for(int i = 1 ; i <= tlen ; i++)
        if(s[st + i - 1] != t[i]) return 0 ; 
    return 1 ; 
}
signed main(){
//    freopen("test.in" , "r" , stdin) ;
//    freopen("test.out" , "w" , stdout) ;
    scanf("%s" , s + 1) ; scanf("%s" , t + 1) ; 
    slen = strlen(s + 1) ; tlen = strlen(t + 1) ; 
    if(tlen > slen){
        printf("No") ; 
        return 0 ; 
    }
    for(int i = 1 ; i <= slen ; i++){
        if(check(i)){
            printf("Yes") ; 
            return 0 ; 
        }
    }
    printf("No") ; 
    return 0 ;
}

C.判断前面的每一竖列是否能在后面找到一样的 对于每一个竖列 计算哈希值以及有多少个 然后和后面进行比较即可

#include<bits/stdc++.h>
using namespace std ;
#define maxn 400100
#define int long long
int read(){
    int ans = 0 , f = 1 ; char ch = getchar() ;
    while ( !isdigit(ch) ){ if( ch == '-' ) f = -1 ; ch = getchar() ; }
    while ( isdigit(ch) ) ans = (ans * 10) + (ch ^ '0') , ch = getchar() ;
    return ans * f ;
}
int hsh[maxn] ; 
const int mod = 998244353 ; 
int bse = 12281 ; 
char in[maxn] ; 
int num[maxn] ; 
int h , w  ;
int pos(int i , int j){
    return (i - 1) * w + j ; 
}
map<int,int> mp1 ; 
map<int,int> mp2 ; 
int vt[maxn] , cnt ; 
signed main(){
//    freopen("test.in" , "r" , stdin) ;
//    freopen("test.out" , "w" , stdout) ;
    h = read() , w = read() ; 
    for(int i = 1 ; i <= h ; i++){
        scanf("%s" , in + 1) ; 
        for(int j = 1 ; j <= w ; j++)
            if(in[j] == '#')
                num[pos(i , j)] = 3 ; 
            else num[pos(i , j)] = 7 ; 
    }
    for(int i = 1 ; i <= w ; i++){
        int sum = 0 ; 
        for(int j = 1 ; j <= h ; j++)
            sum = (sum * bse + num[pos(j , i)]) % mod ; 
//        printf("sum : %lld \n") 
        if(!mp1[sum]) mp1[sum] = 1 , vt[++cnt] = sum; 
        else mp1[sum]++ ; 
    }
//    printf("cnt : %lld \n" , cnt) ; 
    for(int i = 1 ; i <= h ; i++){
        scanf("%s" , in + 1) ; 
        for(int j = 1 ; j <= w ; j++)
            if(in[j] == '#')
                num[pos(i , j)] = 3 ; 
            else num[pos(i , j)] = 7 ; 
    }
    for(int i = 1 ; i <= w ; i++){
        int sum = 0 ; 
        for(int j = 1 ; j <= h ; j++)
            sum = (sum * bse + num[pos(j , i)]) % mod ; 
        if(!mp2[sum]) mp2[sum] = 1; 
        else mp2[sum]++ ; 
    }
    for(int i = 1 ; i <= cnt ; i++)
        if(mp1[vt[i]] != mp2[vt[i]]){
            printf("No") ; 
            return 0 ; 
        }
    printf("Yes") ; 
    return 0 ;
}

 

D.求导之后进行二分找到最后一个使导函数大于0的点和第一个使导函数小于0的点 然后比较一下两边的值 

#include<bits/stdc++.h>
using namespace std ;
#define maxn 400100
#define int long long
int read(){
    int ans = 0 , f = 1 ; char ch = getchar() ;
    while ( !isdigit(ch) ){ if( ch == '-' ) f = -1 ; ch = getchar() ; }
    while ( isdigit(ch) ) ans = (ans * 10) + (ch ^ '0') , ch = getchar() ;
    return ans * f ;
}
double A , B ;  
signed main(){
//    freopen("test.in" , "r" , stdin) ;
//    freopen("test.out" , "w" , stdout) ;
    cin >> A >> B ; 
    double C = A / (2.0 * B) ; 
    int l = 0 , r = pow(10 , 18) ; 
    int mid = (l + r) / 2 , ans = 0 ; 
    while(l <= r){
        if(pow(1 + mid , 1.5) <= C) ans = mid , l = mid +  1 ; 
        else r = mid - 1 ; 
        mid = (l + r) / 2 ; 
//        printf("l : %lld  r: %lld \n" , l , r ) ; 
    }
    double ansa , ansb ; 
    ansa = B * ans + A / pow(1 + ans , 0.5) ; 
    ans++ ; 
    ansb = B * ans + A / pow(1 + ans , 0.5); 
    printf("%.10lf" , min(ansa , ansb)) ; 
    return 0 ;
}

EFG题留个坑 最近搞出来

标签:AtCoder,ch,Beginner,Contest,int,while,maxn,ans,getchar
From: https://www.cnblogs.com/Vellichor/p/16928465.html

相关文章

  • Educational DP Contest——J 期望dp
    题目链接https://atcoder.jp/contests/dp/tasks/dp_jAC代码点击查看代码#include<bits/stdc++.h>#definerep(i,x,y)for(inti=x;i<=y;++i)#defineper(i,x,y)f......
  • ABC 214E Chain Contestant(状压计数)
    ABC214EChainContestant(状压计数)ChainContestant​ 现在有十个比赛类型,从现在开始要进行N场比赛。N场比赛的类型通过一个字符串S给出,在S串中选择一个子序列S',满足下......
  • AtCoder Beginner Contest 278
    《F-Shiritori 》博弈   首先在这个博弈题中有个很重要的结论:1.如果一个点,走一步,能够到达的点如果其中有一个为先手必胜点,那么这个点必然是先手必败点......
  • AtCoder Beginner Contest 237 Ex Hakata
    洛谷传送门AtCoder传送门下文令\(|S|=n\)。引理:一个字符串中本质不同的回文串数量\(\len\)。证明:考虑每在字符串末尾添加一个字符,本质不同回文串数量最多增加......
  • [Leetcode Weekly Contest]320
    链接:LeetCode[Leetcode]2475.数组中不等三元组的数目给你一个下标从0开始的正整数数组nums。请你找出并统计满足下述条件的三元组(i,j,k)的数目:0<=i<j<......
  • AtCoder Grand Contest 025B - RGB Coloring
    题解:一开始想把AA,BB,AA+B......
  • Atcoder ABC 277 A - E
    **A^{-1}**题意:给定一个序列,和一个指定值,输出这个值在序列中的位置(序列的下标从1开始)思路:签到题时间复杂度:O(n)代码:#include<bits/stdc++.h>usingnamespacestd;......
  • AtCoder 题解集
    虽然暂时不知道会不会从XCPC中退役,但还是想把这个题解集给维护下去。\(created\;at\;2022/6/24\;by\;Roshin\)目录AGCARCABCABC138F.Coincidence(结论,数位DP)AB......
  • AtCoder Beginner Contest 278
    Preface刚打完就来写题解,热乎的很这周CF没Div2,Atcoder的ARC和微积分考试撞了打不了所以和ztc一起打一下Div3和ABC,顺便锻炼一波解释题目的能力做到G的时候还有30min的,然......
  • AtCoder Regular Contest 152 (A-D)
    根本不知道有ARC。然后unratedregister。然后一直在聊天,只写了A。难蚌。按照pog的说法,这场应该不看题直接写代码!!1这样才能写的飞快。摆了一上午。我好像一直在贺题,所以......