首页 > 其他分享 >MX 2025--炼石计划 NOIP 模拟赛 #20

MX 2025--炼石计划 NOIP 模拟赛 #20

时间:2024-11-14 18:46:05浏览次数:1  
标签:20 炼石 val int long mx freopen using NOIP

打得抽象。T3,T4放俩难的板子。由于是MX的题,就不放题意了。

邻间的骰子之舞

发现复制操作不会超过\(64\)次,而粘贴操作肯定是越均匀越好,直接二分暴力跑就行了。

点此查看代码
#include<bits/stdc++.h>
using namespace std;
#define rep(i,s,t,p) for(int i = s;i <= t; i += p)
#define drep(i,s,t,p) for(int i = s;i >= t; i -= p)
#ifdef LOCAL
    FILE *InFile = freopen("in.in","r",stdin),*OutFile = freopen("out.out","w",stdout);
#else
    // FILE *InFile = stdin,*OutFile = stdout;
    FILE *InFile = freopen("dice.in","r",stdin),*OutFile = freopen("dice.out","w",stdout);
#endif
using ll=long long;using ull=unsigned long long;
using db = double;using ldb = long double;
#define int ull
int n,x,y,mx;
inline bool check(int mid){
    rep(i,0,mx,1){
        if(i*x >= mid) break;
        if(!i){
            if((mid - i*x)/y + 1 > n) return true;
            continue;
        }
        int j = (mid - i * x) / y,val = 1,aver = j / (i + 1),last = j-aver*(i + 1);
		rep(k,0,i,1){
			if (last > 0) val += (aver + 1)*val,last --;
            else val += aver * val;
			if (val > n) return true; 
		}
    }
    return false;
}
inline void solve(){
    cin>>n>>x>>y;mx = log2(n);
    int l = 1,r = 1e19,ans = 0;
    while(l <= r){
        int mid = (l + r) >> 1;
        if(check(mid)) ans = mid,r = mid - 1;
        else l = mid + 1;
    }
    cout<<ans+x<<'\n';
}
signed main(){
    cin.tie(nullptr)->sync_with_stdio(false);
    solve();
}

星海浮沉录

用\(set\)维护每个数出现的位置,用\(multiset\)维护每个数可以贡献的长度,用线段树维护区间最大值,线段树上二分即可。\(set\)插入哨兵节点会更方便一点。

点此查看代码
#include<bits/stdc++.h>
using namespace std;
#define rep(i,s,t,p) for(int i = s;i <= t; i += p)
#define drep(i,s,t,p) for(int i = s;i >= t; i -= p)
#ifdef LOCAL
    FILE *InFile = freopen("in.in","r",stdin),*OutFile = freopen("out.out","w",stdout);
#else
    // FILE *InFile = stdin,*OutFile = stdout;
    FILE *InFile = freopen("star.in","r",stdin),*OutFile = freopen("star.out","w",stdout);
