首页 > 其他分享 >Pinely Round 4 (Div. 1 + Div. 2) 赛后总结

Pinely Round 4 (Div. 1 + Div. 2) 赛后总结

时间:2024-07-29 21:07:20浏览次数:5  
标签:赛时 int Pinely cin Round ans Div Tracy define

Pinely Round 4 (Div. 1 + Div. 2)

赛时提交情况:

CF1991A. Maximize the Last Element

赛时思路

首先,CF判断了足足2min确定我是真人,看到题目时首先想到的是,最后保留的数字之前及之后必然有偶数个数字,且 \(n\) 为奇数,所以我们可以确定若 \(a_i\) 是最后保留的数字, \(i\) 必然为奇数(输入时从 i=1 开始)。

赛时AC代码

#include <bits/stdc++.h>
#define int long long
#define x first
#define y second
#define MAXN 0x3f3f3f3f3f3f3f3f
#define MINN -0x3f3f3f3f3f3f3f3f
#define Trubiacy ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;

//const int N=+29;
int n;

signed main(){
    Trubiacy;
    // int Tracy=1;
    int Tracy; cin>>Tracy;//多组输入
    while(Tracy--){
        cin>>n;
        int ans=MINN;///由于a[i]的数据范围最小为1,所以ans可以初始化为0
        for(int i=1;i<=n;i++){
            int x;cin>>x;
            if(i%2) ans=max(ans,x);//若i为奇数,则a[i]可能是保留到最后的数字,取最大值即可
        }
        cout<<ans<<endl;
    }
    return 0;
}

CF1991B. AND Reconstruction

赛时思路

这道题卡了我很久,位运算实在是太阴间了,我们可以想到,\(a_i\) 既参与到 \(b_i\) 的计算中,也参与到了 \(b_{i-1}\) 的计算中,既然要通过与运算计算出 \(b_i\) 和 \(b_{i-1}\) 的值, \(b_i\) 和 \(b_{i-1}\) 的每一位1都会出现在 \(a_i\) 中,结合对样例的观察可以得出,对于 \(1<i<n-1\) , \(a_i=b_i | b_{i-1}\) ,同时我们可以得知,为了得到 \(b_1\) 与 \(b_{n-1}\) 的值,\(a_1=b_1\), \(a_n=b_{n-1}\)

这里还存在一个问题,最后的答案可能会输出 -1 ,我的解决方式是模拟题目中的情况从头到尾跑一遍看是否符合题目描述。

赛时AC代码

#include <bits/stdc++.h>
#define int long long
#define x first
#define y second
#define MAXN 0x3f3f3f3f3f3f3f3f
#define MINN -0x3f3f3f3f3f3f3f3f
#define Trubiacy ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;

const int N=1e5+29;
int n,a[N],ans[N];//代码中数组命名有点乱,a数组为原题中b数组(使用a是因为我习惯输入的数组是a数组),ans为原题中a数组(使用ans是因为此数组为最终需要输出的数组)

signed main(){
    Trubiacy;
    // int Tracy=1;
    int Tracy; cin>>Tracy;
    while(Tracy--){
        cin>>n;
        for(int i=1;i<n;i++){
            cin>>a[i];
        }
        ans[1]=a[1];
        for(int i=1;i<n-1;i++){
            ans[i+1]=(a[i]|a[i+1]);
        }
        ans[n]=a[n-1];
        
        //判断是否成立(即有无可能输出-1)
        bool f=true;
        for(int i=1;i<n;i++){
            // cout<<(ans[i]&ans[i+1])<<" ";
            if((ans[i]&ans[i+1])!=a[i]){//不符合题目描述,即答案不存在
                f=false;
                break;
            }
        }
        if(!f) cout<<-1;
        else{
            for(int i=1;i<=n;i++){
                cout<<ans[i]<<" ";
            }
        }
        cout<<endl;
    }
    return 0;
}

CF1991C. Absolute Zero

赛时思路

先浅浅吐槽一下这个人机翻译都不如让我直接读英文原文)

这个题,我也不知道我是怎么过的,可以想到的是,我们需要找到一个方法在每次循环之后缩小元素的范围,所以我选择每次进行排序,选择 \(x=\lceil\frac{a_{max}}{2}\rceil\) 进行操作。

另外在想到上面的思路之前我就想到过,若序列中各元素奇偶性不一致,则无解,但我最终没有运用上,因为我担心可能会有奇偶性一致的情况超出40步(官方题解说明了不存在这种情况),所以选择手动进行了40次操作。

赛时AC代码

#include <bits/stdc++.h>
#define int long long
#define x first
#define y second
#define MAXN 0x3f3f3f3f3f3f3f3f
#define MINN -0x3f3f3f3f3f3f3f3f
#define Trubiacy ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;

const int N=2e5+29;
int n,a[N];

