555,寄了,还是不刑

P1047 [NOIP2005 普及组] 校门外的树

blue_239k @ 2022-10-23 15:38:19

#include <iostream>
using namespace std;
int main(){
    int long long l;
    int m;
    cin>>l>>m;
    int u[m-1],v[m-1];
    for(int k=0;k<=m-1;k++){
        cin>>u[k]>>v[k];
    }
    int p[l-1];
    for(int long long k=0;k<=l-1;k++){
        for(int y=0;y<=m-1;y++){
            if(k>=u[y]&&k<=v[y]){
                if(y==m-1){
                    p[k]=1;
                }
                else{
                    continue;
                }
            }
            else{
                p[k]=0;
            }
        }
    }
    int long long out=0;
    for(int long long k=0;k<=l-1;k++){
        if(p[k]!=1){
            out=out+1;
        }
    }
    cout<<out;
    return 0;
}

by blue_239k @ 2022-10-23 15:40:05

哦我知道了,

for(int long long k=0;k<=l-1;k++){
        for(int y=0;y<=m-1;y++){
            if(k>=u[y]&&k<=v[y]){

这里是全部满足才赋值1。 而程序要的是有一个满足就赋值一。。。 又寄了


by blue_239k @ 2022-10-23 15:44:44

又寄了。。。

#include <iostream>
using namespace std;
int main(){
    int long long l;
    int m;
    cin>>l>>m;
    int u[m-1],v[m-1];
    for(int k=0;k<=m-1;k++){
        cin>>u[k]>>v[k];
    }
    int p[l-1];
    for(int long long k=0;k<=l-1;k++){
        for(int y=0;y<=m-1;y++){
            if(k>=u[y]&&k<=v[y]){
                p[k]=1;
            }
            else{
                if(y==m-1){
                    p[k]=0;
                    break;
                }
            continue;
            }
        }
    }
    int long long out=0;
    for(int long long k=0;k<=l-1;k++){
        if(p[k]!=1){
            out=out+1;
        }
    }
    cout<<out;
    return 0;
}

by cute_overmind @ 2022-10-23 15:45:25


#include <iostream>
using namespace std;
int main()
{
    int i , j , k , m , n , l , sum = 0;
    int a[10001] , q , z ;
    cin >> l >> m;
    for(i = 0;i <= l;i++)
        a[i] = 0;
    for(i = 1;i <= m;i++)
    { 
        cin >> q >> z;   
        for(j = q;j <= z;j++)
        {
            if(a[j] == 0)
                a[j]++; 
        }
    } 
    for(i = 0;i <= l;i++)
    {
        if(a[i] == 0)
        sum++;
    }
        cout << sum;
}

by blue_239k @ 2022-10-23 15:51:36

麻烦说一下怎么改谢谢

下面是20的代码:

#include <iostream>
using namespace std;
int main(){
    int long long l;
    int m;
    cin>>l>>m;
    int u[m-1],v[m-1];
    for(int k=0;k<=m-1;k++){
        cin>>u[k]>>v[k];
    }
    int p[l-1];
    for(int long long k=0;k<=l-1;k++){
        for(int y=0;y<=m-1;y++){
            if(k>=u[y]&&k<=v[y]){
                p[k]=1;
            }
            else{
                continue;
            }
        }
    }
    int long long out=0;
    for(int long long k=0;k<=l-1;k++){
        if(p[k]==1){
            out=out+1;
        }
    }
    cout<<l-out;
    return 0;
}

by 皇族鬼圣 @ 2022-10-23 15:58:06

我当时的代码


#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a[10005];
    int l,m,u,v,num=0;
    cin>>l;
    for(int i=0;i<=l;i++)
    {
        a[i]=1;
    }
    cin>>m;
    for(int i=0;i<m;i++)
    {
        cin>>u>>v;
        for(int j=u;j<=v;j++)
            a[j]=0; 
    }
    for(int i=0;i<=l;i++)
    {
        if(a[i]==1)
            num++;
    }
    cout<<num<<endl;
    return 0;
}

by li_hao_yu @ 2022-10-23 16:00:02

#include <iostream>
using namespace std;
int main()
{
    int a[10010],b,c,d,e,f;
    cin>>b>>c;
    for(int i=0;i<=b;i++)
    {
        a[i]=1;//把有树的标记上
    }
    for(int j=0;j<=c-1;j++)
    {
        cin>>d>>e;
        for(int k=d;k<=e;k++)
        {
            a[k]=0;//被砍的记得改为0
        }
    }
    for(int l=0;l<=b;l++)
    {
        if (a[l]==1)
            f++;//统计剩余的树
    }
    cout<<f;
    return 0;
}

你的有点麻烦


by 皇族鬼圣 @ 2022-10-23 16:02:38

@blue_239k 可能是你减树减重复了


by 皇族鬼圣 @ 2022-10-23 16:04:40

那个对于 20%的数据,保证区域之间没有重合的部分。你得了20分,可能应该就是重了


by blue_239k @ 2022-10-23 17:50:23

谢谢大佬


|