社区讨论

T3特殊点A,不知道为什么过不了,代码贴下面了

学术版参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lo5nl5ua
此快照首次捕获于
2023/10/25 19:09
2 年前
此快照最后确认于
2023/11/02 11:26
2 年前
查看原帖
CPP
//CSP-S加油,rp++
//jmyzq & yzt
//哪怕全世界都背叛你,我也不会
//为你战死是我至高无上的荣耀
//T组数据不要忘记初始化!!!!!!!!
//最大值不要开小
//注意算内存,本地看不出来MLE的
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int M=5e5+5;
//--------------------------输入所需
int op;
string s;
int k;
string t,n;
string anss;
int addr;
//--------------------------map,和一些需要
map<string,int> mps;//字符串对应的首地址
map<int,string> ad;//地址对应的字符串
int add;//当前地址

void solve1()
{
	
}
void solve2()
{
	cin>>t>>n;
	
	if(t=="byte")
	{
		mps[n]=add;
		ad[add]=n;
		add++;
	}
	else if(t=="short")
	{
		while(add%2)
		{
			ad[add]="ERR";
			++add;
		}
		mps[n]=add;
		ad[add]=n;
		ad[add+1]=n;
		add+=2;
	}
	else if(t=="int")
	{
		while(add%4)
		{
			ad[add]="ERR";
			++add;
		}
		mps[n]=add;
		for(int i=1;i<=4;++i)
		{
			ad[add]=n;
			++add;
		}
	}
	else if(t=="long")
	{
		while(add%8)
		{
			ad[add]="ERR";
			++add;
		}
		mps[n]=add;
		for(int i=1;i<=8;++i)
		{
			ad[add]=n;
			++add;
		}
	}
}
void solve3()
{
	cin>>s;
	cout<<mps[s]<<"\n";
}
void solve4()
{
	cin>>addr;
	cout<<ad[addr]<<"\n";
}
int main()
{
//	freopen("struct.in","r",stdin);
//	freopen("struct.out","w",stdout);
	int T;
	cin>>T;//n
	
	add=0;//刚开始地址是0
	
	while(T--)
	{
		scanf("%d",&op);
		if(op==1)
		{
			solve1();
		}
		if(op==2)
		{
			solve2();
		}
		if(op==3)
		{
			solve3();
		}
		if(op==4)
		{
			solve4();
		}
//		cout<<add<<"\n";
	}
//	cout<<a[1];
//	cout<<ad[4]<<"\n"<<ad[7]<<"\n";
	return 0;
}
/*
10
2 int a
2 long b
2 byte c
2 short d

*/

回复

0 条回复,欢迎继续交流。

正在加载回复...