论考试的题目应该是多少年前的原题-解题报告

原创 2017年05月31日 22:14:16

为什么所有的考试题永远只能在远古洪荒时期的OJ和比赛中才能找到。

当时觉得好难好难的题现在已经成了“入门”

T1

用n个不同的数组成一个长p的序列,要求任意两个相同的数之间至少要有m个数。求排列方案数。

我也没有找到哪里的题。
一点点组合数学技巧,只需要求它们的组合方式而无需关心顺序(TJ上表示“因为每个数字都会出现”(死在了这里)),最后乘以一个n!。
然后就是DP,对于dp[i][j](表示前i个序列用j种数):

放一个未出现的数字:dp[i][j]=dp[i-1][j-1];
放一个出现过的数字:dp[i][j]=dp[i][j]+dp[i-1][j]*(j-m);

原因不解释。
(大佬们都是用数论做的啊?其实一开始也是想的数论不过后来到了去重的时候就疯掉了……)

T2

打开了黑魔法师calashock的大门,队员们在迷宫般的路上漫无目的地搜寻着关押demo的监狱的所在地。突然,眼前一道亮光闪过。“我,nandemo,是黑魔法圣殿的守卫者。如果你能通过我的挑战,那么你可以带走黑魔法圣殿的地图……”瞬间,队员们被传送到了一个擂台上,最初身边有一个容量为k的包包。
擂台赛一共有m项挑战,各项挑战依次进行。第i项挑战有一个属性ai,如果,表示这次挑战成功后可以再获得一个容量为ai的包包;如果ai=-1,则表示这次挑战成功后可以得到一个大小为1 的地图残片。地图残片必须装在包包里才能带出擂台,包包没有必要全部装满,但是队员们必须把获得的所有的地图残片都带走(没有得到的不用考虑,只需要完成所有n项挑战后背包容量足够容纳地图残片即可),才能拼出完整的地图。并且他们至少要挑战成功次l才能离开擂台。
队员们一筹莫展之时,善良的守卫者nandemo帮忙预估出了每项挑战成功的概率,其中第项挑战成功的概率为pi/100。现在,请你帮忙预测一下,队员们能够带上他们获得的地图残片离开擂台的概率。

