关于快读与scanf的疑问
查看原帖
关于快读与scanf的疑问
592223
Allorry楼主2022/3/19 14:02

我最近学了快读,也了解到scanf比cin之类的要快。 就我目前代码而言,scanf比快读还快。 于是我有俩请求:

  1. 求大佬帮忙分析下是不是代码的问题
  2. 这两种输入是不是分情况?数据越大快读越快?
#define _CRT_SECURE_NO_WARNINGS
#include<string>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
struct stu {
	int nums;
	char name[11];
};
stu a[100005];
int main()
{
	int n, m;
	int x, y, k=0;
	scanf("%d %d", &n, &m);
	for (int i = 0; i < n; i++) {
		scanf("%d", &a[i].nums);
		scanf("%s", a[i].name);
	}
	while (m--) {
		scanf("%d %d", &x, &y);
		if (a[k].nums == x) {
			k -= y;
			if (k < 0) k += n;
		}****
		else if (a[k].nums != x) {
			k += y;
			if (k >= n) k -= n;
		}
	}
	cout << a[k].name;
}



#define _CRT_SECURE_NO_WARNINGS
#include<string>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
struct stu {
	int nums;
	string name;
};
stu a[100005];
inline int read() {
	int s = 0, w = 1;
	char ch = getchar();
	while (ch < '0' || ch>'9') {
		if (ch == '-') w = -1;
		ch = getchar();
	}
	while (ch >= '0' && ch <= '9') {
		s = s * 10 + ch - '0';
		ch = getchar();
	}
	return s * w;
}
inline string reads() {
	string a;
	char ch = getchar();
	while (ch == ' ' || ch == '\r' || ch == '\n') {
		ch = getchar();
	}
	while (ch != ' ' && ch != '\r' && ch != '\n') {
		a += ch;
		ch = getchar();
	}
	return a;
}
int main()
{
	int n, m;
	int x, y, k=0;
	n = read(); m = read();
	for (int i = 0; i < n; i++) {
		a[i].nums = read();
		a[i].name = reads();
	}
	while (m--) {
		x = read(); y = read();
		if (a[k].nums == x) {
			k -= y;
			if (k < 0) k += n;
		}
		else if (a[k].nums != x) {
			k += y;
			if (k >= n) k -= n;
		}
	}
	cout << a[k].name;
}
2022/3/19 14:02
加载中...