首页 > 其他分享 >The 2022 ICPC Asia Xian Regional Contest

The 2022 ICPC Asia Xian Regional Contest

时间:2024-04-23 22:14:54浏览次数:32  
标签:Contest 完美 res ll Regional Xian 单词 ans c2

The 2022 ICPC Asia Xian Regional Contest

J. Strange Sum

题意:给定n个数,选定最多不超过两个数字的和的最大值

思路:签到

void solve(){
    ll n;
    cin >> n;
    vector<ll> a(n + 1);
    for(int i = 1; i <= n; i ++) cin >> a[i];
    ll ans = 0;
    sort(a.begin() + 1, a.end(), greater<ll>());
    if(ans + a[1] > ans) ans += a[1];
    if(ans + a[2] > ans) ans += a[2];
    cout << ans << '\n';
}

F. Hotel

题意:给定n只队伍,每个队伍三人,同时单人间/双人间的售价分别是c1,c2,来自同一支队伍并且相同性别的可以住一间房,求最小花费

思路:要考虑双人间比单人间还便宜的情况

void solve(){
    ll n, c1, c2;
    cin >> n >> c1 >> c2;
    ll sum1 = 0, sum2 = 0;
    for(int i = 1; i <= n; i ++){
        string s;
        cin >> s;
        if(s[0] == s[1] || s[0] == s[2] || s[1] == s[2]){
            sum1 ++;
            sum2 ++;
        }
        else sum2 += 3;
    }
    ll ans = min(n * 3 * c1, n * 3 * c2);
    ans = min(ans, sum1 * c2 + sum2 * min(c1, c2));
    cout << ans << '\n';
}

C. Clone Ranran

题意:初始有一个人,可以花费a的时间把当前所有人都复制一遍,也就是人数翻倍,每个人造一道题目的花费是b时间,求造出c道题目花费的最少的时间

思路:枚举复制次数即可,O(logc)的复杂度,记得两种特殊情况,分别是不进行复制,直接一个人造c道题目,还有是复制到人数大于等于题数一次性造完所有题目

void solve(){
    ll a, b, c;
    cin >> a >> b >> c;
    ll sum = 1, ans = b * c, idx = 0;
    while(sum < c){
        sum *= 2;
        idx ++;
        ll res = c / sum + (c % sum != 0);
        res *= b;
        res += a * idx;
        ans = min(ans, res);
    }
    ll res = a * idx + b;
    ans = min(ans, res);
    cout << ans << '\n';
}

G. Perfect Word

题意:给定n个字符串,求最长完美单词的长度,完美单词的定义:它的所有非空子串都在整体的单词集合中出现过

思路:感觉很有意思的题目,可以发现,每一个完美单词的所有子串也肯定是完美单词,那么从小开始判断该单词是不是完美单词,直到找出最长的完美单词,等于是由小的完美单词推出大的完美单词,只要从小开始判断去掉第一个或者最后一个字母的单词是不是完美单词即可,不要忘了首先排个序,长度为1的特判,用map维护一个完美单词集合

bool cmp(string & s1, string & s2){
    return s1.size() < s2.size();
}

void solve(){
    int n;
    cin >> n;
    vector<string> v(n + 1);
    map<string, int> mp;
    for(int i = 1; i <= n; i ++) cin >> v[i];
    sort(v.begin() + 1, v.end(), cmp);
    int ans = 0;
    for(int i = 1; i <= n; i ++){
        string s = v[i];
        if(s.size() == 1){
            mp[s] = 1;
            continue;
        }
        string s1 = s.substr(0, s.size() - 1);
        string s2 = s.substr(1, s.size() - 1);
        if(mp.count(s1) && mp.count(s2)){
            mp[s] = 1;
            int len = s.size();
            ans = max(ans, len);
        }
    }
    cout << ans << '\n';
}

pending。。。。。。

标签:Contest,完美,res,ll,Regional,Xian,单词,ans,c2
From: https://www.cnblogs.com/RosmontisL/p/18153859

相关文章

  • AtCoder Beginner Contest 350 A - G 题解
    AtCoderBeginnerContest350A-PastABCsSolution把最后三个字符转成数字判断即可Code#include<bits/stdc++.h>usingnamespacestd;intmain(){strings;cin>>s;s=s.substr(3,3);intx=0;x=(s[0]-'0')*100+(s[1]-�......
  • The 18-th Beihang University Collegiate Programming Contest (BCPC 2023) - Final
    https://codeforces.com/gym/104883A#include<bits/stdc++.h>usingnamespacestd;usingi32=int32_t;usingi64=longlong;usingvi=vector<int>;i32main(){ios::sync_with_stdio(false),cin.tie(nullptr);i64n,sum=0;c......
  • AtCoder Beginner Contest 350 G - Mediator
    链接:https://atcoder.jp/contests/abc350/tasks/abc350_g大致题意:给出n个点,q个询问1号询问要求u,v之前加一条无向边图始终是一个森林2号询问询问是否有一个点与u,v都相邻,若有则输出该点,若无则输出0。询问强制在线。思路:在题目要求的图中,满足2号询问的点只有三种情况:要么这个......
  • AtCoder Beginner Contest 350
    B-DentistAoki难度:⭐题目大意现在有数列1~n,现在有m次操作,每次给出一个x,如果x存在就是删去,不存在就加上;问最后数列还剩多少个;解题思路数据很小,暴力就行;神秘代码#include<bits/stdc++.h>#defineintlonglong#defineIOSios::sync_with_stdio......
  • AtCoder Beginner Contest 350
    A-PastABCs(abc350A)题目大意给定一个形如ABCXXX的字符串。问XXX是否是\(001\to349\)之间,且不能是\(316\)。解题思路将后三位转换成数字后判断即可。神奇的代码a=int(input().strip()[3:])ifa>=1anda<=349anda!=316:print("Yes")else:p......
  • AtCoder Beginner Contest 350 (小白来了)
    A-PastABCs思路:题意需要计算已经结束的比赛其中1~349属于已经结束的比赛,其中316没有计算进去模拟即可Code:#include<bits/stdc++.h>usingnamespacestd;intmain(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);strings;cin>......
  • AtCoder Beginner Contest 350 解题报告
    AtCoderBeginnerContest350A-PastABCs当且仅当串为\(\texttt{ABC000},\texttt{ABC316},\texttt{ABC350}\sim\texttt{ABC999}\)时输出\(\texttt{No}\)。(本人因\(000\)挂了一发。)#include<bits/stdc++.h>usingnamespacestd;intmain(){ ios::sync_with_......
  • POI2011PRO-Programming Contest
    POI#Year2011#Dinic#网络流#贪心容易想到拆点的费用流做法,但是二分再拆点的时间复杂度是不可接受的考虑因为每个的时间\(r\)是定值,所以不可能出现做题个数差超过\(1\)的情况所以每一轮每个分配一个,用\(Dinic\)在推进一次,知道满流//Author:xiaruizeconstintN=......
  • The 18th Zhejiang Provincial Collegiate Programming Contest
    目录写在前面AMLCIJFGD写在最后写在前面比赛地址:https://codeforces.com/gym/103055。以下按个人难度向排序。唐唐唐唐唐,又是死在数学手上的一次。妈的为什么上个大学这么累好相似A签到。///*By:Luckyblock*/#include<bits/stdc++.h>#defineLLlonglong//=======......
  • AtCoder Beginner Contest 319
    A-LegendaryPlayers#include<bits/stdc++.h>usingnamespacestd;intmain(){map<string,string>h;h["tourist"]="3858";h["ksun48"]="3679";h["Benq"]="3658"......