首页 > 其他分享 >Educational Codeforces Round 171 (Div. 2)

Educational Codeforces Round 171 (Div. 2)

时间:2024-10-29 23:33:06浏览次数:1  
标签:Educational int ll Codeforces -- solve ans Div include

Educational Codeforces Round 171 (Div. 2)

A

猜结论,两条边的最小值最大时,两条边相等。所以取 \(min(x,y)\) 为边长的正方形,对角线就是所求。

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

using namespace std;

int x,y,k;
void solve()
{
    cin>>x>>y>>k;
    int t=min(x,y);
    cout<<0<<' '<<0<<' '<<t<<' '<<t<<'\n';
    cout<<0<<' '<<t<<' '<<t<<' '<<0<<'\n';
}
int main ()
{
    #ifndef ONLINE_JUDGE 
    freopen("1.in","r",stdin);
    freopen("1.out","w",stdout);
    #endif
    int T;
    cin>>T;
    while(T--) solve();
    return 0;
}

B

赛时罚时吃爽了 qwq。

首先若 \(n\) 为偶数,必须是两两匹配涂黑的,不能有列表外的被涂黑。涂 \((1,2)\),\((3,4)\),\((5,6)\) 等等。在这些的差值取最大就是 \(k\)。

若 \(n\) 为奇数,那么就是能且必须有一个数不是和列表中的数匹配涂黑,枚举这个数 \(i\),将数组分为两部分 \((1,i-1)\) 和 \((i+1,n)\),和 \(n\) 为偶数的情况一样考虑两部分。\(O(n^2)\) 复杂度完全可以。

一开始认为奇数情况下只能让开头和末尾的和其他的数涂黑 qwq。

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

using namespace std;
typedef long long ll;
const int N=2005;
const ll inf=1e18;
int n;
ll a[N];

void solve()
{
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    ll ans=inf;
    if(n&1)
    {
        ll ans=inf;
        for(int i=1;i<=n;i+=2)
        {
            ll mx=0;
            for(int j=1;j<i;j+=2) mx=max(mx,a[j+1]-a[j]);
            for(int j=i+1;j<=n;j+=2) mx=max(mx,a[j+1]-a[j]);
            ans=min(ans,mx);
        }
        cout<<max(1ll,ans)<<'\n';
    }   
    else 
    {
        ll mx=0;
        for(int i=2;i<=n;i+=2) mx=max(mx,a[i]-a[i-1]);
        cout<<mx<<'\n';
    } 
}
int main ()
{
    #ifndef ONLINE_JUDGE 
    freopen("1.in","r",stdin);
    freopen("1.out","w",stdout);
    #endif
    int T;
    cin>>T;
    while(T--) solve();
    return 0;
}

C

首先肯定要贪心考虑,尽可能优惠后面的商品,尽可能多的优惠。

等于 \(0\) 的商品肯定不能优惠,因为可以有更优的选择。

将 \(0\) 和 \(1\) 分开,用双端队列存 \(1\) 的位置,每次取队尾,然后肯定是有 \(0\) 就用 \(0\) 的位置出现的商品和当前的拼起来优惠,否则取队首的 \(1\)。如果都没有的话就不能优惠。

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <queue>
using namespace std;
typedef long long ll;
const int N=4e5+5;
int n;
string s;
deque<int> dq;
int st[N],tot;
ll ans;
void solve()
{
    cin>>n;
    cin>>s;
    tot=ans=0;
    for(int i=0;i<n;i++) 
    {
        if(s[i]-'0') dq.push_back(i+1);
        else st[++tot]=i+1;
        ans+=i+1;
    }
    while(dq.size())
    {
        int x=dq.back();dq.pop_back();
        while(tot&&st[tot]>x) tot--;
        if(tot) 
        {
            tot--;
            ans-=x;
        }
        else 
        {
            if(dq.size())
            {
                dq.pop_front();
                ans-=x;
            }
        }

    }
    cout<<ans<<'\n';
}
int main ()
{
    #ifndef ONLINE_JUDGE 
    freopen("1.in","r",stdin);
    freopen("1.out","w",stdout);
    #endif
    int T;
    cin>>T;
    while(T--) solve();
    return 0;
}

D

