第一题

组合计数

分析:

从前往后一位一位的计算

先算第一位比t小的数目,再算第一位与t[1]相同,第2位比t小的个数以此类推

先预处理一个数组h,h[i]表示从1~it串与s串不同的位数

对于第i位,

由于1~i-1与s串一样,故i~n中与s串不同的个数有k-h[i-1]个,设v=k-h[i-1]。

F(i)表示’a'到t[i]中与s[i]不相同字母个数(不包括t[i]),

当s[i]>=t[i]则

第i位开始比t小的数目ANS[i]=F(i)*C(n-i,v-1)*(25)^(v-1)

当s[i]<t[i]则

第i位开始比t小的数目ANS[i]=[F(i)-1]*C(n-i,v-1)*(25)^(v-1) +C(n-i,v)*25^v

输出∑ANS[i]+1即可。

代码:

  1. program t1;
  2. const
  3. num=;
  4. var
  5. a,b:array[..]of char;
  6. d,h,f,g:array[..]of int64;
  7. n,m,v,len,x,y,ans:int64; i:longint;
  8. function get(x,y:int64):int64;
  9. var i:longint; t:int64;
  10. begin
  11. if (x=)or(y=)or(x=y) then exit();
  12. exit(((f[x]*g[x-y]) mod num)*g[y] mod num);
  13. end;
  14. function quick(x,y:int64):int64;
  15. var ans:int64;
  16. begin
  17. ans:=;
  18. while y> do
  19. begin
  20. if y and > then ans:=ans*x mod num;
  21. x:=x*x mod num;
  22. y:=y>>;
  23. end;
  24. exit(ans);
  25. end;
  26. procedure make;
  27. var i:longint;
  28. begin
  29. f[]:=; g[]:=;
  30. for i:= to n do
  31. begin
  32. f[i]:=(f[i-]*i) mod num;
  33. g[i]:=g[i-]*quick(i,num-) mod num;
  34. end;
  35. end;
  36. begin
  37. readln(n,m);
  38. d[]:=; ans:=;
  39. for i:= to m do d[i]:=(d[i-]*) mod num;
  40. for i:= to n do read(a[i]); readln;
  41. for i:= to n do read(b[i]);
  42. for i:= to n do if a[i]<>b[i] then h[i]:=h[i-]+ else h[i]:=h[i-];
  43. for i:=n downto do h[i]:=m-h[i-];
  44. make;
  45. for i:= to n do
  46. begin
  47. if a[i]<b[i] then len:=ord(b[i])-ord('a')-
  48. else len:=ord(b[i])-ord('a');
  49. v:=h[i]; if v= then break;
  50. y:=get(n-i,v-); ans:=ans+((d[v-]*y)mod num*len) mod num;
  51. if (a[i]<b[i])and(n-i>=v) then begin x:=get(n-i,v); ans:=(ans+d[v]*x) mod num; end;
  52. end;
  53. writeln((ans+)mod num);
  54. end.

第二题

第三题

树型DP

分析:

最容易想到的O(n*m*m)的DP,用f[i,j]表示以i为根子树选j个的最大价值,f[i,j]=∑f[k,w[k]] w[k]表示k节点选取的点数,显然这是一个背包

然而这样的效率是不够的。

可以改变思路

