首页 > 其他分享 >Educational Codeforces Round 15 A - E

Educational Codeforces Round 15 A - E

时间:2023-09-01 21:45:28浏览次数:37  
标签:Educational const int res ll Codeforces long 15 void

Educational Codeforces Round 15

目录

A - Maximum Increase

一段上升子数组\([l, r]\)最大化 \(r - l + 1\),我们对于每个 \(l\) 做一个双指针即可

int n, a[N];
void solve()
{       
    cin>>n;
    int res = 0;
    for(int i = 1; i <= n; i++) cin>>a[i];
    for(int i = 1; i <= n; i++)
    {
        int j = i;
        while(j + 1 <= n && a[j + 1] > a[j])
            j++;
        res = max(res, j - i + 1);
        i = j;
    }
    cout<<res<<'\n';
 
 
    return;
}

B - Powers of Two

用map记录下每个数字的出现次数,对于每个数字 \(x\) 枚举 \(z\),即可求出 \(y = 2^z - x\) 出现的次数,注意特判 \(x = y\) 的情况

const int N = 2e5 + 10;
 
ll n, a[N];
map<ll, ll> mp;
void solve()
{       
    cin>>n;
    for(int i = 1; i <= n; i++) 
    {
        cin>>a[i];
        mp[a[i]]++;
    }
    ll res = 0;
    for(int i = 1; i <= n; i++)
    {
        ll base = 1;
        ll x = a[i];
        for(int i = 0; i <= 30; i++)
        {
            if(i != 0)  base *= 2;
            ll y = base - x;
            res += mp[y];
            if(x == y)
                res--;
        }
    }
    res /= 2;
    cout<<res<<'\n';
    return;
}

C - Cellular Network

将信号站和城市排序后,二分答案,二分过程做一个双指针操作即可

typedef long long ll;
 
const int mod = 1e9 + 7;
const int N = 2e5 + 10;
 
ll n, m, a[N], b[N];
 
bool check(ll r)
{
    int i = 1;
    for(int j = 1; j <= m; j++)
        while(i <= n && abs(b[j] - a[i]) <= r)
            i++;
    if(i > n)   return true;
    return false;
}
 
void solve()
{       
 
    cin>>n>>m;
    for(int i = 1; i <= n; i++) 
    {
        cin>>a[i];
    }
    for(int i = 1; i <= m; i++) 
    {
        cin>>b[i];
    }
    sort(a + 1, a + 1 + n);
    sort(b + 1, b + 1 + m);
    ll l = 0, r = 2e9;
    while(l < r)
    {
        ll mid = (l + r) >> 1;
        if(check(mid))  r = mid;
        else l = mid + 1;
    }
    cout<<l<<'\n';
    return;
}

D - Road to Post Office

已知\(a < b\) ,从路程上我们有 3 种走法:

  1. 自行车 \(d\)
  2. 自行车 \(\dfrac{d}{k} \times k\) ,走路 \(d - \dfrac{d}{k} \times k\)
  3. 自行车 \(k\) ,走路 \(d - k\)

我们对这三种的修车次数分类讨论即可,具体见代码

ll d, k, a, b, t;
void solve()
{       
    cin>>d>>k>>a>>b>>t;
    ll res = d * b;
    
    ll c = d / k + (d % k != 0) - 1;
    // cout<<c<<"   "<<r<<'\n';+
    res = min({d * a + c * t, res});
    // 情况1

    if(d % k != 0)  c--;
    res = min({max(0ll, c) * t + (d % k) * b + (max(0ll, c) + 1) * k * a, res});
    // 情况2
    
    res = min(a * min(k, d) + (d - min(k, d)) * b, res);
	// 情况3
    cout<<res<<'\n';
    return;
}

E. Analysis of Pathes in Functional Graph

倍增 LCA

2023杭电多校第六场Calculate和这道题很像

倍增预处理即可

//  AC one more times

#include <bits/stdc++.h>
#define int long long 
using namespace std;

typedef long long ll;

const int mod = 1e9 + 7;
const int N = 1e5 + 10;
const int LOGN = 33;

ll n, k;
ll e[N], w[N], fa[N][LOGN + 2], f[N][LOGN + 2], g[N][LOGN + 2];
void init()
{
    for(int j = 1; j <= LOGN; j++)
        for(int i = 1; i <= n; i++)
        {
            fa[i][j] = fa[fa[i][j - 1]][j - 1];
            f[i][j] = f[i][j - 1] + f[fa[i][j - 1]][j - 1];
            g[i][j] = min(g[i][j - 1], g[fa[i][j - 1]][j - 1]);
            //cout<<j<<" "<<fa[i][j - 1]<<"  "<<f[i][j - 1]<<"  "<<g[i][j - 1]<<'\n';
        }
}
void query(int u)
{
    ll res = 0;
    ll res2 = 1e9;
    //cout<<k<<'\n';
    for(ll i = LOGN; i >= 0; i--)
    {
        //cout<<i<<"   "<<((k >> i) & 1)<<'\n';
        if(k & (1ll << i))
        {
            //cout<<i<<" "<<fa[u][i]<<"  "<<"  "<<f[u][i]<<"  "<<g[u][i]<<" "<<res<<'\n';
            res = res + f[u][i];
            res2 = min(g[u][i], res2);
            u = fa[u][i];
        }
    }
    cout<<res<<" "<<res2<<"\n";
}
void solve()
{       
    cin>>n>>k;
    for(int i = 1; i <= n; i++)
    {
        cin>>e[i];  e[i]++;
        fa[i][0] = e[i];
    }
    for(int i = 1; i <= n; i++)
    {
        cin>>w[i];
        f[i][0] = w[i];
        g[i][0] = w[i];
    }
    init();
    for(int i = 1; i <= n; i++)
    {
        query(i);
    }

    //cout<<e[1]<<" "<<w[1]<<'\n';
    return;
}


  
signed main()
{
    std::ios::sync_with_stdio(false);   cin.tie(nullptr), cout.tie(nullptr);
    
    int TC = 1;
    
    //cin >> TC;    
    for(int tc = 1; tc <= TC; tc++)
    {
        //cout << "Case #" << tc << ": ";         
        solve();
    }


    return 0;
}