年代久远的CodeForces的题。
数据大统计。
不要以为求概率就是概率DP。
(话说这道题我见过的啊然而并没有什么鬼用实在是很简单?
由于一共只有200张地图,所以凡大于200的直接压成200,其它的不要了。(死在了这里)
然后状态转移方程就很好写了。
f[i][j][k]表示前i项挑战赢j场,背包容量为k,则:

f[i][j][v]+=f[i-1][j][v]*(1-w[i].p);//放弃一场
if(v>=w[i].a) f[i][j][v]+=f[i-1][j-1][v-w[i].a]*w[i].p;//赢这一场

啊如此简单的题我居然没有做出来……

T3

求哈密顿回路数量。

年代久远的CodeForces的题。
状压DP,dp[st][i]表示以i为结束点(强制i为最小结点)、st为点集的哈密顿回路数量。
那么:枚举dp[st][x],对于从x可以到达的j:
jst,则:状态跳转至cnt(总数),如果j是终点,dp[st][j]就可以算入cnt中;
否则,状态跳转至dp[st+(2j)][j],此时dp[st][x]可以算入其中。
翻译成代码:

if((st&(-st))>(1<<j)) continue;
     if((st&(1<<j))) {
        if((st&(-st))==(1<<j)) cnt+=dp[st][x];
    } else dp[st|(1<<j)][j]+=dp[st][x];

由于只有两个点的回路会算,并且其它回路都算了两次,所以最终答案为(cnt-m)>>1。

T4

给定非负序列,选取一些元素使没有任意k个元素相连,使元素和最大

USACO的题(yali老师教育:USACO是你应该爆掉的第一个OJ)
真的是很简单很简单的一道题啊只是维护得比较麻烦,带了笔和草稿纸的孩子们瞬间就可以写出来状态转移方程:
f[i]=f[j1]+sum[i]sum[j] (j[ik1,i])
然后呢,sum[i]恒定,只需维护maxf[j1]sum[j]
一开始还看错了数据范围,以为是1e6,线段树妥妥的超时,我又用不熟单调队列,就并没有打……(眼瞎得治)
这玩意儿我从线段树调到单调队列,错得一模一样,然后发现原来是初始化的锅……
但是单调队列比线段树什么的好打多了吖?

q[0]=-1,q[1]=0;//死在了这里......
for(i=1;i<=n;i++) {  
        for(;h<=t&&q[h]<i-k-1;) h++;
        f[i]=f[q[h]==-1?0:q[h]]+e[i]-e[q[h]+1];
        for(;h<=t&&f[q[t]==-1?0:q[t]]-e[q[t]+1]<=f[i]-e[i+1];) t--;
        q[++t]=i;  
 }

是时候好好学学单调队列了啊
都不是很会这个欸?光颓树去了

最后的总结

蠢死啦蠢死啦明明有200分是送的50分是可以骗的T1认真想想还是可以做的啊T3也只是因为不熟状压DP现在发现状压DP求哈密顿回路原来是个经典的问题啊TSP什么的是入门级别啊……
T1的话……大概是对数论有阴影了吧…….
看到数论就有点虚啊……

版权声明:本文为博主原创文章,未经博主允许不得转载。

Sicily 算法设计题目

Fibonacci 2本题目是一道由张子臻老师授课的15级移动算法设计课程中的通过矩阵快速幂求解斐波那契数列并取余的题目...
  • huanghlun
  • huanghlun
  • 2017年03月05日 23:32
  • 86

Spoj数论专场解题报告

Spoj数论专题http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=8035#overview  Problem ...
  • wxfwxf328
  • wxfwxf328
  • 2012年05月29日 11:03
  • 5358

原题的价值 出题人:VFleaking hnoi2015 集训

原题的价值 出题人: vfleaking 2015 hnoi集训
  • qq_21995319
  • qq_21995319
  • 2015年03月31日 21:14
  • 2237

论弱逼的自我修养——2014集训队CF试题泛做

为了增长姿势水平提高思考能力,我决定跟着神犇膜一膜2014的集训队作业; 似乎大多数是CF上的DE题,应该比较有含金量(然而博主是个div2连D都没做上过的**); 感觉不久就会弃坑吧,大家来猜猜窝能...
  • ww140142
  • ww140142
  • 2015年11月26日 20:15
  • 1554

一个Javascript考试题目及我的答案

第二部分:JavaScript部分使用面向对象思想实现,验证的过程。面向对象提示:function ootest(name,age){    this.name=name;    this.age=a...
  • netlg
  • netlg
  • 2007年08月11日 12:49
  • 2412

通过考试(概率dp)

题目描述小明同学要参加一场考试,考试一共有n道题目,小明必须做对至少60%的题目才能通过考试。考试结束后,小明估算出每题做对的概率,p1,p2,…,pn。你能帮他算出他通过考试的概率吗?输入输入第一行...
  • Double2hao
  • Double2hao
  • 2017年04月08日 09:16
  • 609

POJ1308解题报告

POJ1308解题报告          一道水题,但也有值得我们思考的地方:                 给定一打节点的联通关系,判断它们是否构成了一棵树。         一棵树的涵...
  • TA201314
  • TA201314
  • 2014年11月05日 16:26
  • 1020

noi2016解题报告

D1T1: 首先转化成统计AA型字符串有几种。 st[i]表示从i位置开始的AA型字符串有几个,ed[i]表示到i结束的有几个。 ans=∑st[i]*ed[i-1] 然后枚举A的长度L(AA...
  • wzf_2000
  • wzf_2000
  • 2017年05月21日 19:38
  • 524

2017年广东ACM省赛 I题 解题报告

这题明显是求最小生成树,但是点数n高达10^5,用传统的Krustal或Prim算法都会超时。这时需要更加高效的算法,用一种称为“三角剖分”的方法来优化。 其实我也不懂什么是“三角剖分”,但是查到有原...
  • li_wei_quan
  • li_wei_quan
  • 2017年05月08日 22:23
  • 883

PAT刷题小结

历时一个月,终于算是把pat的题目全部刷完了,整体来说,pat的题目还是挺简单的,不过偶尔也会有一些比较奇葩的题目。 给我印象最深的大概有这么几个,AVL树,堆排序,hash的二次探测等。其他的题目要...
  • jtjy568805874
  • jtjy568805874
  • 2016年03月26日 22:09
  • 1311
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:论考试的题目应该是多少年前的原题-解题报告
举报原因:
原因补充:

(最多只允许输入30个字)