signed main(){
    Trubiacy;
    // int Tracy=1;
    int Tracy; cin>>Tracy;
    while(Tracy--){
        cin>>n;
        for(int i=1;i<=n;i++){
            cin>>a[i];
        }
        sort(a+1,a+1+n);
        int t=0;
        vector<int> ans;
        bool f=false;
        while(t<40){
            if(a[n]==0){
                f=true;
                break;
            }
            t++;
            int op=a[n]/2+(a[n]%2==1);//取x的值为最大值/2上取整
            ans.push_back(op);//将答案暂存因为后面还要判断是否有解
            for(int i=1;i<=n;i++){
                a[i]=abs(a[i]-op);
            }
            sort(a+1,a+1+n);
        }
        // cout<<t<<endl;
        // if(a[n]==0) f=true;
        if(f){
            cout<<t<<endl;
            for(auto i:ans) cout<<i<<" ";
        }
        else cout<<-1;
        cout<<endl;
    }
    return 0;
}

赛后补充

看过官方和洛谷的题解之后发现,这道题的核心思路在于找到一个方法在每次循环之后缩小元素的范围,而这个方法有很多.

标签:赛时,int,Pinely,cin,Round,ans,Div,Tracy,define
From: https://www.cnblogs.com/Trubiacy/p/18331072

相关文章

  • Pinely Round 4 (Div. 1 + Div. 2)
    Preface难得地有直觉的一场,50min过了前5题后形式大好,然后F也一眼看出了有个斐波那契的上界结果写了个暴力判断交上去一直挂,前面一直以为是一定有解的阈值设错了,没想到挂了好几发后发现暴力漏了一种Case,真是唐完了A.MaximizetheLastElement不难发现只有奇数位置上的......
  • 易优CMS模板标签uibackground背景图片在模板文件index.htm中调用uibackground标签,实现
    【基础用法】标签:uibackground描述:背景图片上传标签,使用时结合html一起才能完成可视化布局,只针对具有可视化功能的模板。用法:<divclass="eyou-edit"e-id="文件模板里唯一的数字ID"e-page='文件模板名'e-type="background"style="background-image:url({eyou:uibackgrounde......
  • Pinely Round 4 (Div. 1 + Div. 2)(A - F)
    PinelyRound4(Div.1+Div.2)(A-F)A-MaximizetheLastElement解题思路:只有奇数位置能选。偶数位置前后都有奇数个数字,无法删完。代码:#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;usingpii=pair<ll,ll>;#definefifirst#define......
  • Codeforces Round 961 (Div. 2) 复盘
    第一次打div2的总结div2难度明显比div3要难一些,其实也不是很难前面的签到题,但是给了我一种每道题都可以直接暴力但是就是会超时的感觉,不知道是不是提前就在告诉你要考虑greedythinking。T11995A-Diagonals这道题说实话就是存粹的模拟,除了最长的一个对角线同长度只有一列,其......
  • CF Div3 962补题 E-F
    CFDiv3962补题E-FE.Decode链接:Problem-E-Codeforces简要题意:给你一个长度为\(n\)的二进制字符串\(s\)。对于每一对整数\((l,r)\)\((1\leql\leqr\leqn)\)中,数出\((x,y)\)\((l\leqx\leqy\leqr)\)这样的整数对的个数。\((l\leqx\leqy\leq......
  • NSSRound#4 Team
    [NSSRound#4SWPU]1zweb考察:phar的反序列化1.打开环境,审计代码1.非预期解直接用file伪协议读取flag,或直接读取flagfile:///flag/flag2.正常解法用读取文件读取index.php,upload.php的源码 index.php:<?phpclassLoveNss{public$ljt;public$dky;......
  • Pinely Round 4 (Div. 1 + Div. 2) 复盘总结
    PinelyRound4(Div.1+Div.2)发挥到极致了,写出了两题A.MaximizetheLastElement对于每个满足他左边的数的个数和他后面的数的个数都是奇数的数,取最大值即可。#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;//#defineintlonglong#defi......
  • Pinely Round 4 (Div. 1 + Div. 2)
    打的挺惨的,也算是活该吧。。总是沉浸在自己的舒适圈里,不肯跳出来,最近的总结和复盘也没认真做,回寝室明明应该做事情,但是就一直打游戏。。要是少打点游戏,也不至于最近这么长时间一场cf都没有vp过,手感这么差了。不过这次的题目也确实是我的漏洞。B因为初值的原因爆炸了,到最后都不知......
  • Pinely Round 4 (Div. 1 + Div. 2) 补题记录(A~F)
    打成乐子A容易证明下标为奇数的地方可以取到,下标为偶数的地方不可以取到。直接模拟时间复杂度为\(O(n)\)。#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=1000100;inta[N];signedmain(){intT;scanf("%lld",&T);......
  • Codeforces Round 961 (Div. 2)
    Preface菜的批爆,B2一直WA道心破碎了直接白兰去了,鉴定为纯纯的飞舞本来想着周末补题的然后又摆了一天,E1和E2都没时间补了,鉴定为纯纯的懒狗A.Diagonals签到,贪心枚举即可#include<cstdio>#include<iostream>#include<utility>#include<vector>#include<cstring>#in......