第九周VP总结

总结:本周的题型还是属于比较经典和简单的,还是要多多补题,多多写题,争取有更大的进步。

坚持写题!

Dashboard - The 15th Jilin Provincial Collegiate Programming Contest - Codeforces 

A题:很简单

B题:本题也很简单,但是漏判了一种情况导致贡献了一个WA......

这道题我学了一下小数的高精度除法,还是比较容易理解的

for(int i=0;i<k-1;i++)
    {
        a=a%b*10;//核心代码,想要保留n位小数
        cout<<a/b;
    }
    a=a%b*10;
    temp=a/b;
    a=a%b*10;
    if(a/b>=5)//特判最后一步四舍五入
    {
        cout<<temp+1;
    }
    else
    {
        cout<<temp;
    }

C题:确实不是枚举,而是寻找递推关系式

方法:如果一下子推不出来,就暴力把多个括号展开,然后找规律

ac代码: 还有一个BSGS需要学

inline void solve(){
    read(a,b,m,x0,x);
    if(x0==x){
        puts("YES");return;
    }
    if(a==0){
        puts(b==x?"YES":"NO");
        return;
    }
    if(a==1){
        if(b!=0)puts("YES");
        else{
            puts("NO");
        }
        return;
    }
    int u=getinv(a-1,m);
    b=1ll*b*u%m;
    x=(x+b)%m;x0=(x0+b)%m;
    if(x0==0){
        puts(x==0?"YES":"NO");return;
    }
    x=LL(x)*getinv(x0,m)%m;
    int t=BSGS(a,x,m);
    puts(t>=0?"YES":"NO");
}

 D题:

是一个什么复杂的算法,不会......

E题:

给定一个数组,问数组中存不存在两个数它们的异或是1

不是n2枚举不然肯定会TLE,而是在一个set中保存,这样复杂度就会变成nlogn

再次学习了set的用法

本题注意事项有以下几点

  • 最好不用memset初始化为0,其实在本题中根本不用初始化为0
  • 最好用scanf和printf,如果用cin和cout要关流同步
  • 数组如果范围够的话最好开int 而不是long long
  • 数组大小最好是略大于给定范围的奇数

G题:

本题其实就是用高斯消元法解方程,看看能不能解出来(用增广矩阵之类的),因为可以对每一位用二进制表示,可以压缩为几个64位的long long 数

H题:

直接对没一条路径用map<pair<int,int>>存储,终于学会了这种结构的用法......因为这个人走每一条路的可能性都相同,所以直接求出他走路的数学期望即可

注意是在模p的环境下进行,所以最后求期望的时候要用扩展欧几里得算法求逆元

K题

不懂,是一个难难的数学知识

L题

给定一个字符串,对于每一个字符串可以删除最后一位或者在最后一位后增加一位,任选两个后缀,求使得这两个后缀相等的最大操作数

看懂了队友的代码,但是不知道怎么证明......有些玄学

M题:

简单

总结:还是要多多做题!再努力一点吧

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值