洛谷试炼场 - 关卡2-1 - 简单的模拟 - (Done)

最近这段时间感冒外加一些乱七八糟的事情,导致脑子严重僵化……只好刷刷基础(水)题巩固巩固基础(混混题数)。


目录

P1003 铺地毯

P1067 多项式输出

P1540 机器翻译

P1056 排座椅

P1328 生活大爆炸版石头剪刀布

P1563 玩具谜题

 


P1003 铺地毯

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e4+10;
int n,x,y;
int a[maxn],b[maxn],g[maxn],k[maxn];
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%d%d%d%d",&a[i],&b[i],&g[i],&k[i]);
    scanf("%d%d",&x,&y);
    int ans=-1;
    for(int i=n;i>=1;i--)
    {
        if(a[i]<=x && b[i]<=y && a[i]+g[i]>=x && b[i]+k[i]>=y)
        {
            ans=i;
            break;
        }
    }
    printf("%d\n",ans);
}

 


P1067 多项式输出

#include<bits/stdc++.h>
using namespace std;
int n;
int main()
{
    while(cin>>n)
    {
        for(int i=n,c;i>=0;i--)
        {
            scanf("%d",&c);
            if(c==0) continue;
            else if(c>0)
            {
                if(i<n) printf("+");
                if(c>1) printf("%d",c);

                if(i>1) printf("x^%d",i);
                else if(i==1) printf("x");
                else if(c==1) printf("1");
            }
            else
            {
                printf("-");
                if(-c>1) printf("%d",-c);

                if(i>1) printf("x^%d",i);
                else if(i==1) printf("x");
                else if(-c==1) printf("1");
            }
        }
        printf("\n");
    }
}

 


P1540 机器翻译

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+5;
int m,n;
int vis[maxn];
queue<int> Q;
inline void Push(int x)
{
    if(Q.size()>=m)
    {
        vis[Q.front()]=0;
        Q.pop();
    }
    vis[x]=1;
    Q.push(x);
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);

    cin>>m>>n;
    int ans=0;
    for(int i=1,x;i<=n;i++)
    {
        cin>>x;
        if(!vis[x]) Push(x), ans++;
    }
    cout<<ans<<endl;
}

 

 


P1056 排座椅

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+5;
int m,n,k,l,d;
struct Node{
    int idx,cnt;
}r[maxn],c[maxn];
bool cmp1(Node a,Node b) {
    return a.cnt>b.cnt;
}
bool cmp2(Node a,Node b) {
    return a.idx<b.idx;
}
int main()
{
    scanf("%d%d%d%d%d",&m,&n,&k,&l,&d);
    for(int i=1;i<m;i++) r[i].idx=i, r[i].cnt=0;
    for(int i=1;i<n;i++) c[i].idx=i, c[i].cnt=0;
    for(int i=1,x,y,p,q;i<=d;i++)
    {
        scanf("%d%d%d%d",&x,&y,&p,&q);
        if(x==p) //同行
            c[min(y,q)].cnt++;
        else //同列
            r[min(x,p)].cnt++;
    }
    sort(r+1,r+m,cmp1);
    sort(r+1,r+k+1,cmp2);
    for(int i=1;i<=k;i++) printf("%d%c",r[i].idx,i<k?' ':'\n');
    sort(c+1,c+n,cmp1);
    sort(c+1,c+l+1,cmp2);
    for(int i=1;i<=l;i++) printf("%d%c",c[i].idx,i<l?' ':'\n');
}

 


P1328 生活大爆炸版石头剪刀布

#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;
const int MAX=205;
int n,A,B;
int a[MAX],b[MAX];
int vs[5][5]={
    {0,0,1,1,0},
    {1,0,0,1,0},
    {0,1,0,0,1},
    {0,0,1,0,1},
    {1,1,0,0,0}
};
int main()
{
    cin>>n>>A>>B;
    for(int i=0;i<A;i++) cin>>a[i];
    for(int i=0;i<B;i++) cin>>b[i];
    pii res=make_pair(0,0);
    for(int i=0;i<n;i++)
    {
        res.first+=vs[a[i%A]][b[i%B]];
        res.second+=vs[b[i%B]][a[i%A]];
    }
    cout<<res.first<<' '<<res.second;
}

 


P1563 玩具谜题

#include<bits/stdc++.h>
using namespace std;
typedef pair<bool,string> P;
vector<P> v;
int n,m;
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);

    v.clear();
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        bool d; string e;
        cin>>d>>e;
        v.push_back(make_pair(d,e));
    }
    int p=0;
    for(int i=1;i<=m;i++)
    {
        bool d; int s;
        cin>>d>>s;
        if(v[p].first) //朝外
        {
            p+=d?-s:s;
            while(p<0) p+=n;
            p%=n;
        }
        else //朝内
        {
            p+=d?s:-s;
            while(p<0) p+=n;
            p%=n;
        }
    }
    cout<<v[p].second;
}

 

posted @ 2018-11-19 21:54  Dilthey  阅读(292)  评论(0编辑  收藏  举报