202406-1 矩阵重塑(其一)
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int n,m,p,q;
cin>>n>>m>>p>>q;
int k=n*m;
int a[n][m],b[k],c[p][q];
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>a[i][j];
b[i*m+j]=a[i][j];
}
}
for(int i=0;i<p;i++)
{
for(int j=0;j<q;j++)
{
c[i][j]=b[i*q+j];
}
}
for(int i=0;i<p;i++)
{
for(int j=0;j<q;j++)
{
cout<<c[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
202406-2 矩阵重塑(其二)
#include<bits/stdc++.h>
using namespace std;
const int N=1e4+4;
int a[N][N],b[N],c[N][N];
int n,m;
void cs(int p,int q)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
b[i*m+j]=a[i][j];
}
}
for(int i=0;i<p;i++)
{
for(int j=0;j<q;j++)
{
a[i][j]=b[i*q+j];
}
}
n=p;m=q;
}
void zz()
{
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
c[i][j]=a[j][i];
}
}
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
a[i][j]=c[i][j];
}
}
int tem=n;
m=n;
n=tem;
}
int main( )
{
int t;
cin>>n>>m>>t;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>a[i][j];
b[i*m+j]=a[i][j];
}
}
int op,aa,bb;
while(t--)
{
cin>>op>>aa>>bb;
if(op==1) cs(aa,bb);
else if(op==2) zz();
else
{
cout<<a[aa][bb]<<endl;
}
}
return 0;
}
词频统计
#include<bits/stdc++.h>
using namespace std;
const int N=100;
int z[N],y[N];
int main( )
{
int n,m;
cin>>n>>m;
while(n--)
{
int l;
cin>>l;
bool f[N]={0};
for(int i=1;i<=l;i++)
{
int x;
cin>>x;
y[x]++;
if(y[x]&&!f[x])
{
z[x]++;
f[x]=1;
}
}
}
for(int i=1;i<=m;i++)
{
cout<<z[i]<<" "<<y[i]<<endl;
}
return 0;
}
相似度计算
#include<bits/stdc++.h>
using namespace std;
const int N=100;
set<string> se1;
set<string> se2;
set<string> ss;
int main( )
{
int n,m;
cin>>n>>m;
for(int i=0;i<n;i++)
{
string s;
cin>>s;
string s1="";
for(int j=0;j<s.size();j++)
{
s[j]=tolower(s[j]);
s1=s1+s[j];
}
se1.insert(s1);
ss.insert(s1);
}
for(int i=0;i<m;i++)
{
string s;
cin>>s;
string s1="";
for(int j=0;j<s.size();j++)
{
s[j]=tolower(s[j]);
s1=s1+s[j];
}
se2.insert(s1);
ss.insert(s1);
}
//同时出现:
int num=0;
for(auto it:se1)
{
num+=se2.count(it);
}
cout<<num<<endl<<ss.size();
return 0;
}
仓库规划
#include<bits/stdc++.h>
using namespace std;
int a[1000][10],b[1000];
int main( )
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++)
{
int sum=0;
int minn=INT_MAX;
for(int j=1;j<=n;j++)
{
int f=1;
for(int k=1;k<=m;k++)
{
if(a[j][k]>a[i][k])
{
sum+=a[j][k]-a[i][k];
if(f==m)
{
if(minn>sum)
{
b[i]=j;
}
minn=min(minn,sum);
}
f++;
}
}
}
}
for(int i=1;i<=n;i++)
{
cout<<b[i]<<endl;
}
return 0;
}
因子化简
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int q;
cin>>q;
while(q--)
{
long long n,k;
cin>>n>>k;
long long res=1;
for(int i=2;i<=n/i;i++)
{
int s=0;
while(n%i==0) n/=i,s++;
if(s>=k) res=res*pow(i,s);
}
cout<<res<<endl;
}
return 0;
}