第一题

组合计数

分析:

从前往后一位一位的计算

先算第一位比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即可。

代码:

program t1;
const
num=;
var
a,b:array[..]of char;
d,h,f,g:array[..]of int64;
n,m,v,len,x,y,ans:int64; i:longint;
function get(x,y:int64):int64;
var i:longint; t:int64;
begin
if (x=)or(y=)or(x=y) then exit();
exit(((f[x]*g[x-y]) mod num)*g[y] mod num);
end;
function quick(x,y:int64):int64;
var ans:int64;
begin
ans:=;
while y> do
begin
if y and > then ans:=ans*x mod num;
x:=x*x mod num;
y:=y>>;
end;
exit(ans);
end;
procedure make;
var i:longint;
begin
f[]:=; g[]:=;
for i:= to n do
begin
f[i]:=(f[i-]*i) mod num;
g[i]:=g[i-]*quick(i,num-) mod num;
end;
end;
begin
readln(n,m);
d[]:=; ans:=;
for i:= to m do d[i]:=(d[i-]*) mod num;
for i:= to n do read(a[i]); readln;
for i:= to n do read(b[i]);
for i:= to n do if a[i]<>b[i] then h[i]:=h[i-]+ else h[i]:=h[i-];
for i:=n downto do h[i]:=m-h[i-];
make;
for i:= to n do
begin
if a[i]<b[i] then len:=ord(b[i])-ord('a')-
else len:=ord(b[i])-ord('a');
v:=h[i]; if v= then break;
y:=get(n-i,v-); ans:=ans+((d[v-]*y)mod num*len) mod num;
if (a[i]<b[i])and(n-i>=v) then begin x:=get(n-i,v); ans:=(ans+d[v]*x) mod num; end;
end;
writeln((ans+)mod num);
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. react初学

    react和vue一样都是mvvm的这种开发模式. 下载js文件 引入HTML文件里 <!DOCTYPE html> <html> <head> <scrip ...

  2. 渗透测试实验(i春秋 真的很简单)

    首先利用给的提示: 所以用户名是 ichunqiu 密码是adab29e084ff095ce3eb 可以确定一般密码都是md5的,但是这个20位 应该去掉ada b29e084ff095ce3e才是正 ...

  3. Python爬虫爬取百度翻译之数据提取方法json

    工具:Python 3.6.5.PyCharm开发工具.Windows 10 操作系统 说明:本例为实现输入中文翻译为英文的小程序,适合Python爬虫的初学者一起学习,感兴趣的可以做英文翻译为中文的 ...

  4. react-router 4.0中跳转失灵

    在https://github.com/ReactTraining/history文档中,跳转是 用这种方法,但是,用了之后就存在这么一个问题,网址换了但是页面并没有刷新. 查了资料后,history ...

  5. app:showAsAction 和android:showAsAction

    app:showAsAction 它有三个可选项1.always:总是显示在界面上2.never:不显示在界面上,只让出现在右边的三个点中3.ifRoom:如果有位置才显示,不然就出现在右边的三个点中 ...

  6. Django学习之天气调查实例(3):部署静态文件CSS、JS、images等(部署环境基于Ubuntu)

    在设计登录界面时,采用了网上下载的登录模板,漂亮,简易.但是在测试和部署时,发现原来模板中采用的js文件和css文件,却着实让我折腾了好几天. 在以往的网页设计中,一般只要把测试站点开启后,网页中的静 ...

  7. 如何在Moodle中显示PPT课件

    Moodle中目前是不直接支持PPT的,所以需要曲线救国: 1.安装 iSpring Free 8版本,免费版,其实是一个PPT的插件,在PPT的工具栏中有显示. 2.打开PPT后,直接在该工具中进行 ...

  8. netty学习记录2

    昨天晚上在看到7.2章MessagePack编码器和解码器开发这一章时,书里面没有贴出全部的代码,然后我按照我自己的想法把代码补全后,发现死活没有把代码跑通. 然后花了挺多时间在网上找,很多博客都贴出 ...

  9. ORB-SLAM (四)tracking跟踪解析

    初始化完成后,对于相机获取当前图像mCurrentFrame,通过跟踪匹配上一帧mLastFrame特征点的方式,可以获取一个相机位姿的初始值:为了兼顾计算量和跟踪鲁棒性,处理了三种模型: 1. Tr ...

  10. allegro导入网表过程中出现的错误信息

    1. 找不到焊盘PAD,下面这句话的意思是器件封装找不到焊盘46.pad WARNING(SPMHNI-): Unable to load symbol ): Could not find padst ...