2021夏季每日一题 week3 完结
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021夏季每日一题 week3 完结相关的知识,希望对你有一定的参考价值。
目录
3554. 二进制 【难度: 简单 / 知识点: 进制转换】
#include<bits/stdc++.h>
using namespace std;
void print(string s,int a)
{
long long int sum=0;
for(int i=0;i<s.size();i++)
{
if(s[i]-'0') sum=sum*2+1;
else sum=sum*2;
}
sum=sum+a;
string ans;
while(sum) ans+=to_string(sum%2),sum/=2;
while(ans.size()<32) ans+="0";
reverse(ans.begin(),ans.end());
cout<<ans<<endl;
}
int main(void)
{
int t; cin>>t;
while(t--)
{
string s; cin>>s;
print(s,1),print(s,3);
}
}
3565. 完美矩阵 【难度: 一般 / 知识点: 贪心 思维】
#include<bits/stdc++.h>
using namespace std;
const int N=210;
int a[N][N],n,m;
int main(void)
{
int t; cin>>t;
while(t--)
{
cin>>n>>m;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin>>a[i][j];
long long int ans=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
vector<int> ve(4,0);
ve[0]=a[i][j],ve[1]=a[n-i-1][j],ve[2]=a[i][m-j-1],ve[3]=a[n-i-1][m-j-1];
sort(ve.begin(),ve.end());
int temp=ve[2];
for(int k=0;k<4;k++) ans+=abs(temp-ve[k]);
}
}
cout<<ans/4<<endl;
}
}
3574. 乘积数量 【难度: 简单 / 知识点: 前缀和 思维】
#include<bits/stdc++.h>
using namespace std;
int main(void)
{
int n; cin>>n;
int s=1,l=0,r=1;
long long int ans1=0,ans2=0;
while(n--)
{
int x; cin>>x;
if(x<0) s=-s;
if(s>0) ans1+=l,ans2+=r,r++;
else ans1+=r,ans2+=l,l++;
}
cout<<ans1<<" "<<ans2<<endl;
return 0;
}
3580. 整数配对 【难度: 简单 / 知识点: 贪心】
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N],n,ans;
int main(void)
{
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
sort(a,a+n);
for(int i=0;i<n;i+=2) ans+=a[i+1]-a[i];
cout<<ans;
return 0;
}
3583. 整数分组 【难度: 中 / 知识点: DP】
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10,M=5010;
int f[M][M],a[N],n,m;
int main(void)
{
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+n+1);
for(int i=1,k=1;i<=n;i++)
{
while(a[i]-a[k]>5) k++;
for(int j=1;j<=m;j++) f[i][j]=max(f[i-1][j],f[k-1][j-1]+i-k+1);
}
cout<<f[n][m];
return 0;
}
以上是关于2021夏季每日一题 week3 完结的主要内容,如果未能解决你的问题,请参考以下文章