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

Educational Codeforces Round 171 (Rated for Div. 2)

时间:2024-10-29 09:09:09浏览次数:6  
标签:Educational Rated const int ll Codeforces long mid typedef

A. Perpendicular Segments

分析

题目中的要求\(34\),说明需要较短的线段尽量长,那么两个线段应该一样长

而又要求线段垂直, 那么两线段可以放在一个正方形内做对角线

那么此时\(x\)和\(y\)对称(代数一样上), 取两个的较小值做一个正方形,答案即为对角线

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int>PII;
const int N=1e6+10;
const int mod=998244353;
const int INF  = 0x3f3f3f3f;
const ll INFll  = 0x3f3f3f3f3f3f3f3f;
#define endl "\n" 

//vector<vector<int>>adj(N);


void solve()
{
    int x, y, k;
    cin >> x >> y >> k;
    if(x > y) swap(x, y);
    cout << "0 0 " << x << " " << x << endl;
    cout << "0 " << x << " " << x << " 0" << endl;
}


signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    cout << setprecision(11) << fixed;
    int t;t=1;
    cin>>t;
    for(int i=1;i<=t;i++){
        //printf("Case %d: ",i);
        solve();
    }
}

B. Black Cells

赛时脑瘫了,看到\(1e18\)不敢二分,硬写了个\(o(n)\), 成功\(wa2\)

分析

直接二分\(k\)的大小
分析\(check\)
如果\(n\)是偶数,最好的情况就是每次选相邻的两个,这种情况甚至不需要二分,直接算出来

否则可以选一个不染,当发现此时\(k\)不够染相邻\(2\)个时,舍掉左边那个,继续染剩下的

#include<bits/stdc++.h>
#define int long long
using namespace std;
typedef long long ll;
typedef pair<int,int>PII;
const int N=1e6+10;
const int mod=998244353;
const int INF  = 0x3f3f3f3f;
const ll INFll  = 0x3f3f3f3f3f3f3f3f;
#define endl "\n" 

//vector<vector<int>>adj(N);

int a[N];
int b[N],c[N];
int n;
bool check(int mid) {
    for(int i = 1; i + 1 <= n; i += 2) {
        if(a[i + 1] - a[i] > mid) {
            if(n % 2 == 0) return false;
            if(i % 2 == 0) return false;
            i --;
        }
    }
    return true;
} 


void solve()
{
   
    cin >> n;
    for(int i = 1; i <= n; i ++) {
        cin >> a[i];
    }
    int l = 1, r = 1e18;
    while(l < r) {
        int mid = l + r >> 1;
        if(check(mid)) r = mid;
        else l = mid + 1;
    }

    cout << l << endl;
}


signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    cout << setprecision(11) << fixed;
    int t;t=1;
    cin>>t;
    for(int i=1;i<=t;i++){
        //printf("Case %d: ",i);
        solve();
    }
}

C. Action Figures

分析

首先,在某天买东西时,一定会试图免费第\(i\)个物品,因为这是可买中,最贵的

所以,当\(s[i] == 0\) 时, \(i\)物品的钱一定要出。

所以我们考虑那些物品可以被免费

逆袭枚举每一天,同时,用一个队列来存需要免费的物品

  • 如果\(s[i] == 1\), 丢到队列里面
  • 如果\(s[i] == 0\), 记录价值,同时取出队首(最贵的)
    当枚举后,队列可能不空,需要支付里面较小的一半的钱,同时也可以免费较大的
#include<bits/stdc++.h>
#define int long long
using namespace std;
typedef long long ll;
typedef pair<int,int>PII;
const int N=1e6+10;
const int mod=998244353;
const int INF  = 0x3f3f3f3f;
const ll INFll  = 0x3f3f3f3f3f3f3f3f;
#define endl "\n" 

//vector<vector<int>>adj(N);


void solve()
{
    int n; cin >> n;
    string s; cin >> s;
    s = " " + s;
    int cnt = 0;
    queue<int> q;
    int ans = 0;
    vector<int>a(n + 1);

    for(int i = n; i >= 1; i --) {
        if(s[i] == '1') q.push(i);
        else {
            ans += i;
            if(q.size())q.pop();
        }
    } 

    int t = (q.size() + 1)/2; // 这里没明白可以改为双端队列,一个一个慢慢算
    while(q.size()) {
        if(q.size() <= t) ans += q.front();
        q.pop();
    }
    cout << ans << endl;

}


signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    cout << setprecision(11) << fixed;
    int t;t=1;
    cin>>t;
    for(int i=1;i<=t;i++){
        //printf("Case %d: ",i);
        solve();
    }
}

