33 条题解
-
0
本来这道题挺简单的,但是我数组开得太小了哈哈(up AC过)。
#include <bits/stdc++.h> using namespace std; int main() { int l, m, a[10000], ans = 0, x, y; cin >> l >> m; for (int i = 0; i <= l; i++) { a[i] = 1; } for (int i = 0; i < m; i++) { cin >> x >> y; for (int j = x; j <= y; j++) { a[j] = 0; } } for (int i = 0; i <= l; i++) { if (a[i] == 1) { ans++; } } cout << ans; return 0; }
-
-1
#include <bits/stdc++.h> using namespace std; int main() { int a[10005], n, m, sum = 0; scanf("%d%d", &n, &m); for (int i = 0; i <= n; i++) a[i] = 1; for (int i = 0; i <= m; i++) { int l, r; scanf("%d%d", &l, &r); for (int j = l; j <= r; j++) a[j] = 0; } for (int i = 0; i <= n; i++) if (a[i] == 1) sum++; printf("%d\n", sum); return 0; }
-
-1
#include <bits/stdc++.h> using namespace std; int main() { int L,M; int cnt=0; int vis[10000+10]; memset(vis,0,sizeof(vis)); cin>>L>>M; for(int i=0;i<=L;i++){ vis[i]=0; } for(int i=1;i<=M;i++){ int head,tail; cin>>head>>tail; for(int j=head;j<=tail;j++){ if(vis[j]==0){ vis[j]=1; } } } for(int i=0;i<=L;i++){ if(vis[i]==0){ cnt++; } } cout<<cnt<<endl; return 0; } #
-
-1
模拟的运用
这道题本身不是很难,但在这套题单中,也算是数一数二了,全靠同行衬托了属于是。
好了,进入正题。 这道题我运用的是模拟,思路如下:
- 定义一个数组,大l+1,模拟道路上的树,全部初始化为1,表示有树。
- 输入M行中每行的数,把对应的数都设为0,模拟树移走的情况。
- 最后定义一个变量用以统计,遍历数组,如果数为0那么变量加1,最后统计出剩余要种的树。
AC代码(附注释解析)
int l,m; cin>>l>>m; int a[l+1],b1,b2; for (int i=0;i<=l;i++) { a[i]=1; }//把数组a全部初始化为1,表示全都有树。 for (int i=1;i<=m;i++) { cin>>b1>>b2;//输入头和尾。 for (int j=b1;j<=b2;j++) { a[j]=0; }//把编号b1到b2得数都设为0,表示没有树。 }//用这种方法就可以防止一个地方重复减两次。 int sum=0;//定义一个变量,用以统计还有树的地方。 for (int i=0;i<=l;i++)//遍历数组 { if (a[i]==1) { sum++; }//如果有树(数组为1表示有树),那么sum+1。 } cout<<sum;
-
-2
#include <bits/stdc++.h> using namespace std; int main() { bool a[10005] int l, m, start, end, s = 0; cin>>l>>m; for(int i = 0; i <= l; i++) a[i] = true; for(int i = 0; i < m; ++i) { cin >> start >> end; for(int j = start; j <= end; j++) a[j] = false; } for(int i = 0; i <= l; ++i) { if (a[i]) s++; } cout<<s; return 0; }
-
-2
#include <iostream> using namespace std; int main() { int l, m, a, b, a[10005], sum = 0; cin >> l >> m; for (int i = 0; i <= l; i++) { a[i] = 1; } for (int i = 1; i <= m; i++) { cin >> a >> b; for (int j = a; j <= b; i++) { a[j] = 0; } } for (int i = 0; i <= l; i++) { if (a[i]) { sum++; } } cout << sum; return 0; }
-
-2
#include <bits/stdc++.h> using namespace std; int main() { int l,a[100000],m,x,y,num = 0; cin>>l>>m; for (int i = 0; i <= l; i++) { a[i] = 1; } for (int i = 1; i <= m; i++) { cin>>x>>y; for (int j = x; j <= y; j++) { a[j] = 0; } } for (int i = 0; i <= l; i++) { if(a[i] == 1) { num++; } } cout<<num; }
-
-
-3
实际上并不用想其他UP那么麻烦,不必
多炫耀知识多想想想:
陶陶不用站椅子就可以摘到,那他站上椅子那也不用愁了?
是的,我们可以直接算陶陶站上椅子可以摘几颗不就KO了?
所以说别往难的地方去想嘛
那基本的思路是这鸭子的:
- 输入10个在100到200之间的正整数
- 输入陶陶的身高
- 更新陶陶的身高(加上椅子的高度30厘米)
- 重复判断第i个苹果是否达到陶陶的身高(加上椅子的高度)
- 输出答案
代码是这鸭子的:(UP已经消过毒了,放心食用)
#include<bits/stdc++.h> using namespace std; int a[11],n,i,tt,sum=0; int main(){ for(i=1;i<=10;i++){ cin>>a[i]; } cin>>tt; tt+=30; for(i=1;i<=10;i++){ if(a[i]<=tt) sum++; } cout<<sum<<endl; return 0; }
(难道这是最简代码???)
题解不易,点个赞吧👍
信息
- ID
- 1570
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- 5
- 标签
- 递交数
- 2584
- 已通过
- 951
- 上传者