首页 > 其他分享 >天梯2

天梯2

时间:2024-03-10 16:25:22浏览次数:22  
标签:int res top cin long 天梯 empty

1.红石难题(将红石线路拉成一条一维的线,再用总线路除一个红石源可满足的能量需求范围,不够进一即可)

#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[1000000],b[10000000];
signed main()
{
    int n,m;
    cin>>n>>m;
    int ans=1;
    for(int i=0;i<n;i++)
    {
        cin>>a[i]>>b[i];
        if(i)ans+=abs(a[i-1]-a[i])+abs(b[i-1]-b[i]);
    }
    if(m==0)cout<<0<<endl;
    else
    {
        int d=(15-m)*2+1;
int res;
if(ans%d!=0) res=ans/d+1;
else res=ans/d; cout<<res<<endl; } return 0; }

2.奶茶袋收集(隔板法,求一个差分数列,排序后前n-m项和就是所求)

#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[100000],b[1000000];
signed main()
{
    int n,m;
    cin>>n>>m;
    for(int i=0;i<n;i++)cin>>a[i];
    for(int i=0;i<n-1;i++)
    {
        b[i]=a[i+1]-a[i];
    }
    sort(b,b+n-1);
    int sum=0;
    for(int i=0;i<n-m;i++)
        sum+=b[i];
    cout<<sum<<endl;
    return 0;
}

3.该加训了(换位异或的性质,推算后我们可得出f(a,b)=a^b,又例如a^b^c=x,b^c=y,那么a=x^y,由此我们可得出f(l-1)^f(l,r)=f(r),f(l,r)=f(r)^f(l-1))

#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[1000000],b[10000000];
signed main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        b[i]=b[i-1]^a[i];
    }

    int m;
    cin>>m;
    int l,r;
    while(m--)
    {
        cin>>l>>r;
        cout<<(b[r]^b[l-1])<<endl;
    }
    return 0;
}

4.cy的倒金字塔工厂(使用栈和队列进行模拟,按照条件写即可)

#include<bits/stdc++.h>
#define int long long
using namespace std;
stack<int> l,b,h;//l:流水线,b:盒子,h:半成品,r:垃圾
queue<int> r;
signed main()
{
    int n,k;
    cin>>n>>k;
    for(int i=0;i<n;i++)
    {
        int a;
        cin>>a;
        l.push(a);
    }
    while(!l.empty()||!b.empty())
    {
        if(!l.empty())
        {

            if(h.empty())
            {
                h.push(l.top());
                l.pop();
            }
            else
            {
                if(l.top()>h.top()&&l.top()-h.top()<=k)
                {
                    h.push(l.top());
                    l.pop();
                }
                else
                {
                    if(!b.empty()&&b.top()>h.top()&&b.top()-h.top()<=k)
                    {
                         h.push(b.top());
                         b.pop();
                    }
                    b.push(l.top());
                    l.pop();
                }
            }
        }
        if(l.empty())
        {
            if(h.size()>=2)
            {
                while(!h.empty())
                {
                    cout<<h.top()<<" ";
                    h.pop();
                }
                cout<<endl;
            }
            else
            {
                r.push(h.top());
                h.pop();
            }
            stack<int>t;
                while(!b.empty())//装到流水线末尾(为了顺序正确找个中间栈)
                {
                    t.push(b.top());
                    b.pop();
                }
                while(!t.empty())
                {
                    l.push(t.top());
                    t.pop();
                }
            }
        }
    while(!r.empty())
    {
        cout<<r.front()<<" ";
        r.pop();
    }
    return 0;
}

5.swj学长的精灵融合(用vector存图,将与x有关的精灵全部存入res中,并在输入时将精灵的品种和等级记录,最后遍历累加res中除x外精灵所需经验)

#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[100000],b[1000000],d1[100],d2[100],d3[100],p[1000000],q[1000000];
int x,m;
vector<int> v[1000000],res;
struct jing
{
    int a;
    int b;
    int c;
    int d;
};
struct jing j[100000];
void dfs(int n)
{
    res.push_back(n);
    for(auto&t:v[n])
    {
        dfs(t);
    }
}
signed main()
{
    cin>>x>>m;
    for(int i=0;i<m;i++)
    {
        cin>>j[i].a>>j[i].b>>j[i].c>>j[i].d;
        v[j[i].a].push_back(j[i].b);
        p[j[i].b]=j[i].c;
        q[j[i].b]=j[i].d;
    }
    d1[1]=0,d2[1]=0,d3[1]=0;
    d1[2]=1,d2[2]=1,d3[2]=1;
    for(int i=3;i<=100;i++)
    {
        d1[i]=d1[i-1]+i-2;
        d2[i]=d2[i-1]+2*(i-2);
        d3[i]=d3[i-1]+5*(i-2);
    }
    dfs(x);
    int sum=0;
    for(auto&t:res)
    {
        int c,d;
        c=p[t],d=q[t];
        if(t==x)continue;
        else {
            if (c== 1)sum += d1[d];
            else if (c == 2)sum += d2[d];
            else sum += d3[d];
        }
    }
    cout<<sum<<endl;
    return 0;
}

  

