试题 A: 2022
#include
using namespace std;
typedef long long LL;
LL dp[11][2023];
int main()
{
dp[0][0]=1;
for(int i=1;i<=2022;i++)
for(int j=10;j>=1;j--)
for(int k=i;k<=2022;k++)
dp[j][k]+=dp[j-1][k-i];
cout<
试题 B: 钟表
#include
using namespace std;
int main()
{
for(int s=0;s<=6;s++)
for(int f=0;f<60;f++)
for(int m=0;m<60;m++)
{
double m1=1.0*m/60*360;
double f1=1.0*f/60*360+m1/60;
double s1=1.0*s/12*360+f1/12;
double A=fabs(f1-s1),B=fabs(f1-m1);
A=min(A,360-A);B=min(B,360-B);
if(fabs(A-2*B)<=1e-5)
cout<
试题 D: 最大数字
#include
using namespace std;
int main()
{
string s;int aa,bb;cin>>s>>aa>>bb;
int n=s.size();
string mx=s;
for(int i=0;i<(1<
string str=s;
int a=aa,b=bb;
for(int j=n-1,k=0;j>=0;j--,k++)
{
if(i>>j&1)
{
if(a==0) continue;
int x=s[k]-'0';
int d=9-x;
if(d<=a) a-=d,str[k]='9';
else str[k]=x+a+'0',a=0;
}
else
{
if(b==0) continue;
int x=s[k]-'0';
int d=x+1;
if(d<=b) b-=d,str[k]='9';
else str[k]=x-b+'0',b=0;
}
}
mx=max(mx,str);
}
cout<
试题 E: 出差
#include
using namespace std;
typedef pair PII;
const int N = 1010;
vector g[N];
int d[N];
bool st[N];
int main()
{
int n,m;cin>>n>>m;
vector w(n+1);
for(int i=1;i<=n;i++) cin>>w[i];
for(int i=1;i<=m;i++)
{
int a,b,c;cin>>a>>b>>c;
g[a].push_back({b,c});
g[b].push_back({a,c});
}
memset(d,0x3f,sizeof d);
memset(st,false,sizeof st);
d[1]=0;
priority_queue,greater > Q;
Q.push({d[1],1});
while(!Q.empty())
{
PII t=Q.top();Q.pop();
int ver=t.second,distance=t.first;
if(st[ver]) continue;
st[ver]=true;
for(auto &p:g[ver])
{
int j=p.first,v=p.second;
if(d[j]>distance+v+w[ver])
{
d[j]=distance+v+w[ver];
Q.push({d[j],j});
}
}
}
cout<
试题 I: 齿轮
#include
using namespace std;
typedef long long LL;
int main()
{
unordered_set b;
int n,q;scanf("%d%d",&n,&q);
vector a(n+1);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n-1;i++)
if(a[i]%a[n]==0)
b.insert(a[i]);
while(q--)
{
int x;scanf("%d",&x);
if(b.count((LL)x*a[n])) puts("YES");
else puts("NO");
}
return 0;
}