大家好,第三次创作,欢迎高手指导,谢谢!
不定时更新,题目+解析+评测结果+完整程序,有问题有瑕疵欢迎评论区留言!
1.题目
1. K15340 齐天大圣到此一游
题目描述
在某个平行世界里,如来是将两只手并排放在一起和孙悟空打赌的。也就是说只要孙悟空能飞出这两只手,就不会被如来抓住。孙悟空为了飞出如来的手掌心,将自己分身成了若干个,每一个孙悟空遇到如来的手指时都会以为自己飞到了尽头,于是这个分身就会在连续的几根手指上的每根都留下“齐天大圣到此一游”几个字。
假设如来佛两只手的十根手指自左向右依次编号为1~10,每根手指都足够大,可以写的下足够多的字。孙悟空总共有n个分身(算上自己),第i个分身会在连续的编号为[ai,bi]的手指上留下一句“齐天大圣到此一游”。当然,孙悟空的全部n个分身最后都没能逃过如来的掌心。请问最终如来的每根手指上各被写下了几句“齐天大圣到此一游”?
输入格式
输入n+1行。
第一行一个整数n,表示孙悟空分身的个数,n的范围在[1,10]以内。
接下来n行,每行输入两个整数ai和bi,表示第i个分身会在连续的编号为[ai,bi]的手指上留下一句“齐天大圣到此一游”。1<=ai<=bi<=10。
输出格式
输出一行10个整数,每个整数表示如来的这根手指上被孙悟空写下了几句“齐天大圣到此一游”(如果这根手指没被留字就输出0),整数与整数之间以一个空格隔开。
输入输出样例
输入样例1:复制
2 2 5 3 6
输出样例1:复制
0 1 2 2 2 1 0 0 0 0
说明:
样例说明:
孙悟空共有2个分身:
第1个分身在第2~5根手指上留字;
第2个分身在第3~6根手指上留字。
因此最终如来的每根手指上留下的“齐天大圣到此一游”的句数为:
第1根手指0句;
第2根手指1句;
第3根手指2句;
第4根手指2句;
第5根手指2句;
第6根手指1句;
第7根手指0句;
第8根手指0句;
第9根手指0句;
第10根手指0句。
【耗时限制】1000ms 【内存限制】128MB
2.解析
这道题看起来很难,实际上很简单,我们直接开始写程序!
1.变量
#include<bits/stdc++.h>
using namespace std;
int n,a,b,cnt[11];
int main()
{
}
n:分身个数(算上自己)
a,b:表示第i个分身会在连续的编号为[ai,bi]的手指上留下一句“齐天大圣到此一游”。
cnt[]:如来的每根手指上留下的“齐天大圣到此一游”的句数。
2.输入
#include<bits/stdc++.h>
using namespace std;
int n,a,b,cnt[11];
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>a>>b;
}
}
循环输入。
3.循环标记
#include<bits/stdc++.h>
using namespace std;
int n,a,b,cnt[11];
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>a>>b;
for(int i=a;i<=b;i++){
cnt[i]++;
}
}
}
挨个遍历标记。
4.循环输出
#include<bits/stdc++.h>
using namespace std;
int n,a,b,cnt[11];
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>a>>b;
for(int i=a;i<=b;i++){
cnt[i]++;
}
}
for(int i=1;i<=10;i++){
cout<<cnt[i]<<' ';
}
}
循环输出桶计数。
3.评测结果
4.完整程序
#include<bits/stdc++.h>
using namespace std;
int n,a,b,cnt[11];
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>a>>b;
for(int i=a;i<=b;i++){
cnt[i]++;
}
}
for(int i=1;i<=10;i++){
cout<<cnt[i]<<' ';
}
}
谢谢大家,给个赞呗!