首页 > 其他分享 >2024.10.26 2024 CCPC哈尔滨站

2024.10.26 2024 CCPC哈尔滨站

时间:2024-10-29 21:31:52浏览次数:8  
标签:pii 2024.10 int 26 long 2024 leq lst typedef

Solved:6/13

Penalty:635

Rank:72

Rank(ucup):170


打到后面困了(而且不会 L 心态爆炸)睡觉去了,不然还能多做个 E 题(

被 L 单防了啊。。


CGKM:签到,不放了。


J. New Energy Vehicle

$n$ 种汽油,$m$ 个加油站,每个加油站只能加一种油,每种油都是一单位能走一公里,求最远能走多少公里。$n,m\leq 10^5$。


贪心,优先用下次出现最早的那种油。

set<pair<int,int>> 维护(下次出现位置,编号)即可。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;

const int N=1e5+5;
int n,m,a[N],c[N],x[N],t[N],fir[N],lst[N],nxt[N];
ll solve(){
    cin>>n>>m;
    for(int i=1;i<=n;++i)cin>>a[i],c[i]=a[i];
    for(int i=1;i<=m;++i)cin>>x[i]>>t[i];
    for(int i=1;i<=n;++i)fir[i]=m+1,lst[i]=0;
    for(int i=1;i<=m;++i){
        if(fir[t[i]]>m)fir[t[i]]=i;
        if(lst[t[i]])nxt[lst[t[i]]]=i;
        lst[t[i]]=i;
    }
    for(int i=1;i<=n;++i)if(lst[i])nxt[lst[i]]=m+1;
    set<pii> s;
    for(int i=1;i<=n;++i)s.insert(pii(fir[i],i));
    ll sum=0;
    for(int i=1;i<=m;++i){
        int r=x[i]-x[i-1];
        while(!s.empty()&&c[s.begin()->second]<=r){
            int k=s.begin()->second;
            sum+=c[k],r-=c[k],c[k]=0;
            s.erase(s.begin());
        }
        if(s.empty()&&r>0)return sum;
        c[s.begin()->second]-=r,sum+=r;
        c[t[i]]=a[t[i]];
        if(s.find(pii(i,t[i]))!=s.end())s.erase(pii(i,t[i]));
        s.insert(pii(nxt[i],t[i]));
    }
    for(int i=1;i<=n;++i)sum+=c[i];
    return sum;
}

int main(){
    ios::sync_with_stdio(0);cin.tie(0);
    int T;
    cin>>T;
    while(T--)cout<<solve()<<'\n';
}

A. Build a Computer

构造一个有限状态自动机,使其能且只能识别$[L,R]$范围内的所有二进制串(无前导零)。

$1\leq L\leq R\leq 10^6$,不能超过 100 个节点。


直接造 trie 树节点数多达 2e6,肯定不行。

注意到很多子树都是满二叉树,我们可以用一条01重边的链把这些满二叉树全都缩掉,即如果这个节点是满二叉树就直接连到链上。这样可以证明总点数不超过 $5\log n$,正好在 100 的范围内。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;

const int N=105;
int L,R,c[N][2],tot,rt,m;
void dfs(int &x,int L,int R,int l,int r,int k){
    if(l==L&&r==R){
        m=max(m,k),x=-k;
        return;
    }
    x=++tot;
    int mid=(l+r)>>1;
    if(L<=mid)dfs(c[x][0],L,min(R,mid),l,mid,k-1);
    if(R>mid)dfs(c[x][1],max(L,mid+1),R,mid+1,r,k-1);
}

vector<pii> e[N];
void adde(int x,int y,int z){
    e[x].push_back(pii(y,z));
}
bool del[N];
int id[N];
int ID(int x){return x>0?id[x]:-x;}
int main(){
    cin>>L>>R;
    dfs(rt,L,R,0,(1<<__lg(R)+1)-1,__lg(R)+2);
    int cnt=m;
    for(int i=m;i>1;--i)adde(i,i-1,0),adde(i,i-1,1);
    int r=rt;
    while(c[r][0])del[c[r][0]]=1,r=c[r][0];
    for(int i=1;i<=tot;++i)if(!del[i])id[i]=++cnt;
    r=rt;
    while(r)adde(ID(rt),ID(c[r][1]),1),r=c[r][0];
    for(int i=2;i<=tot;++i)if(!del[i]){
        if(c[i][0]&&!del[c[i][0]])adde(id[i],ID(c[i][0]),0);
        if(c[i][1])adde(id[i],ID(c[i][1]),1);
    }
    cout<<cnt<<'\n';
    for(int i=1;i<=cnt;++i){
        cout<<e[i].size()<<' ';
        for(auto [x,y]:e[i])cout<<x<<' '<<y<<' ';
        cout<<'\n';
    }
}

标签:pii,2024.10,int,26,long,2024,leq,lst,typedef
From: https://www.cnblogs.com/EssentialSingularity/p/18514542

相关文章

  • [CSP-S 2024] 超速检测——模拟、贪心
    [CSP-S2024]超速检测(民间数据)题目描述小D新入职了某国的交管部门,他的第一个任务是负责国家的一条长度为\(L\)的南北主干道的车辆超速检测。为了考考小D,上司首先需要他解决一个简化的场景。这个周末,主干道上预计出现\(n\)辆车,其中第\(i\)辆车从主干道上距离最南端\(......
  • [题解][CSP-S2024]擂台游戏
    题意[CSP-S2024]擂台游戏(民间数据)题目描述小S想要举办一场擂台游戏,如果共有\(2^k\)名选手参加,那么游戏分为\(k\)轮进行:第一轮编号为\(1,2\)的选手进行一次对局,编号为\(3,4\)的选手进行一次对局,以此类推,编号为\(2^k-1,2^k\)的选手进行一次对局。第二轮在......
  • 2024/10/29 HTML --》关于HTML的快速入门与标签
    以下为快速入门部分点击查看代码--HTML--什么是HTML?--·HTML是一门语言,所有的网页都是用HTML这门语言编写出来的.--·HTML(HyperTextMarkupLanguage):超文本标记语言---->超文本:超越了文本的限制,比普通文本更强大。除了文字信息,还可以定义图片、音频、视频等内......
  • 题目解析_2024_申论_行政执法
    题目解析:材料1进入桃李镇清池村,通往村头停车场的路是一条环形路。据了解,这是为了绕开村头的两棵百年老树,不打破原有的自然风貌。在冯教授团队看来,树是主,人是客,人要心存敬畏,尊重自然。2020年6月,G市业大学组建城乡艺术建设研究所,冯教授任所长。2021年1月,在有关方面的牵线搭桥下,冯......
  • 『模拟赛』多校A层冲刺NOIP2024模拟赛15
    Rank一般A.追逐游戏(chase)签,但是保龄。上来发现情况好像是有限的,于是直接分讨,不过漏了n种情况,小样例水,大样例vscose自带的compare跑不出来,注销一遍之后甚至进度条都没了导致我以为过了,最后10min才发现(赛后发现二分是可做的,但是倍增的巨大常数加上逆天评测速度......
  • 2024网鼎杯初赛-青龙组-WEB gxngxngxn
    WEB01开局随便随便输入都可以登录,登上去以后生成了一个token和一个session,一个是jwt一个是flask框架的这边先伪造jwt,是国外的原题CTFtime.org/DownUnderCTF2021(线上)/JWT/Writeup先生成两个token,然后利用rsa_sign2n工具来生成公钥python3jwt_forgery.pyeyJhbGciOi......
  • CSP-S 2024 简单题
    CSP-S2024简单题以下均为考场做法。T1决斗(duel)考虑贪心,按照攻击力\(a_i\)排序,从小到大使用所有怪物进行攻击,每只怪物攻击一个在场且能击杀的怪物中,攻击力最大的一个。这样显然最优,因为每一次攻击都被完美的利用到了。于是设\(c_x\)表示满足\(a_i=x\)的\(i\)的......
  • 2024.10.29 test
    A已知\(n\)边形的一个三角剖分,你可以进行若干次“城市建造”操作,可以选择三个点并新建一个点为这三个点的内心并连边。构造方案,使得城市建造次数最少,且新图可以划分为两棵树。只需要进行一次城市建造操作,就可以使边数变为\(2n\),点数为\(n+1\),显然即可划分。考虑取出一个三......
  • 2024CSP-S游记 & (半?)退役记
    流水账,供自己回忆。(1)序幕2023年8月10号(±2天),中考完的我踏入了高中的校园,由于本蒟蒻自小学起就对信息竞赛有一定的兴趣,所以在2023年9月底学校开始寻找对各学科竞赛感兴趣的学生时,蒟蒻毫不犹豫的报名了物理竞赛[1]信息竞赛,自此拉开了我OIer生涯的序幕。[1]:在绿皮书物理竞赛的摧......
  • CSP-S 2024 游记
    \(\text{Day-28}\sim\text{-7}\)复习了两个星期dp,感觉状压十分强大,但是看得不是很透彻。\(\text{Day-6}\sim\text{-2}\)停课爽!模拟赛爽!云斗模拟赛总算让我见识了什么叫打表出省一。\(\text{Day-1}\)上午在和\(\texttt{TZYLT}\)和\(\texttt{QianXiquq}\)打板子,感......