逆天无cout!!

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

void_AC @ 2024-03-30 10:33:35

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

没有死循环; 没有编译死; 可能没有TLE(bushi;


by weitianjian @ 2024-03-30 11:35:09

至于为什么没有输出,实际上就是那个 for 循环每次只是在改变 ji 的值永远不变,因此是死循环。又因为不断在访问 a[j] ,便理所当然得到达了未定义内存中


by weitianjian @ 2024-03-30 11:36:40

对了,忘了件事,数组a开大一点,没必要这么节约


by void_AC @ 2024-03-30 12:04:12

#include <bits/stdc++.h>
using namespace std;
int m,l,all=0,u[100],v[100];
bool a[100000] = {false};
int main(){
    cin >> l >> m;
    for(int i=0; i<m; i++){
        cin >> u[i] >> v[i];
    }for(int i=0; i<m; i++){
        for(int j=u[i]; i<=v[i]; j++){
            /*I don't konw*/
        }
    }for(int i=0; i<=l; i++){
        if(a[i] == true){
            all++;
        }
    }cout<<all<<endl;
    return 0;
}

by weitianjian @ 2024-03-30 12:43:45

#include <bits/stdc++.h>
using namespace std;
int m,l,all=0,u[100],v[100];
bool a[100000] = {false};
int main(){
    cin >> l >> m;
    for(int i=0; i<m; i++){
        cin >> u[i] >> v[i];
    }for(int i=0; i<m; i++){
        for(int j=u[i];j<=v[i] /*i<=v[i]*/; j++){//死循环!!!改这里!!!改为j<=v[i]
            a[j]=true;//直接覆盖即可
        }
    }for(int i=0; i<=l; i++){
        if(a[i] == false){//emm,这里是在统计没有被去除的树木总数,由于被去除的都是true(见上文代码),统计false即可
            all++;
        }
    }cout<<all<<endl;
    return 0;
}

上一页 |