标签:Educational,const,int,res,ll,Codeforces,long,15,void
From: https://www.cnblogs.com/magicat/p/17672888.html

相关文章

  • Educational Codeforces Round 5 A-E
    EducationalCodeforcesRound5垫底咯,中间老师找我去聊了下新学期的机房借用和训练,但出去前就只有我没出E目录EducationalCodeforcesRound5AComparingTwoLongIntegersBDinnerwithEmmaCTheLabyrinthDLongestk-GoodSegmentE-SumofRemaindersAComparingTwo......
  • TO-277封装肖特基二极管SP1545L:15A 45V
    目前,市面上供应肖特基二极管的厂家、供应商特别地多,更多选择的背后,带来的却是更多的迷茫和不知所措。采购肖特基二极管,哪家好呢?提及“东沃电子DOWOSEMI”这个国产二极管品牌,很多客户可能第一想到他家的TVS二极管、ESD二极管、稳压二极、压敏电阻MOV、陶瓷气体放电管GDT、自恢复保险......
  • AP51656 PWM和线性调光 LED车灯电源驱动IC 兼容替代PT4115 PT4205
    产品描述AP51656是一款连续电感电流导通模式的降压恒流源用于驱动一颗或多颗串联LED输入电压范围从5V到60V,输出电流可达1.5A。根据不同的输入电压和外部器件,可以驱动高达数十瓦的LED。内置功率开关,采用高端电流采样设置LED平均电流,通过DIM引脚可以接受模拟调光和很宽范围......
  • P4344 SHOI2015 脑洞治疗仪
    \(P4344\)[\(SHOI2015\)]脑洞治疗仪一、题目描述曾经发明了自动刷题机的发明家\(SHTSC\)又公开了他的新发明:脑洞治疗仪——一种可以治疗他因为发明而日益增大的脑洞的神秘装置。为了简单起见,我们将大脑视作一个\(01\)序列。\(1\)代表这个位置的脑组织正常工作,\(0\)代表......
  • ogg 的抽取进程 2015-06-17 05:51:08 ERROR OGG-02077
    报错信息如下HowtoresolveExtractAbendingWithOGG-02077Error(DocID2037420.1)这种情况是把抽取进程注册到数据库中了,你又强制启动相同的抽取进程,就会与数据库中注册的进程冲突,你可以执行下边语句删除数据库中抽取进程Stepstoclearthespecificextractcomponen......
  • 【CF1503A】Balance the Bits(构造)
    题目大意:#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;lln;chars[200000+10];chara[200000+10],b[200000+10];intmain(){ ios::sync_with_stdio(0); cin.tie(0); intT; cin>>T; while(T--){ cin>>n>>(s+......
  • CF1615F O(n) solution
    \(O(n)\)做法,目前CF最优解。首先,考虑如何计算两个串的答案。把奇数位置的值取反,那每次操作相当于\(01\to10\)或\(10\to01\)。于是当两个串\(1\)的个数相等时可以达成。可以看作若干个\(1\)在一条链上移动到新的位置。答案为距离之和,把移动贡献均摊到每条边上,那每一......
  • 【CF1542C】Strange Function(数论)
    题目大意:#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constllmod=1e9+7;lln;lllcm(llx,lly){ returnx/__gcd(x,y)*y;}intmain(){ intT; cin>>T; while(T--){ cin>>n; llans=n%mod; for(lli=1,j=1;n/j......
  • Educational Codeforces Round 148 (Rated for Div. 2)E. Combinatorics Problem(组合
    题目链接:https://codeforces.com/contest/1832/problem/E 题意:  当然这是化简后的题意,原题面和这个差距还是有点大的; 分析: 因为组合数有公式:  所以:   嗯,然后就没有了; 时间复杂度:O(n*k); 代码: #include<bits/stdc++.h>#defineintlonglong......
  • 【剑指Offer】15、反转链表
    【剑指Offer】15、反转链表题目描述:输入一个链表,反转链表后,输出新链表的表头。解题思路:本题比较简单,有两种方法可以实现:(1)三指针。使用三个指针,分别指向当前遍历到的结点、它的前一个结点以及后一个结点。将指针反转后,三个结点依次前移即可。(2)递归方法。同样可以采用递归来实现......