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

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


目录

P1003 铺地毯

P1067 多项式输出

P1540 机器翻译

P1056 排座椅

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

P1563 玩具谜题


P1003 铺地毯

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

P1540 机器翻译

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+;
int m,n;
int vis[maxn];
queue<int> Q;
inline void Push(int x)
{
if(Q.size()>=m)
{
vis[Q.front()]=;
Q.pop();
}
vis[x]=;
Q.push(x);
}
int main()
{
ios::sync_with_stdio();
cin.tie(), cout.tie(); cin>>m>>n;
int ans=;
for(int i=,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+;
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=;i<m;i++) r[i].idx=i, r[i].cnt=;
for(int i=;i<n;i++) c[i].idx=i, c[i].cnt=;
for(int i=,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+,r+m,cmp1);
sort(r+,r+k+,cmp2);
for(int i=;i<=k;i++) printf("%d%c",r[i].idx,i<k?' ':'\n');
sort(c+,c+n,cmp1);
sort(c+,c+l+,cmp2);
for(int i=;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=;
int n,A,B;
int a[MAX],b[MAX];
int vs[][]={
{,,,,},
{,,,,},
{,,,,},
{,,,,},
{,,,,}
};
int main()
{
cin>>n>>A>>B;
for(int i=;i<A;i++) cin>>a[i];
for(int i=;i<B;i++) cin>>b[i];
pii res=make_pair(,);
for(int i=;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();
cin.tie(), cout.tie(); v.clear();
cin>>n>>m;
for(int i=;i<=n;i++)
{
bool d; string e;
cin>>d>>e;
v.push_back(make_pair(d,e));
}
int p=;
for(int i=;i<=m;i++)
{
bool d; int s;
cin>>d>>s;
if(v[p].first) //朝外
{
p+=d?-s:s;
while(p<) p+=n;
p%=n;
}
else //朝内
{
p+=d?s:-s;
while(p<) p+=n;
p%=n;
}
}
cout<<v[p].second;
}
上一篇:c++错误


下一篇:Form 表单提交的几种方式