第四届感觉题目不是很难,除了第四题比较难想
第一题 P8839 [传智杯 #4 初赛] 组原成绩
#include <iostream>
using namespace std;
int main()
{
double a,b,c;
int res=0;
cin>>a>>b>>c;
res=0.2*a+0.3*b+0.5*c;
cout<<res<<endl;
return 0;
}
第二题 P8840 [传智杯 #4 初赛] 报告赋分
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
while (n -- ){
int a,p;
cin>>a>>p;
int res=a;
if(p<16) res-=10;
else if(p>20)
{
res-=(p-20);
}
if(res<=0) res=0;
cout<<res<<endl;
}
return 0;
}
第三题 P8841 [传智杯 #4 初赛] 竞争得分
#include<iostream>
using namespace std;
int main()
{
int n,a[1010];
cin>>n;
int minn=9990,maxx=0;
for(int i=0;i<n;i++)
{
cin>>a[i];
if(a[i]>maxx) maxx=a[i];
if(a[i]<=minn) minn=a[i];
}
for(int i=0;i<n;i++)
{
int res=100*(a[i]-minn)/(maxx-minn);
cout<<res<<" ";
}
return 0;
}
第四题 P8842 [传智杯 #4 初赛] 小卡与质数2
// 0 0 0 不变
// 1 0 1 不变
// 0 1 1 变大
// 1 1 0 变小
// 前 后
//感觉遇到异或这类的问题,而且数据量比较大,可以考虑位运算
#include <iostream>
using namespace std;
const int N = 1e7+10;
int num[35];
int st[N],k,primes[N];
void init()//线性筛法
{
st[1]=1,st[0]=1;
for(int i=2;i<N;i++)
{
if(!st[i]) primes[++k]=i;
for(int j=1;j<=k&&i*primes[j]<N;j++)
{
st[i*primes[j]]=1;
if(i%primes[j]==0) break;
}
}
}
int main()
{
init();
//预处理出来num数组
for(int i=1;i<=k;i++)
{
int x=primes[i];
for(int j=31;j>=0;j--)
{
if(x>>j&1)
{
num[j]++;
break;
}
}
}
int n;
cin>>n;
while (n -- ){
int x;
cin>>x;
int res=0;
for(int i=0;i<32;i++)
{
if(x>>i&1) res+=num[i];
}
cout<<res<<endl;
}
return 0;
}
第五题 P8843 [传智杯 #4 初赛] 萝卜数据库
#include <iostream>
#include<cstring>
#include <vector>
#include<algorithm>
using namespace std;
typedef pair<int,int>PII;
vector<PII>segs;
int n,k;
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
if(x==1)
{
int t;
cin>>t;
while(t--)
{
int x,y;
cin>>x>>y;
segs.push_back({x,y});
}
}
else {
int res=0;
int x;
int l,y;
cin>>x>>l>>y;
for(auto i:segs)
{
if(i.first==x&&i.second>=l&&i.second<=y) res++;
}
cout<<res<<endl;
}
}
return 0;
}
其实传智杯的难度一直都很稳定……
确实打的很舒服哈哈
1
1 是啥意思?