标签:int,res,top,cin,long,天梯,empty
From: https://www.cnblogs.com/violet-hty/p/18064303

相关文章

  • SUM-ACM天梯赛
    第一次天梯赛:B-B:孵化小鸡题解:二进制枚举所有可能性,一个一个枚举出来,@离散数学,真值表。题目如下:二进制枚举代码如下点击查看代码#include<bits/stdc++.h>usingnamespacestd;intmain(){ intn; cout<<"输入你要枚举的个数"; cin>>n; for(inti=0;i<=(1<<n)-1;i......
  • 天梯选拔赛2补题_2024_03_09
    补题1:奶茶袋收集题意:做法:贪心。之前还做过类似的题,赛时一直想不出来。选择k个连续的的区间,就是需要添加k-1个挡板。问题是挡板设置在哪里?可以发现一个连续线段的max-min等于线段中各个差值之和。如果k=1,那么ans=∑(ai+1-ai);如果k=2,那么需要添加一个挡板。贪心地放,挡板应该放......
  • 2024天梯选拔赛(一)
    2024天梯选拔赛(一)A私人笑声#include<bits/stdc++.h>#definedebug(a)cout<<#a<<"="<<a<<'\n';usingnamespacestd;usingi64=longlong;typedefpair<i64,i64>PII;intmain(){ios::sync_with_stdio......
  • 天梯选拔赛第一场
    B孵化小鸡-SMUOJ题解:因为数据很小我们可以枚举每一个状态然后判断一下是否可以达到孵化的温度即可我们用二进制枚举,一共1<<m相当于2的m次方,用二进制枚举每一个状态//#include<bits/stdc++.h>//#pragmaGCCoptimize("Ofast")#include<iostream>#include<cstdio>#inc......
  • 程序设计天梯赛个人题解 L2-047-2 锦标赛
    题目分析综合题意,将最后一场比赛视为顶层,第一轮比赛视为第一层,则有:下层每场比赛选出一个胜者,每两个下层的胜者间举行本层的一次比赛,显然这是一个二叉树。考虑还原建立每场比赛的树。由于最后一层的比赛是$2^k$个选手参加,故这是个完美二叉树,使用完全二叉树的数组储存方式,则标号......
  • sc2 天梯地图
    没记错的话以前7张ban3张,非常合理,现在9张怎么还是ban3张好哥哥达蒙星际2教学Goldenauraban三四矿近,挂运输机的地方长,架坦克的点位多,ZvT打不了一点Equilibriumban莫名其妙Hecate不敲岩石的话中间的路很窄偏大,没有瞭望塔,难以控图(注意偷矿,多线)主矿下面、二三......
  • Intel 移动CPU天梯榜
    ......
  • 2023年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛(同步赛)
    A.AXorBProblem(计数)输入511223输出9说明点击查看代码#include<bits/stdc++.h>#defineIOSios::sync_with_stdio(false);cin.tie(0),cout.tie(0)#defineintlonglongusingnamespacestd;constintN=2e5+10;unordered_map<int,int>......
  • 用天梯赛打开暑假生活的第十五天
    从坐牢到入门的程序设计(15)开始时间2023-07-28 10:01:08结束时间2023-07-28 12:41:42前言:你怎么知道我边逛新生群边刷题(我还洗了个澡)? L1-079天梯赛的善良一、题目编号及题目说明二、程序功能测试及说明这段代码是使用C++编写的一个简单程序,用于统计输入的一组数字中......
  • 用天梯赛打开暑假生活第十四天
    从坐牢到入门的程序设计(14)开始时间2023-07-12 11:53:19结束时间2023-07-12 14:23:43前言:我把那条路又走了一遍。L1-071前世档案一、题目编号及题目说明 二、程序功能测试及说明根据输入的一组二进制字符串,将其转换为十进制数并输出。三、程序设计思路及结构说明......