D. Sums of Segments

写的最屎的一题,正在试图看懂赛时代码

分析

标签:Educational,Rated,const,int,ll,Codeforces,long,mid,typedef
From: https://www.cnblogs.com/Haborym/p/18512055

相关文章

  • Codeforces Round 982 (Div. 2) 10.26 (ABC)题解
    CodeforcesRound982(Div.2)10.26(ABC)题解A.RectangleArrangement数学(math)题意:有一个无限长宽的方形网格,初始为白色,现在有\(n\)个印章,每个印章有自己的宽\(w_i\)和高\(h_i\)。印章会使得网格涂色,变成黑色。这\(n\)个印章都需要使用一次,需要求解出最后网格中黑色......
  • Codeforces Round 982 (Div. 2) 题解(A-D)
    目录A思路codeB思路codeC思路卡题原因codeD思路未ac原因codeCodeforcesRound982(Div.2)A思路因为图形可以重叠,所以答案就是最长的长和最长的宽组成的矩形周长.codevoidfunc(void){ intn; cin>>n; intl=0,r=0; while(n--) { intx,y; cin>>x>>y......
  • Codeforces Round 982 (Div. 2)
    A.RectangleArrangement题目给定\(n\)个矩形,\(n\)个矩形可以组成的图形(可以重叠)中,最小的周长的多少,矩形不能旋转,分析乍一看并没有什么思路,但是写出这个题并不能,案例很好的提示了我们要将所有矩形一角放一起,那么最后就会组成一个阶梯形状的图案,感觉割补法,这个图形周长等......
  • Codeforces Round 981 (Div. 3) 题解(A-E)
    目录分析A思路代码B思路卡题原因代码C思路卡题原因codeD思路卡题原因代码E思路wa原因codeCodeforcesRound981(Div.3)分析这场整体发挥都不好,虽然题也抽象,但是对于这些题完全没必要卡这么久.正常至少能看到\(\mathbf{F}\)A思路因为边界\(n\)管辖\(\pm\),而Sak......
  • Codeforces Round 980 (Div. 2) 题解(A-D)
    目录A思路B思路wa原因C思路wa原因代码D思路未ac原因代码CodeforcesRound980(Div.2)A思路推方程式即可,勉强算贪心吧.需要使得\({a-x}\)最小,那么\(x\)就需要最小,而满足题目条件,需要\(a-x\geb-2x\)得出\(x\geb-a\),又因为需要\(a\)最大,所以\(......
  • Python's exec Functions: Execute Dynamically Generated Code
      #encoding:utf-8#版權所有2024©塗聚文有限公司#許可資訊查看:言語成了邀功的功臣,還需要行爲每日來值班嗎?#描述:主、子表單窗體傳值Parent-childformoperations#Author:geovindu,GeovinDu塗聚文.#IDE:PyCharm2023.1python3.11#OS......
  • Codeforces Round 982 div2 个人题解(A~D2)
    CodeforcesRound982div2个人题解(A~D2)Dashboard-CodeforcesRound982(Div.2)-Codeforces火车头#define_CRT_SECURE_NO_WARNINGS1#include<algorithm>#include<array>#include<bitset>#include<cmath>#include<cstdio>#in......
  • Codeforces Round 980 (Div. 2)
    目录写在前面A签到B贪心,模拟C贪心,结论,思维D图论转化,最短路写在最后写在前面比赛地址:https://codeforces.com/contest/2030。赛时被B硬控1h,后面两题一眼秒了一共写了20min呃呃。还好是小号。A签到讨论一下很容易算出来最优决策。///*By:Luckyblock*/#include......
  • Codeforces Round 981 (Div. 3) 10.24 (ABCDE)题解
    CodeforcesRound981(Div.3)2024.10.24题解A.SakurakoandKosuke题意:\(Sakurako\)与\(Kosuke\)正在玩游戏,一个点在原点\(x=0\)的起始位置。对于第\(i\)次操作,点会移动\(2\asti-1\)步。两人轮流操作,Sakurako先手,每次将点往负方向移动;Kosuke每次将点往正方向移动......
  • Codeforces Round 979 (Div. 2)
    目录写在前面A签到B构造C博弈D模拟E组合数学写在最后写在前面比赛地址:https://codeforces.com/contest/2030。赛时E看错题了变成神题了而且居然还口胡了一个自然根号的做法还写出来了然而样例没过最后才发现读错题了妈的。掉分!A签到\(b,c\)即前缀最小值和最大值,显......