XJOI NOIP模拟题2的更多相关文章

  1. XJOI NOIP模拟题1

    第一题 分析: 开始想的是贪心,取每列均值最大一段. 应该是01分数规划,具体看代码 代码: program gold; var a:..]of int64; n,i,m,j,x:longint; f ...

  2. 【入门OJ】2003: [Noip模拟题]寻找羔羊

    这里可以复制样例: 样例输入: agnusbgnus 样例输出: 6 这里是链接:[入门OJ]2003: [Noip模拟题]寻找羔羊 这里是题解: 题目是求子串个数,且要求简单去重. 对于一个例子(a ...

  3. NOIP模拟题汇总(加厚版)

    \(NOIP\)模拟题汇总(加厚版) T1 string 描述 有一个仅由 '0' 和 '1' 组成的字符串 \(A\),可以对其执行下列两个操作: 删除 \(A\)中的第一个字符: 若 \(A\)中 ...

  4. 9.9 NOIP模拟题

    9.9 NOIP模拟题 T1 两个圆的面积求并 /* 计算圆的面积并 多个圆要用辛普森积分解决 这里只有两个,模拟计算就好 两圆相交时,面积并等于中间两个扇形面积减去两个三角形面积 余弦定理求角度,算 ...

  5. 8.22 NOIP 模拟题

      8.22 NOIP 模拟题 编译命令 g++ -o * *.cpp gcc -o * *.c fpc *.pas 编译器版本 g++/gcc fpc 评测环境 位 Linux, .3GHZ CPU ...

  6. NOIP模拟题17.9.26

    B 君的任务(task)[题目描述]与君初相识,犹如故人归.B 君看到了Z 君的第一题,觉得很难.于是自己出了一个简单题.你需要完成n 个任务,第i 任务有2 个属性ai; bi.其中ai 是完成这个 ...

  7. noip模拟题题解集

    最近做模拟题看到一些好的题及题解. 升格思想: 核电站问题 一个核电站有N个放核物质的坑,坑排列在一条直线上.如果连续M个坑中放入核物质,则会发生爆炸,于是,在某些坑中可能不放核物质. 任务:对于给定 ...

  8. NOIP 模拟题

    目录 T1 : grid T2 : ling T3 : threebody 数据可私信我. T1 : grid 题目:在一个\(n*n\)的方格中,你只能斜着走.为了让问题更简单,你还有一次上下左右走 ...

  9. 9.22 NOIP模拟题

    吉林省信息学奥赛 2017 冬令营                                                                                    ...

随机推荐

  1. windows下openresty中使用lua做接口转发、二次封装等

    需求:根据客户需求,可以在ngx下 通过lua做接口二次封装再次转发给用户或第三方 场景:对返回值有要求的.接口屏蔽字段.或做一些业务上的验证等 1.windows直接下载openresty 解压即可 ...

  2. centos7-mongodb3.4.6集群的搭建

    0.需要环境 安装包:mongodb-linux-x86_64-3.4.6.tgz 安装路径:/usr/mongodb 服务器: 192.168.177.131/132/133 mongos 2000 ...

  3. 自定义控件,继承自 ListView

    public class MyListView extends ListView { /** * 如果在xml中创建并设置了style,就会调用三个参数的. * * @param context * ...

  4. eclipse 右键没有Build Path

    如果Project Explorer右键没有build pathWindow ->show view 选择package explorer 参考https://blog.csdn.net/cod ...

  5. POJ3687 反向拓扑排序

    Labeling Balls Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16032   Accepted: 4713 D ...

  6. Python自动化运维——文件内容差异对比

    Infi-chu: http://www.cnblogs.com/Infi-chu/ 模块:difflib 安装:Python版本大于等于2.3系统自带 功能:对比文本之间的差异,而且支持输出可读性比 ...

  7. poj2230 欧拉回路

    http://poj.org/problem?id=2230 Description Bessie's been appointed the new watch-cow for the farm. E ...

  8. SQL数据库 面试题

    一.sql理论题 1.触发器的作用? 答:触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的.它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化. ...

  9. vue2.0 Axios 的简单用法

    安装 使用 npm: $ npm install axios 使用 bower: $ bower install axios 使用 cdn: <script src="https:// ...

  10. java加密用到了BASE64Decoder时报错信息:Access restriction: The type BASE64Encoder is not accessible due to restrict

    在Eclipse中编写Java代码时,用到了BASE64Decoder,import sun.misc.BASE64Decoder;可是Eclipse提示: Access restriction : ...