shi 一样的数学题,还没调出来。

标签:Educational,int,ll,Codeforces,--,solve,ans,Div,include
From: https://www.cnblogs.com/zhouruoheng/p/18514714

相关文章

  • Codeforces Global Round 27
    CodeforcesGlobalRound27总结A将红色的位置\((r,c)\)移走,分为三块来考虑,蓝色的块移动\(m-c\),黄色的块移动\(m*(n-r)\),绿色的块移动\((m-1)*(n-r)\)。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#in......
  • 2024.10.19 CF2030(Div.2)
    比赛链接Solved:5/8Upsolved:6/8Rank:166E.MEXmizetheScore题意定义一个集合的分数为:将它分成若干个子集,mex和的最大值。(mex从0开始算)给n个数,求所有非空子集的分数之和。\(n\leq2\times10^5\)题解对一个确定的集合,它的划分方式一定是每次分出去一个最长的{0,......
  • 2024.10.14 Codeforces Round 978 (Div. 2)
    比赛链接Solved:4/7Upsolved:5/7Rank:447(rated343)D2.Asesino(HardVersion)题意:有n个人,除了一个卧底以外,其他人或者只会说真话,或者只会说谎,且他们知道彼此的身份。卧底只会说谎,但其他人都认为他只会说真话。现在你可以进行若干次询问,每次询问形如问第i个人第j个人是什么......
  • Educational Codeforces Round 171 (Rated for Div. 2) 题解(A-C)
    EducationalCodeforcesRound171(RatedforDiv.2)题解(A-C)这场ABC全都犯病了(悲伤)目录EducationalCodeforcesRound171(RatedforDiv.2)题解(A-C)目录A.PerpendicularSegmentsB.BlackCellsC.ActionFiguresA.PerpendicularSegments大意给你一个......
  • [CodeForces] CF520 题解
    A.Pangram【题目大意】给定一个字符串,询问是否所有英文字符(a到z)都在这个字符串中出现过,不区分大小写。【解题思路】开个桶记录字符是否出现过,最后遍历桶,如果发现有一个没出现就输出NO,否则就输出YES。注意不区分大小写!B.TwoButtons【题目大意】给定两个正整数\(n\)......
  • Educational Codeforces Round 163 (Rated for Div. 2) - VP记录
    Preface这次难度感觉挺平均的,前面的题不水,后面的题也不毒瘤(可能是因为我做的不够后面)A.SpecialCharacters开局构造题。因为特殊字符一定是成对出现的(包括两边的,可以分类讨论思考一下),所以只有\(n\)为偶数的时候才有解。然后直接以AABBAABB...的格式输够\(n\)个就行了......
  • CodeForces
    CodeForces做题记录CodeforcesGlobalRound27ASliding当\((r,c)\)被取走时:\(\foralli\in[r+1,n],(i,1)\)会移动到\([i-1,m]\),曼哈顿距离为\(m\)。\(\foralli\in[r+1,n],j\in[2,m],(i,j)\)会移动到\((i,j-1)\),曼哈顿距离为\(1\)。\(......
  • Educational Codeforces Round 171 (Rated for Div. 2)题解记录
    比赛链接:https://codeforces.com/contest/2026A.PerpendicularSegments题目说了必定有答案,直接对角线即可#include<iostream>#include<queue>#include<map>#include<set>#include<vector>#include<algorithm>#include<deque>#include<......
  • Educational Codeforces Round 171 (Rated for Div. 2)
    目录写在前面A签到B暴力C反悔贪心D枚举,分块,推式子E网络流,最大权闭合子图F写在最后写在前面比赛地址:https://codeforces.com/contest/2026。因为太困了决定睡大觉,于是赛时unratedregister只写了DE。然而十一点半上床还是失眠到一点半睡的太搞了呃呃A签到B暴力限......
  • Educational Codeforces Round 171 (Rated for Div. 2)
    A.PerpendicularSegments分析题目中的要求\(34\),说明需要较短的线段尽量长,那么两个线段应该一样长而又要求线段垂直,那么两线段可以放在一个正方形内做对角线那么此时\(x\)和\(y\)对称(代数一样上),取两个的较小值做一个正方形,答案即为对角线#include<bits/stdc++.h>usin......