#include<iostream>
#include<string>
using namespace std;
int main()
{
int l=0, m=0,left=0; string str(1001, '1');/*这里开1001位或10001位,当输入是
500 3
150 300
100 200
470 471时效果完全不一样*/
cin >> l >> m;
for (int i = 0,u,v; i < m; i++)
{
cin >> u >> v;
str = str.replace(u, v, v - u + 1, '0');
}
string str0 = "1";
for (int i = 1; i <= l; i++)
{
if (str.compare(i, i+1, str0)==1)
{
left++;
}
}
cout << left;
return 0;
}
我自己实验一些数据,比如
150 2
5 99
1 57
时输出的是正确的(52)
关于那个compare 不知道为什么 只有第一个输出的是0,其他的时候输出的都是1
当输入给的样例时,会有这样的报错:
此时通过输出检验发现字符串只剩下473位了,但开的是1001位的
当我将1001改为10001,重新输入时不再报错,但输出为 397 然而采用一开始的
150 2
5 99
1 57
仍输出 52