竞赛
考级
#include <bits/stdc++.h> using namespace std; const int N = 1e4+10; int a[N],l,m,u,v; int main(){ cin >> l >> m; while(m--){ cin >> u >> v; for(int i = u;i <= v;i++){ if(!a[i]){ a[i] = 1; l--; } } } cout << l+1; return 0; }
Rick
私はJAZ
???
#include<iostream> using namespace std; int a[10005]; int main(){ int l,m,s=0,t,w; cin>>l>>m; for(int i=0;i<=l;i++){ a[i]=1; } for(int i=1;i<=m;i++){ cin>>t>>w; for(int j=t;j<=w;j++){ a[j]=0; } } for(int i=0;i<=l;i++){ s+=a[i]; } cout<<s<<endl; return 0; }
互关
#include<bits/stdc++.h> using namespace std; int main(){ int l,m,u,v; cin>>l>>m; int a[10010]={}; for(int i=1;i<=m;i++){ cin>>u>>v; for(int j=u;j<=v;j++) a[j]=1; } int cnt=0; for(int i=0;i<=l;i++) if(a[i]==0) cnt++; cout<<cnt; return 0; }
芙莉莲
变量: 好了变量给了自己做 骗你的
风衾
通过结构体、数组和循环嵌套组合,完成程序;
Feanaze
#include <iostream> #include <cstring> using namespace std; int a[10005]; int main(){ int L,M; cin>>L>>M; int x,y; memset(a,0,sizeof(int)); for(int i=1;i<=M;i++){ cin>>x>>y; for(int j=x;j<=y;j++){ a[j]=1; } } int sum=0; for(int i=0;i<=L;i++){ if(a[i]==0){ sum++; } }
༺ཌༀ٩( 'ω' )و ༀད༻
#include<ios> int l[10000],m,f,s,n;int main(){scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){scanf("%d%d",&f,&s);int j=f;while(j<=s){if(!l[j])n--,l[j]=1;j++;}}printf("%d",n+1);}
史莱克七怪
简单数组题,代码如下: #include<iostream> using namespace std; int a[10005]; int main(){ int l,m,s=0,t,w; cin>>l>>m; for(int i=0;i<=l;i++){ a[i]=1; } for(int i=1;i<=m;i++){ cin>>t>>w; for(int j=t;j<=w;j++){ a[j]=0; } } for(int i=0;i<=l;i++){ s+=a[i]; } cout<<s<<endl; return 0; }
变鸽的一只呱
LOVEKlee1314
#include<bits/stdc++.h> #include<algorithm> #include<vector> using namespace std; int c[10010]; int main(){ int a,n,b=0; cin >> n >> a; for(int i=0;i<=n;i++){ c[i]=1; } for(int j=1;j<=a;j++){ int x,v; cin >> x >> v; for(int z=x;z<=v;z++){ c[z]=0; } } for(int k=0;k<=n;k++){ if(c[k]==1){ b++; } } cout << b; return 0; }
186****8190
题干信息解读 题目描述了一条长度为l的马路上均匀分布的树木(位置0到l),需要处理m个施工区域(可能重叠),移除这些区域内的所有树木后统计剩余树木数量。输入格式要求先读入l和m,再读入m对(u,v)表示施工区间24。输出仅需一个整数表示剩余树木数量 整体做题思路 1.初始化标记数组:创建长度为l+1的数组,初始值设为1表示所有位置有树。 2.处理施工区域:遍历每个区间,将对应数组位置标记为0表示移树。 3.统计剩余树木:遍历数组统计值为1的元素数量。 难点与注意事项 1.数组边界:需包含位置0和l的树木。 2.区间重叠处理:重复标记不会影响结果,只需最终状态 3.数据规模:l最大1e4,使用普通数组即可。 答案 代码说明: 1.使用vector容器动态存储树木状态,初始值为1表示有树 2.通过双重循环处理每个移除区域,将对应位置标记为0 3.最后遍历统计未被移除的树木数量(值为1的位置) 复杂度分析 时间复杂度:O(m*l),最坏情况下需处理所有区间的每个位置38。 空间复杂度:O(l),仅需存储长度为l+1的数组9。
AC是最好的
Caultonchen
思路: 第一遍,将路上的所有树打上标记,表示这个点没有被访问过。 第二遍,读入区间的头和尾,从这个区间的头开始循环,到尾结束,标记为访问过。 第三遍,顺序访问路上的树,只要没访问过,计数加1,这样就求出了路上所有还存在的树的数目。
AC君
#include
#include<bits/stdc++.h> using namespace std; int main(){ int l,m; cin>>l>>m; int tree[1000001]; for(int i=0;i<=l;i++){ tree[i]=1; } for(int i=1;i<=m;i++){ int x,y; cin>>x>>y; for(int j=x;j<=y;j++){ tree[j]=0; } } int sum=0; for(int i=0;i<=l;i++){ sum+=tree[i]; } cout<<sum; return 0; }
回来看看
#include <iostream> using namespace std; int main() { int l,m,c1,c2; cin>>l>>m; int a[l+1],sum=l+1; for(int i=0;i<l+1;i++)a[i]=1; for(int i=0;i<m;i++){ cin>>c1>>c2; for(int j=c1;j<c2+1;j++){ if(a[j]==1){ a[j]=0; sum--; } } } cout<<sum; }
NGGGGGGGGGGGGGGG
空降坐标:CP002783 来源:NOIP2005 普及组 请看代码
LW
终于做对了
zhouty
共67条