lizao @ 2023-09-28 20:50:22
#include <stdio.h>
int main()
{
int all,n,arr[200][200],max,min;
scanf("%d",&all);//输入所有树的棵数
all+=1;
scanf("%d",&n);//输入给与的路的行数
for(int i=1;i<=n;i++)//用数组记录每段公路的起始位置点和结束位置点
{
scanf("%d",&arr[i][1]);//记录起始位置点
scanf("%d",&arr[i][2]);//记录结束位置点
}
max=arr[1][2],min=arr[1][1];
for(int i=1;i<=n;i++)//遍历数组,找出公路的最大通集部分
{
if ( (arr[i][2]>=max)&&(arr[i][1]>=min)&&(arr[i][1]<max) )//第一种出现交集的情况
{
max=arr[i][2];
}
else if( (arr[i][2]<=max)&&(arr[i][1]<min) &&(arr[i][2]>min) )//第二种出现交集合的情况
{
min=arr[i][1];
}
}
for(int i=1;i<=n;i++)//找出没有交集的公路的部分的树并用总树的量减去
{
if ( (arr[i][2]<min)||(arr[i][1]>max) )
{
all=all-arr[i][2]+arr[i][1]-1;
}
}
all=all-max+min-1;//用总树的量再次减去通集的树的数量
printf("%d",all);
return 0;
}
```8,9是WA其他的都通过了,希望能帮我看看有什么问题
by liujiahao604 @ 2023-09-28 21:20:47
https://www.luogu.com.cn/record/124916598
by chenxizhe2 @ 2023-10-02 17:06:01
我这么做满分,用一个循环嵌套就好。
#include<bits/stdc++.h>
using namespace std;
bool treel[100005];//0 没被砍 1 砍完了
int l,u,v,m,s;// 路长l,m 地铁数量 u 起点 v终点。
int main(){
cin>>l>>m;
for(int i=1;i<=m;i++){
cin>>u>>v;
for(int j=u;j<=v;j++){
treel[j]=1;
}
}
for(int i=0;i<=l;i++){
if(treel[i]==0) s++;
}
cout<<s;
}