2021-10-04模拟赛总结


总括

题数:4。 得分:285/400 时间:4h

一、玩具谜题

算法:大模拟(水题)

得分:100

代码:

#include<iostream>
using namespace std;
struct node 
{
    int head;
    string name;
}a[100007];
int main(){
	int m,n;
	cin>>n>>m;
	for(int i=0;i<n;i++){
		cin>>a[i].head>>a[i].name;
	}
	int ans=0,x,y;
    for(int i=1;i<=m;i++)
    {
        cin>>x>>y;
        if(a[ans].head==0&&x==0)ans=(ans+n-y)%n;
        else if(a[ans].head==0&&x==1)ans=(ans+y)%n;
        else if(a[ans].head==1&&x==0)ans=(ans+y)%n;
        else if(a[ans].head==1&&x==1)ans=(ans+n-y)%n;
    }
    cout<<a[ans].name<<endl;
	return 0;
}

二、神奇的幻方

算法:暴力枚举,模拟(水题)
得分:100
代码:

#include<bits/stdc++.h>
using namespace std;
struct node{
	int x;
	int y;
}a[1600];
int b[45][45];
int n;
int main(){
	cin>>n;
	memset(b,0,sizeof(b));
	a[1].x=n/2+1;
	a[1].y=1;
	b[1][n/2+1]=1;
	for(int i=2;i<=n*n;i++){
		int tx=a[i-1].x,ty=a[i-1].y;
		if(ty==1&&tx!=n){
			a[i].x=tx+1;
			a[i].y=n;
			b[a[i].y][a[i].x]=i;
			continue;
		}
		if(ty!=1&&tx==n){
			a[i].x=1;
			a[i].y=ty-1;
			b[a[i].y][a[i].x]=i;
			continue;
		}
		if(ty!=1&&tx!=n){
			if(b[ty-1][tx+1]==0){
				a[i].x=tx+1;
				a[i].y=ty-1;
			}
			else{
				a[i].x=tx;
				a[i].y=ty+1;
			}
			b[a[i].y][a[i].x]=i;
			continue;
		}
		if(ty==1&&tx==n){
			a[i].x=tx;
			a[i].y=ty+1;
			b[a[i].y][a[i].x]=i;
			continue;
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++)
			cout<<b[i][j]<<" ";
		cout<<endl;
	}
	return 0;
}

三、蚯蚓

算法:二叉堆,模拟
得分:85(TLE三个点)
代码:

#include<bits/stdc++.h>
using namespace std;
priority_queue<int> w;
long long n,m,q,u,v,t;
long long a[100010];
double p;
int main(){
	cin>>n>>m>>q>>u>>v>>t;
	p=double(u)/double(v);
	for(int i=1;i<=n;i++){
		cin>>a[i];
		w.push(a[i]);
	}
	for(int i=1;i<=m;i++){
		long long temp=w.top(),x1,x2;
		w.pop();
		temp+=(i-1)*q;
		if(i%t==0) cout<<temp<<" ";
		x1=int(floor(p*temp));
		x2=temp-x1;
		w.push(x1-i*q);
		w.push(x2-i*q);
	}
	cout<<endl;
	for(int i=1;!w.empty();i++){
		if(i%t==0) cout<<w.top()+m*q<<" ";
		w.pop();
	}
	cout<<endl;
	return 0;
}

四、列队

算法:平衡树,线段树,树状数组
得分竟然爆零了!!!
反思:当时很快写出前三题,最后一题不顾一切想正解,没有暴力骗分,最后“听取WA声一片”。正规比赛不要这么浪!!!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值