#endif
using ll=long long;using ull=unsigned long long;
using db = double;using ldb = long double;
const int N = 5e5 + 10;
int n,q,a[N];
set<int> pos[N];
multiset<int> mx[N];
#define ins insert
struct Segment_Tree{
    struct segment_tree{
        int l,r,val;
        #define l(x) tree[x].l
        #define r(x) tree[x].r
        #define val(x) tree[x].val
    }tree[N<<2];
    inline void pushup(int k){val(k) = max(val(k<<1),val(k<<1|1));}
    void build(int k,int l,int r){
        l(k) = l,r(k) = r;
        if(l == r) return val(k) = *mx[l].rbegin(),void();
        int mid = (l + r) >> 1;
        build(k<<1,l,mid);build(k<<1|1,mid+1,r);
        pushup(k);
    }
    void upd(int k,int pos,int val){
        if(l(k) == r(k)) return val(k) = val,void();
        int mid = (l(k) + r(k)) >> 1;
        if(pos <= mid) upd(k<<1,pos,val);else upd(k<<1|1,pos,val);
        pushup(k);
    }
    int qry(int k,int x){
        if(l(k) == r(k)) return l(k);
        int ls = k<<1;
        if(val(ls) >= x) return qry(k<<1,x);
        else return qry(k<<1|1,x);
    }
}T;
inline void solve(){
    cin>>n>>q;
    rep(i,1,n,1) cin>>a[i];
    rep(i,0,n+1,1) pos[i].ins(0);
    rep(i,1,n,1){
        auto it = pos[a[i]].ins(i).first;
        it--;mx[a[i]].ins(i - *it - 1);
    }
    rep(i,0,n+1,1){
        auto it = pos[i].ins(n+1).first;
        it--;mx[i].ins(n - *it);
    }
    T.build(1,0,n+1);
    auto del = [&](int val,int s){
        auto it = pos[val].lower_bound(s);
        int p1,p2;
        it--;mx[val].erase(mx[val].lower_bound(s-*it-1));p1 = *it;it++;
        it++;mx[val].erase(mx[val].lower_bound(*it-s-1));p2 = *it;
        mx[val].insert(p2-p1-1);
        pos[val].erase(s);
    };
    auto add = [&](int val,int s){
        auto it = pos[val].upper_bound(s);
        int p1,p2;
        p2 = *it;it--;p1 = *it;
        mx[val].erase(mx[val].lower_bound(p2-p1-1));
        mx[val].insert(p2-s-1);
        mx[val].insert(s-p1-1);
        pos[val].ins(s);
    };
    auto change = [&](int val,int s,int t){
        del(val,s);add(val,t);
        T.upd(1,val,*mx[val].rbegin());
    };
    rep(test,1,q,1){
        int op,x;cin>>op>>x;
        if(op == 1){
            if(a[x] == a[x+1]) continue;
            change(a[x],x,x+1);
            change(a[x+1],x+1,x);
            swap(a[x],a[x+1]);
        }
        else cout<<T.qry(1,x)<<'\n';
    }
}
signed main(){
    cin.tie(nullptr)->sync_with_stdio(false);
    solve();
}

勾指起誓

如题目名,勾誓。FMT板子,不会。

第八交响曲

双调排序板子,不会的自行bdfs吧。

点此查看代码
#include<bits/stdc++.h>
using namespace std;
#define rep(i,s,t,p) for(int i = s;i <= t; i += p)
#define drep(i,s,t,p) for(int i = s;i >= t; i -= p)
#ifdef LOCAL
    FILE *InFile = freopen("in.in","r",stdin),*OutFile = freopen("out.out","w",stdout);
#else
    // FILE *InFile = stdin,*OutFile = stdout;
    FILE *InFile = freopen("symphony.in","r",stdin),*OutFile = freopen("symphony.out","w",stdout);
#endif
using ll=long long;using ull=unsigned long long;
using db = double;using ldb = long double;
int n,lgn;
inline void solve(){
    cin>>n;lgn = 1<<__lg(n-1)+1;
    auto print = [](int a,int b){if(b <= n) cout<<"CMPSWP R"<<a<<" R"<<b<<' ';};
    cout<<__lg(lgn)*(__lg(lgn)+1)/2<<'\n';
    rep(i,1,lgn-1,i){
        rep(j,1,lgn,i*2) rep(k,0,i-1,1) print(j+k,j+i*2-1-k);
        cout<<'\n';
        for(int j = i/2;j >= 1;j /= 2){
            rep(k,1,lgn,j*2) rep(p,0,j-1,1) print(k+p,k+j+p);
            cout<<'\n';
        }
    }
}
signed main(){
    cin.tie(nullptr)->sync_with_stdio(false);
    solve();
}
p

image

标签:20,炼石,val,int,long,mx,freopen,using,NOIP
From: https://www.cnblogs.com/hzoi-Cu/p/18546582

