2019杭电暑期多校训练营 题解

【第十场】

E:Welcome Party(思维)

I:Block Breaker

题解:bfs寻找当前位置上下左右四个方向还有方块的位置,是否会存在影响使得方块掉落,计数输出即可。

【第九场】

B:Rikka with Cake(离散化+树状数组)

E:Rikka with Game

题解:如果第一位是z,那么显然先手会选择把z->a,后手显然会把a->b,然后先手会选择结束游戏保证字典序不再变大。如果第一位是y,那么先手肯定不会去把y->z因为这样字典序会变大,后手也不会把y->z因为这样先手就可以把z->a,所以只有三种情况。第一,字符串以z开头,z->b,游戏结束;第二,字符串以y开头(可连续多个),把紧接着的第一个z->b(类型yyza这种),结束;第三,直接结束。

        scanf("%s",&s);
        for(int i=0;s[i];i++){
            if(s[i]=='z'){
                s[i]='b'; break;
            }
            if(s[i]=='y') continue;
            else break;
        }
        printf("%s\n",s);

F:Rikka with Coin(思维+枚举)

【第八场】

I:Calabash and Landlord(分类讨论)

J:Quailty and CCPC

题解:直接模拟,我怕失精度就用 (d*n)%10==5 判断是否等于0.5。注意队名长度不超过10,数组太长会tle。

        if((d*n)%10==5){
            sort(f,f+n,cmp);
            int pos=d*n/10;
            printf("%s\n",f[pos].s);
        }
        else{
            puts("Quailty is very great");
        }

K:Roundgod and Milk Tea(思维)

【第七场】

A:A + B = C(思维)

F:Final Exam (贪心+思维)

J:Just Repeat(贪心+思维)

K:Kejin Player(期望dp+逆元)

【第六场】

因为太难了有点自闭就很咸鱼的没补题dbq我来了

等会。。

L:Stay Real

题解:因为是在最小堆轮流选取编号最大的节点,所以一定是先选完大的才选小的,排序从大到小轮流选取求和输出即可。

【第五场】

A:fraction(辗转相除法)

B:three arrays(01字典树)

D:equation(数学)

E:permutation 1(思维)

F:string matching

题解:拓展KMP裸题,只要考虑最长前后缀匹配是否匹配到最后一步,如果不是就+1再求和即可。

前置知识:字符串的模式匹配算法 —— BF算法、KMP算法和拓展KMP

G:permutation 2

递推式:dp[i]=dp[i-1]+dp[i-3],边界条件: dp[0]=dp[1]=dp[2]=1。

【第四场】

A:AND Minimum Spanning Tree( lowbit(x+1) )

C:Divide the Stones(找规律)

G:Just an Old Puzzle 

题解:结论题。数字华容道,必然有解,只存在于如下3个细分情形:

  1. 若格子列数为奇数,则逆序数必须为偶数;
  2. 若格子列数为偶数,且逆序数为偶数,则当前空格所在行数与初始空格所在行数的差为偶数;
  3. 若格子列数为偶数,且逆序数为奇数,则当前空格所在行数与初始空格所在行数的差为奇数。

J:Minimal Power of Prime(数论)

【第三场】

F:Fansblog(威尔逊定理+逆元)

G:Find the answer(思维+multiset)

【第二场】

E:Everything Is Generated In Equal Probability (推荐一篇详细的博文)

J:Just Skip The Problem

题解:最优方案是一次确定一位,也就是总方案有n!,对mod=1e6+3取模那么小于mod直接暴力求取,否则为0 。

K:Keen On Everything But Triangle(静态主席树)

【第一场】

B:Operation(贪心+前缀线性基求最大异或和)

D:Vacation(思维+枚举)

E:Path(最短路+最小割)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值