各位好,C++里,使用宏定义之后报错显示应输入表达式,已检查周围空格全是英文格式的,环境为VS 2022
大哥,define后面不加赋值符号呀,把=去掉
#define PI 3.1415926
思路:先对vec进行左边界排序(小到大),然后考虑三种情况并依次判断
res
容器弹出尾部元素,插入新元素的情况res
容器的尾部元素左边界 相等那就取右边界最大的那个res
容器元素个数大于2的情况下, 即将插入尾部的v[i]的左边界 小于 res
容器中倒数第二个元素的右边界res
容器中尾部元素的右边界。#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct Node {
long long x;
long long y;
};
vector<Node> vec;
vector<Node> res;
bool mycmp(Node &a,Node &b) {
return a.x < b.x;
}
long long coLine(vector<Node>&v, vector<Node>&r,long n) {
r.push_back(v[0]);
for (int i = 1; i < v.size(); i++) {
if ( (( (r[r.size() - 1].x == v[i].x ||(r.size() >= 2 && r[r.size() - 2].y >= v[i].x)) && r[r.size() - 1].y < v[i].y)) ) {
r.pop_back();
r.push_back(v[i]);
}
else if (r[r.size() - 1].y >= v[i].x && r[r.size() - 1].y < v[i].y) {
r.push_back(v[i]);
}
}
if (r[r.size() - 1].y < n) return -1;
else return r.size();
}
int main() {
long long n, m;
cin >> n >> m;
Node mynode;
for (long long i = 0; i < m; i++) {
cin >> mynode.x >> mynode.y;
vec.push_back(mynode);
}
sort(vec.begin(), vec.end(), mycmp);
cout << coLine(vec, res, n);
}
#define修改为 const
define里乱加等号,导致替换后表达式里有多余的等号
变成了60 * = 10,一个常量不可以赋值