2020ccpc威海站

A Golden Spirit

策略肯定是先将左右的人互换的对面,互换位置后,此时你的位置是在左边,考虑是否要等待左边呆得最久的人休息完,或者提前过去右边等待右边呆的最久的人休息完。两个策略取max.

#include<bits/stdc++.h>
using namespace std;

const int maxn=2e5+10;

typedef unsigned long long ll;

int main()
{
    int t;
    scanf("%d",&t);
    while( t-- )
    {
        ll n,x,t;
        scanf("%lld%lld%lld",&n,&x,&t);
        ll ans1=4*n*t;
        ll ans2=4*n*t;
        if( 2*(n-1)*t+2*t<x ) ans2+=x-(2*(n-1)*t+2*t)+t;
        else ans2+=t;
        if( 2*(n-1)*t<x ) ans1+=(x-2*(n-1)*t);

        printf("%lld\n",min(ans1,ans2));
    }
} 

D ABC Conjecture

对着1e18的数据范围干瞪眼可不行,直接打表发现满足的数进行素数拆分至少有一个素数的指数是大于1的,否则就不满足。并且因为1e6*1e6=1e12我们只需要筛1e6的素数就可以,剩下未被筛到的素数直接sqrt判断。(区域赛常考点)

#include<bits/stdc++.h>
using namespace std;

const int maxn=1e6+10;

typedef long long ll;
int prime[5000000];//保存素数
int vis[maxn];     //初始化
int cnt;

void getprime(int n)
{
    cnt=0;
    memset(vis,0,sizeof(vis));
    for(int i=2;i<n;i++)
    {
        if(vis[i]==0)
            prime[cnt++]=i;
        for(int j=0;j<cnt&&i*prime[j]<n;j++)
        {
            vis[i*prime[j]]=1;
            // vis[i*prime[j]]=prime[j]; 
            if(i%prime[j]==0)
                break;
        }
    }
}


int main()
{
    getprime(maxn-2);
    int n,q;
    scanf("%d",&q);
    while( q-- )
    {
        ll x;scanf("%lld",&x);
        bool flag=false;
        for( int i=0;prime[i]<=x&& i<cnt;i++ )
        {
            if( x%(prime[i]*prime[i])==0 )
            {
                flag=true;
                break;
            }
            if( x%prime[i]==0 ) x/=prime[i];
        }
        if( x>1 )
        {
            ll t=sqrt(x);
            if( t*t==x ) flag=true;
        }
        if( flag ) puts("yes");
        else puts("no");

    }
} 

L Clock Master

