zoukankan      html  css  js  c++  java
  • 纪中2016.12.10比赛总结

    100+100+20+0=220
    250分也好呀!!!
    今天看见比赛标题就有点虚虚的。“提高C”呵呵,赶紧看题。
    T1:分发糖果。
    一道一看就是规律的题,怒打数据库(还错了)。后来用一个判断质数的方法,后来一个高明的草稿本推算,发现不通。推了个20以内的东东,出现了:1、2、4、8、16可行。果断打正解:
    判断是不是2的次方。OK。为什么正在思考。
    T2:下棋。
    推了推每个人与别人对弈的价值差,发现正解,果断打。后来检查时发现漏打两个东东,差点100分飞走。
    正解:算出每个人与别人对弈的价值差。用一个快排,输出前k个即可。
    T3:X-因子链。
    刚开始看不懂题目,把中间高能的X0=1,X1,X2,。。。,Xm=X給理解炸了。最后30分钟怒打,找质因数的方法。没有考虑到未知的质因数数量众多,于是全排列就时间炸了。
    正解:有很多解法。
    我从徐某某的裤兜里掏出了一样神器——动态规划。
    先求出n的所有因数(是因数不是质因数)。
    设f[i]表示当前走到第i个的最长。
    r[i]表示当前走到第i个方案数。
    伪代码:
    i:=1 to l{n因数有多少} do
    j:=1 to i-1 do
    if a[i] mod a[j]=0 then//判断可不可以分。
    begin
    if f[i]=f[j]+1 then//长度相等,更新方案数
    begin
    r[i]:=r[i]+r[j];
    end
    else
    if f[i]<f[j]+1 then//f[i]长度小于f[j]+1,更新f[i]和r[i]
    begin
    f[i]:=f[j]+1;
    r[i]:=r[j];
    end;
    end;
    ans:=max(f[1...n]),max(r[1..n]).
    T4:二叉树
    剩下3分钟,打了个random(据说RP好有30分),结果文件输入输出错了。呵呵。
    蒟蒻方法:输出2。30分。(比random好用很多!!!)
    正解:本人用扬哥的方法:
    把后序遍历的翻转,得到顺序为“根右左”。可以看出,两个序列的第一个(根)是相同的。序列一的第二个字母是左子树的根,序列二的第二个字母是右子树的根。如果左右子树的根不同,就分开两个子树,分别求方案数,乘起来;如果左右子树的根相同,就把这个子树的方案数乘2。
    感谢扬哥!
    AK。
    我活在这夜里。无论周围多么黑暗,我都要努力发光!我相信着,终有一天,我会在这深邃的夜里,造就一道最美的彩虹。
  • 相关阅读:
    ExecutorService与Executors例子的简单剖析
    java中线程队列BlockingQueue的用法
    mysql常用语句
    dubbo+zookeeper例子
    大型网站架构系列:消息队列(二)
    大型网站架构系列:分布式消息队列(一)
    什么是Code Review(转)
    Ehcache 整合Spring 使用页面、对象缓存
    java 多线程——quartz 定时调度的例子
    Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
  • 原文地址:https://www.cnblogs.com/RainbowCrown/p/11148434.html
Copyright © 2011-2022 走看看