BestCoder Round #66 (div.2) 战报(误)

一场优秀的涨rating比赛。。
1.GTW likes math
问题描述
某一天,GTW听了数学特级教师金龙鱼的课之后,开始做数学《从自主招生到竞赛》。然而书里的题目太多了,GTW还有很多事情要忙(比如把妹),于是他把那些题目交给了你。每一道题目会给你一个函数f(x)=ax^2+bx+c求这个函数在整数区间[l,r]之间的最值。
题解
注意到这个数据范围[l,r]最长只有200,因此可以直接暴力枚举整个整点区间。找出最小值和最大值。
当时因为吃晚饭,稍微晚点才赶来做比赛,所以交的比较晚,不过还是1A了233。

#include<cstdio>
#include<algorithm>
using namespace std;
int a,b,c,l,r,cas,tmp,maxf,minf;
int getf(int x)
{
    return a*x*x+b*x+c;
}
int main()
{
    scanf("%d",&cas);
    while(cas--)
    {
        maxf=-999999999;
        minf=999999999;
        scanf("%d%d%d%d%d",&a,&b,&c,&l,&r);
        for(int i=l;i<=r;++i)
        {
            maxf=max(maxf,getf(i));
            minf=min(minf,getf(i));
        }
        printf("%d %d\n",maxf,minf);
    }
}

2.GTW likes gt
问题描述
从前,有n只萌萌的GT,他们分成了两组在一起玩游戏。他们会排列成一排,第i只GT会随机得到一个能力值b_i。在第i秒的时候,第i只GT可以消灭掉所有排在他前面的和他不是同一组的且能力值小于他的GT。
为了使游戏更加有趣,GT的首领GTW会发功m次,第i次发功的时间为c_i,则在第c_i秒结束后,b_1,b_2,…,b_{c_i}都会增加1。
现在,GTW想知道在第n秒之后,会有几只GT存活下来。
一秒内可以发功多次。
c​i并不是有序的。
想了十几分钟,一开始看错题,没想出来= =
这次比赛的败笔。。
不过当时我足够灵活,跑去做第三题。
3.GTW likes function
题意:
这里写图片描述
求phi(fn(x))的值。
题解:
好歹我也是思考推导过带权组合数求和化简的题的人。。
看到这个题第一反应可以化简f。
因此直接打表找规律。
原以为会很麻烦。
结果原来f0(x)=x+1…
因此fn(x)=x+n+1…
所以就变成了求phi(x+n+1)的水题了。。
这个题也太水了。。
然后我为了防hack果断写了个pollard_rho优化
结果跑得竟然比暴力慢。。。
数据辣鸡啊。。

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
const int S=20;
int cnt;
ll n,x,phi,fac[70];
ll mul(ll n,ll m,ll p)
{
    ll ans=0;
    while(m)
    {
        if(m%2)ans=(ans+n)%p;
        n=2*n%p;
        m/=2;
    }
    return ans;
}
ll pow(ll n,ll m,ll p)
{
    ll ans=1%p;
    while(m)
    {
        if(m%2)ans=mul(ans,n,p);
        n=mul(n,n,p);
        m/=2;
    }
    return ans;
}
bool miller_rabin(ll n)
{
    if(n==2)return true;
    if(n<2||n%2==0)return false;
    ll a,x,u=n-1,t=0,y;
    while(u%2==0)t++,u/=2;
    for(int i=0;i<S;++i)
    {
        a=rand()%(n-1)+1;
        x=pow(a,u,n);
        for(int j=0;j<t;++j)
        {
            y=mul(x,x,n);
            if(y==1&&x!=1&&x!=n-1)return false;
            x=y;
        }
        if(x!=1)return false;
    }
    return true;
}
ll gcd(ll n,ll m)
{
    return m==0?n:gcd(m,n%m);
}
ll pollard_rho(ll n,ll c)
{
    ll i=1,k=2,x=rand()%n,y=x;
    while(1)
    {
        i++;
        x=(mul(x,x,n)+c)%n;
        ll temp=y-x;
        if(temp<0)temp=temp*-1;
        ll d=gcd(temp,n);
        if(d!=1&&d!=x)return d;
        if(y==x)return n;
        if(i==k){y=x;k<<=1;}
    }
}
void work(ll n)
{
    if(miller_rabin(n)){fac[cnt++]=n;return;}
    ll p=n;
    while(p>=n)p=pollard_rho(p,rand()%(n-1)+1);
    work(p);
    work(n/p);
}
int main()
{
    while(~scanf("%I64d%I64d",&n,&x))
    {
        cnt=0;
        memset(fac,0,sizeof fac);
        work(n+x+1);
        if(cnt==1)
        {
            printf("%I64d\n",n+x);
            continue;
        }
        sort(fac,fac+cnt);
        int len=unique(fac,fac+cnt)-fac;
        phi=n+x+1;
        for(int i=0;i<len;++i)
            phi=phi/fac[i]*(fac[i]-1);
        printf("%I64d\n",phi);
    }
}

4.GTW likes czf
问题描述
从前,有两个人名叫GTW,DSY。一天,他们为了争夺DSY的妹子CZF,决定进行一次决斗。首先,CZF会给出一个区间l,l+1,l+2……rl,l+1,l+2……r,和两个数G,T。现在,CZF会在G,T两个数中随机一个数X,在区间l,r中随机一个数Y,进行一种特殊的运算@。CZF想要快速知道有多少数字可能会是答案。
然而GTW并不会做这道题,但是为了赢得CZF,他就来寻求你的帮助。
由于答案可能会很大,所以把最终的答案模1000000007。
我们规定运算X @ Y =((X and Y) or Y) xor X.
当时看出来x@y=x xor y
然后不会做了。
看完题解什么数位DP,似乎很有道理,这题不亏。

最后因为瞎作死,一次 unsuccessful hack 扣了我50分,排到16名,本来该是15的= =(反正涨的rating也一样233)
争取下次div2完了能进div1= =

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值