zoukankan      html  css  js  c++  java
  • 2013暑假江西联合训练赛 -- by jxust_acm 解题报告

    第6题是利用周期性求解,
    第7题是 (总的序列长度-最长的满足要求的序列长度)
    第8题是 设定起点,可以找到最早出现的不满足条件,然后后面都是不满足的,利用队列求解这个过程

    大神给的简单,精炼的题解。

    1. 消除之王

    数据量为4*4,所以直接暴力dfs的层数不会超过8层,也就是dfs的复杂度为8!,然后加上一些模拟掉落的操作,总的复杂度也不会大。

    2. NC

    大数开根求整数部分。 网上大神有直接的模板

    附模板一份:


    #include <stdio.h>
    #include <string.h>
    int l;int work(int o,char *O,
    int I) {char c, *D=O ;if(o>0){
    for(l=0;D[l              ];D[l
    ++]-=10){D   [l++]-=120;D[l]-=
    110;while   (!work(0,O,l))D[l]
    +=   20;   putchar((D[l]+1032)
    /20   )   ;}putchar(10);}else{
    c=o+     (D[I]+82)%10-(I>l/2)*
    (D[I-l+I]+72)/10-9;D[I]+=I<0?0
    :!(o=work(c/10,O,I-1))*((c+999
    )%10-(D[I]+92)%10);}return o;}
    int main(){char s[3000];while(
    scanf("%s",s+1)!=EOF){s[0]='0';
    if(strlen(s)%2 == 1)work(2,s+1
    ,0);else work(2,s,0);}}//ubuntu


    然后这题时限给的很松,用大数二分的方法也可以解决。如果要模拟大数操作,那么要注意优化问题。

    3.找回文

    比较基础的一道题目,解决的方法很多,可以用manacher,kmp,或者扩展kmp。如果搞懂了这几个算法的性质,那么稍加改动就可以解决这个问题。

    4.二进制求和
    树状数组,线段树都可以解决,不过注意乘2操作是没有实际意义的。

    5. 开学了

    用最小费用最大流可以解决。
    建图的方法是:
    首先建立一个源点s和一个汇点t。
    然后从源点到每个作业i都添加一条容量为1,费用为-Ai的边
    然后对于每个Bij都建立一条从i到n+j容量为1,费用为bij的边
    对于每个老师都建立一条从n+j(j为老师的标号)到t容量为k,费用为0的边
    因为作业可做可不做,所以每个作业i都添加一条从i到t容量为1,费用为0的边
    最后直接用最小费用最大流模板即可。

     比赛已重挂。要代码,或数据的可以吼一声。 举办一场比赛不容易,有错误或者遗漏敬请大家原谅。

    还有三题等会继续更新!

  • 相关阅读:
    RecyclerView 数据刷新的几种方式 局部刷新 notify MD
    【图片】批量获取几万张图片
    RV BaseRecyclerViewAdapterHelper 总结 MD
    RecyclerView.ItemDecoration 间隔线
    Kotlin【简介】Android开发 配置 扩展
    Kotlin 特性 语法糖 优势 扩展 高阶 MD
    一个十分简洁实用的MD风格的UI主框架
    折叠伸缩工具栏 CollapsingToolbarLayout
    FloatingActionButton FAB 悬浮按钮
    Glide Picasso Fresco UIL 图片框架 缓存 MD
  • 原文地址:https://www.cnblogs.com/chenhuan001/p/3284747.html
Copyright © 2011-2022 走看看