我们选取齿轮肯定最好两个齿轮没有公因子,那么就是两个齿轮数互质,这样方案数就是每个数相乘。那么所有数都是互质肯定是枚举所有质数的幂次数进行选择,每个质数的幂次数值选取一个,那么就是分组背包。考虑到可能会MLE滚动优化了一下(其实应该不会.
(坑点,记得预处理log(i)否则会把你T自闭)

#include<bits/stdc++.h>
using namespace std;

const int maxn=3e5+10;

typedef long long ll;
int prime[maxn];//保存素数
int vis[maxn];     //初始化
int cnt;

void getprime(int n)
{
    cnt=0;
    memset(vis,0,sizeof(vis));
    for(int i=2;i<n;i++)
    {
        if(vis[i]==0)
            prime[cnt++]=i;
        for(int j=0;j<cnt&&i*prime[j]<n;j++)
        {
            vis[i*prime[j]]=1;
            if(i%prime[j]==0 )
                break;
        }
    }
}
double dp[2][30005];
double Log[30045];

int main()
{
//    clock_t clock_start1 = clock();
    getprime(30005);
    for( int i=1;i<=3e4;i++ ) Log[i]=log(i);
    int op=1,up=30000;
//    for( int i=0;i<=up;i++ ) dp[0][i]=dp[1][i]=0;

    for( int i=0;i<cnt && prime[i]<=up;i++ )
    {
        int now=prime[i];
        for( ;now<=up;now*=prime[i] )
        {
            for( int j=up;j>=now;j-- )
            {
                dp[op][j]=max(dp[op^1][j-now]+Log[now],dp[op][j]);
            }
        }
        op^=1;
        for( int j=up;j>=0;j-- ) dp[op][j]=max(dp[op][j],dp[op^1][j]);
    }
//    clock_t clock_end1 = clock();
//    printf("testee time:  %ld ms  ", clock_end1 - clock_start1);
    op^=1;
    int t;
    scanf("%d",&t);
    while( t-- )
    {
        int x;scanf("%d",&x);
        printf("%.9lf\n",dp[op][x]);
    } 
//    

}
全部评论

相关推荐

昨天 23:23
复旦大学 Java
点赞 评论 收藏
分享
2025-11-21 03:09
已编辑
南昌大学 golang
bg普211本,走的golang后端方向。找实习经历:最近一个月投了一些日常,面了4场,都是一面挂。简历包装成分比较多,当时这个简历准备了两个星期,问AI解决什么问题用什么技术,跟其他技术对比优缺点在哪,等等。但是面试的时候一些基础的八股都答的模模糊糊,然后项目延伸的场景题一点不会。有点害怕面试,面前焦虑…本文可能带点碎碎念…省流就是因为每周面心态不行,不知道先学什么以及三天打鱼两天晒网…现在的主要问题,一个是只能依靠即时满足无法撑过枯燥的学习,另一个是难以调整心态,面试焦虑。个人背景:主包其实本来是大一开始学后端的,但是当时不知道合适的学习方法(学习路线和借助AI),也社恐不太敢问学长,走了很多弯路,也没有花很多时间在后端上面(按兴趣学的只有大二上学期写了opencamp的rustlings和learning-cxx,还有玩steam的图灵完备,剩余时间比较摆烂)。结果就是现在这鬼样子,只会写crud,差不多就是会gin&nbsp;gorm基础,会写注册登录和简单业务接口,写过几种项目结构和设计模式。缺乏自己延展的能力。计算机基础:也相当差,之前大二学的计网全忘光了,操作系统60飘过。虽然大一的时候打算法竞赛(也没什么成绩就是,省二等奖收集者),但到现在一年半没碰了,就只有dfs,并查集啥的一些很基础的题目随便写,hot100链表因为竞赛没练过相当不熟练。大二下的时候,数据库课看八股,又困又累,什么都没看进去,后面自然又是全忘光了。现在我虽然有了个概览,知道后端除了crud有缓存、微服务、分布式、消息队列等等东西,知道后端架构设计是要做权衡,性能、一致性、容灾,需要通过实验测出具体的数据来做决策,但是具体的方案不会,看基础知识是真看不进去。现在的主要问题,一个是只能依靠即时满足无法撑过枯燥的学习,另一个是难以调整心态。我高中以前一直是优等生,能够享受大部分题目都会的快感,能明确地有信心自己能做出来,解题过程需要进行推理,并且做完立刻就能得到正确反馈,其中的失败调整过程长度也在可接受范围内。(喜欢写rustlings一类的语言lab和玩《图灵完备》大概也是因为这个吧…)而现在的情景相当于我成了高三但是基础知识基本不会的状态,比我当年(会基础知识只是差做题)差多了。在这种情况下去面试也是相当痛苦,因为面试是不知道范围的。每次准备都不知道先看什么,学也学不进去。明明知道面试只是为了了解真实会问什么,但是还是很焦虑,拧巴心态。学长说去投简历面试实践是为了了解自己在哪里,别人在哪里,市场在哪里,但是我似乎还没有找到收敛的下限,只是一直失败…但是我也不能确定不面试就能学进去啊,因为我大二暑假是真的一点代码都不想碰,相当烦躁,八股也不想看。现在甚至连稍微花点时间的算法题(不能即时反馈的)都不想写了。还在纠结要不要整块时间搓项目压测试试,感觉会非常花时间。可能我项目管理也是一坨。
圆规学java:27届不着急,边投边学,克服恐惧感,你现在不敢面试,你为什么认为你暑期就勇敢了,你现在的进度其实还很早,我当时大三下才开始实习,我也很焦虑着急。永远没有准备好的时候,当下努力就是最好的加油!
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务