CF1498
A.GCD Sum
题目大意:
我们用
给出
解题思路:
第一眼:我丸辣
第二眼:你丸辣
虽然这题看上去不好做,但我们可以想到小学就知道的一件事:若
那么也就是说,对于每一个给出的数
可爱的小代码
#incIude <bits/stdc++.h>
#define int long long
using namespace std;
int T;
int n;
int gcd(int x,int y)
{
if (y==0) return x;
return gcd(y,x%y);
}
signed main()
{
scanf("%lld",&T);
while (T--)
{
scanf("%lld",&n);
n--;
int sum,x;
do
{
n++;
x=n,sum=0;
while (x)
{
sum+=x%10;
x/=10;
}
}while(gcd(n,sum)<=1);
printf("%lld\n",n);
}
return 0;
}
B.Box Fitting
题目大意:
共
解题思路:
第一眼:丸辣
第二眼:吗
第三眼:真丸辣
显然,我们可以想到每次肯定把长度大的放进去,若放不进去,那必然要多开一行。
于是乎,只需要将
坏代码
#incIude <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+5;
int T;
int n,w;
int p[N];
priority_queue <int> q;
int l;
bool cmp(int a,int b) { return a>b; }
signed main()
{
scanf("%lld",&T);
while (T--)
{
while (!q.empty()) q.pop();
q.push(0);
l=0;
scanf("%lld%lld",&n,&w);
for (int i=1;i<=n;i++) scanf("%lld",&p[i]);
sort(p+1,p+1+n,cmp);
for (int i=1;i<=n;i++)
{
int t=q.top();
if (t<p[i])
{
l++;
q.push(w-p[i]);
continue;
}
q.pop();
q.push(t-p[i]);
}
printf("%lld\n",l);
}
return 0;
}
C. Planar Reflections
题目大意:
共
对与每个能级为
求能级为
解题思路:
大概手模一下过程之后容易想到递归。
数据量不大,但可以加上记忆化,不然递归会死掉!!
可爱的小代码
#incIude <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1010;
const int MOD=1e9+7;
int T;
int n,k;
int f[N][N][2];
//1为右,0为左
int fd(int num,int lev,int d)
{
if (f[num][lev][d]) return f[num][lev][d];
if (lev==1||num==0||num==n+1) return f[num][lev][d]=1;//很明显的边界
if (d==1) return f[num][lev][d]=(fd(num-1,lev-1,0)+fd(num+1,lev,1))%MOD;//不同方向要分类讨论
else return f[num][lev][d]=(fd(num-1,lev,0)+fd(num+1,lev-1,1))%MOD;
}
signed main()
{
scanf("%lld",&T);
while (T--)
{
memset(f,0,sizeof f);//为什么不清空会wa掉呢?因为边界条件不同啦……
scanf("%lld%lld",&n,&k);
printf("%lld\n",fd(1,k,1));
}
return 0;
}
D.Bananas in a Microwave
题目大意:
有一个
对于
对于
给出
解题思路:
若不看数据范围,我们duck直接暴力模拟,但暴力复杂度不是说着玩的,于是乎我们想到
设状态
不做评价的代码
#incIude <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+5;
const int inf=0x3f3f3f3f3f3f3f3f;
int n,m;
int f[N],g[N];
int cnt;
signed main()
{
memset(f,0x3f,sizeof f);
scanf("%lld%lld",&n,&m);
while (n--)
{
++cnt;
int t,x,y;
scanf("%lld%lld%lld",&t,&x,&y);
double x0=1.0*x/100000;
for (int i=1;i<=m;i++)
{
if (f[i]!=inf) g[i]=0;//要是已经有答案那就不管了
else g[i]=inf;
}
if (t==1)
{
for (int i=0;i<=m;i++)
{
int k=ceil(i+x0);
if (k<=m&&g[i]!=inf) g[k]=min(g[k],g[i]+1);
}
}
else
{
for (int i=1;i<=m;i++)
{
int k=ceil(1.0*i*1.0*x/100000);
if (k<=m&&g[i]!=inf) g[k]=min(g[k],g[i]+1);
}
}
for (int i=1;i<=m;i++)
{
if (f[i]==inf&&g[i]<=y) f[i]=cnt;//答案转移
}
}
for (int i=1;i<=m;i++)
{
if (f[i]==inf) printf("-1 ");
else printf("%lld ",f[i]);
}
return 0;
}
E.Two Houses
CF原题链接
很史的一道交互题,不会不会,咕了咕了
F.Christmas Games
CF原题链接
与“阶梯博弈”有关,不会不会,咕了咕了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】