为什么有一个样例出错了 #include<iostream> using namespace std; int main() { int m,n,ans=0; int arr[101][2]; cin>>m>>n; int ch[10000]={0}; for(int i=0;i<n;i++) { for(int j=0;j<2;j++) { cin>>arr[i][j]; } } for(int i=0;i<n;i++) { for(int j=arr[i][0]-1;j<arr[i][1];j++) { ch[j]=1; } } for(int i=0;i<m;i++) { if(ch[i]==1) { ans++; } } cout<<m-ans+1; }
#include<stdio.h> int main() { int diff = 0, ans = 0; int l, m; scanf("%d%d", &l, &m); int tree[10007] = {}; while(m -- ) { int x, y; scanf("%d%d", &x, &y); tree[x] ++ ; tree[y + 1] -- ; } for (int i = 0; i <= l; i ++ ) { diff += tree[i]; if (diff == 0) ans ++ ; } printf("%d", ans); return 0; } 差分这样写更好一点
测试答案错一小半,感觉没错,不知道是哪里没住要到 #include<stdio.h> int main(void) { int L, M; scanf("%d", &L); scanf("%d", &M); int a[L+1]; int i, x, y, ans = 0, fornt, last, k = 0; for(i=0; i<=L; i++) { a[i] = 0; } for(i=1; i<=M; i++) { scanf("%d%d", &x, &y); a[x] = 1; a[y] = -1; } for(i=0; i<=L; i++) { if(a[i] == 1) { k++; } if(a[i] == -1) { k--; } if(a[i]==0 && k==0) { ans++; } } printf("%d\n", ans); return 0; }
悠游 2023-10-11 11:22:06 |
以L作为数组长度,这思路不错呀,然后把数组的元素序号作为数轴,一开始的所有元素为1,被被移走的树的序号所在元素为0,然后统计元素值为1的元素数,就为剩下的树的数,好好好,好思路,不过你是想缩小运算量吗
为啥答案错误?但是结果是正确的 #include <stdio.h> int main() { int len,m,sum; scanf("%d %d",&len,&m); int a[100001]; for(int i=0;i<=len;i++) { a[i]=1; } int b[100][2]; for(int i=0;i<m;i++) { for(int j=0;j<2;j++) { scanf("%d",&b[i][j]); } } for(int i=0;i<m;i++) { for(int j=b[i][0];j<=b[i][1];j++) { a[j]=0; } } for(int i=0;i<=len;i++) { if(a[i]==1) sum++; } printf("%d",sum); return 0; }
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:603 |
【出圈】 (C语言代码)浏览:824 |
用筛法求之N内的素数。 (C语言代码)浏览:685 |
简单的a+b (C语言代码)浏览:878 |
1054题解浏览:516 |
筛排处理 (C语言代码)浏览:830 |
小O的乘积 (C++代码)浏览:796 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:639 |
老王赛马 (C++代码)浏览:973 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:405 |