F题(规律题 循环节
https://ac.nowcoder.com/acm/contest/912/F
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
long long a,b,n;
cin>>a>>b>>n;
if(n%3==0)
cout<<a<<endl;
else if(n%3==1)
cout<<b<<endl;
else
cout<<(a^b)<<endl;
return 0;
}
I题 贪心
https://ac.nowcoder.com/acm/contest/912/I
代码一直没过 然后我就。。睡觉去了
错误代码:
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=1e5+10;
char a[maxn];
struct node
{
double p;
int x;
int d;
}m[maxn];
bool cmp(node a,node b)
{
if(a.p==b.p)
return a.x>b.x;
return a.p>b.p;
}
int main()
{
int n,k,i;
cin>>n>>k;
n=n/3;
for(i=1;i<=k;i++)
cin>>m[i].p;
for(i=1;i<=k;i++)
{
cin>>m[i].x;
m[i].d=i;
}
sort(m+1,m+k+1,cmp);
for(i=1;i<=n;i++)
{
a[m[i].d]='1';
}
for(i=n+1;i<=k;i++)
a[m[i].d]='0';
for(i=1;i<=k;i++)
cout<<a[i];
cout<<endl;
return 0;
}
正确代码:
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=1e5+10;
char a[maxn];
struct node
{
double p,q;
int x;
int d;
}m[maxn];
bool cmp(node a,node b)
{
return a.q>b.q;
}
int main()
{
int n,k,i;
cin>>n>>k;
n=n/3;
for(i=1;i<=k;i++)
cin>>m[i].p;
for(i=1;i<=k;i++)
{
cin>>m[i].x;
m[i].d=i;
m[i].q=m[i].x*m[i].p;
}
sort(m+1,m+k+1,cmp);
for(i=1;i<=n;i++)
{
a[m[i].d]='1';
}
for(i=n+1;i<=k;i++)
a[m[i].d]='0';
for(i=1;i<=k;i++)
cout<<a[i];
cout<<endl;
return 0;
}
一开始想的太少,哎,还是太菜啊
J题 直接遍历
https://ac.nowcoder.com/acm/contest/912/J
错误代码:
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=1e4+10;
int a[maxn];
double x[maxn];
int main()
{
int n,m,i;
double sum1,sum2,ans;
cin>>n>>m;
for(i=0;i<m;i++)
cin>>a[i];
for(i=0;i<m;i++)
cin>>x[i];
for(i=0;i<m-1;i++)
{
if(n<a[i])
{
//cout<<a[i]<<endl;
sum1=n*(x[i]);
sum2=(a[i])*(x[i+1]);
//cout<<sum1<<" "<<sum2<<endl;
break;
}
}
ans=min(sum1,sum2);
printf("%.3lf\n",ans);
return 0;
}
正确代码:
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=1e5+10;
int a[maxn];
double x[maxn];
int main()
{
int n,m,i;
double ans=9999999;
cin>>n>>m;
for(i=0;i<m;i++)
cin>>a[i];
for(i=0;i<m;i++)
cin>>x[i];
for(i=0;i<m;i++)
{
if(n<a[i])
{
if(n>=a[i-1])
ans=min(ans,n*x[i]);
else
ans=min(ans,x[i]*a[i-1]);
}
}
cout<<ans<<endl;
return 0;
}
还有三个签到题 太简单了就没写
突然发现好像不是ACM放弃了我 而是我每次先放弃?