相关文章

  • 2024年秋国开电大《建筑结构试验》形考任务1-4
    形考作业一1.下列选项中,()项不属于科学研究性试验。答案:检验结构的质量,说明工程的可靠性2.下列各项,()项不属于工程鉴定性试验。答案:验证结构计算理论的假定3.按试验目的进行分类,可将结构试验分成()。答案:工程鉴定性试验和科学研究性试验4.按试验对象进行分类,可将结构试验分成()......
  • 2024/11/14
    修改数组(蓝桥杯)分数20作者liudan单位石家庄铁道大学给定一个长度为N的数组A=[A1,A2,⋅⋅⋅AN],数组中有可能有重复出现的整数。现在小明要按以下方法将其修改为没有重复整数的数组。小明会依次修改A2,A3,⋅⋅⋅,AN。当修改Ai时,小明会检查Ai是否在A1∼Ai−1中出......
  • 2024.11.14随笔&联考总结
    前言今天联考直接炸纲了。但是不得不说:HEZ的题要比BSZX好多了。联考今天联考题说实话难度应该比较适合我。第一题是推结论的题,我赛时20min想出正解,但是有两个细节没有考虑清楚,导致后来调题调了一个多小时,然后经典开警告但是不看秒了,期望得分100pts,实际0pts。原因bool......
  • PH热榜 | 2024-11-14
    DevNow是一个精简的开源技术博客项目模版,支持Vercel一键部署,支持评论、搜索等功能,欢迎大家体验。[在线预览](https://www.laughingzhu.c1.Vocera标语:利用模拟和监控加速语音代理上线这句话的意思是:通过使用模拟和监控工具,可以更快地开发并上线语音代理。解释:语......
  • CCF - 网易雷火基金项目成果:基于大小模型协同的低资源标注技术|CNCC 2024 演讲实录
    在科技蓬勃发展的时代浪潮中,人工智能领域的每一次突破都离不开持续的科研投入和对前沿技术的不懈探索。2023年,网易伏羲与中国计算机学会(CCF)共同发起了“CCF-网易雷火联合基金”,致力于发挥和利用多方资源优势,加强与海内外青年学者的科研合作,促进中国人工智能等领域尖端技术产业......
  • 【考试题解】NOIP2024(欢乐)加赛3
    目录A.SakurakoandWater题目内容思路代码B.BinomialCoefficients,KindOf题目内容思路代码C.QED'sFavoritePermutation题目内容思路代码D.CardGame题目内容思路代码E.LongWaytobeNon-decreasing题目内容思路代码F.ManyGames题目内容思路代码A.SakurakoandW......
  • MX 炼石计划 NOIP 模拟赛20(我真做过1~19吗?)
    MX炼石计划NOIP模拟赛#20T1邻间的骰子之舞二分答案,发现性质,签到,过。记得开__int128没开,挂30.码:CODE#include<bits/stdc++.h>typedeflonglongll;usingnamespacestd;constintN=2e5+100;#ifdeflinux#definegetchargetchar_unlocked#define......
  • 2024.11.14 NOIP训练赛
    2024.11.14NOIP训练赛Problem对满足以下条件的01矩阵\(A\)计数:行数为\(n+1\)(从\(0\)至\(n\)标号),列数为\(k\)(从\(1\)至\(k\)标号);不存在使得\(A_{0,i}\simA_{n-1,i}\)这\(n\)个数都为\(1\)的列\(i\);存在使得\(A_{1,i}\simA_{n,i}\)这\(n\)......
  • 2024年八大云手机品牌推荐
    面对市面上众多的云手机品牌,如何挑选出性价比高、性能稳定的产品呢?本文将为大家推荐2024年八大值得信赖的云手机品牌。OgPhone云手机OgPhone云手机作为行业领先品牌之一,凭借其强大的海外网络连接能力、多账号群控功能和稳定的服务,成为了不少企业和个人用户进行出海业务的好......
  • 中国工业统计年鉴(1949-2023年)(前身是中国工业经济统计年鉴)“
    01、数据简介一、《中国工业统计年鉴》是一部全面反映中国工业经济发展情况的资料性年刊,系统地收录了全国各经济类型、各工业行业和各省、自治区、直辖市等工业经济统计数据,以及主要指标历史数据。二、全书包括四大部分内容:综合数据、分行业数据、分地区数据和附录。主要......