NOIP2011day2题解.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
NOIP 2011 day2 题解 美少女战士原创 总的来说,第二天的题还是比较难的,至少让我错了好多   1.计算系数 (factor.cpp/c/pas) 【问题描述】 给定一个多项式(ax + by)k,请求出多项式展开后xn ym项的系数。 【输入】 输入文件名为 factor.in。 共一行,包含 5 个整数,分别为a,b,k,n,m,每两个整数之间用一个空格隔开。 【输出】 输出文件名为 factor.out。 输出共 1 行,包含一个整数,表示所求的系数,这个系数可能很大,输出对10007 取模后的结果 【输入输出样例】 factor.in 1 1 3 1 2 factor.out 3 【数据范围】 对于 30%的数据,有0≤k≤10; 对于 50%的数据,有a = 1,b = 1; 对于 100%的数据,有0≤k≤1,000,0≤n, m≤k,且n + m = k,0≤a,b≤1,000,000 这道题其实用到了二项式定理,题目所求及为C(K,N)*a^n*b^m  mod 10007 a^n和b^m 都比较容易求,每乘一次就模10007,甚至都用不到幂运算  C(K,N)如何求呢?直观的来说,它应该是K!/(N!*(K-N)!)但是,这样一来,我们就不得不用高精度了,因为这样不能每一次都摸,但高进度之后,取模就显得麻烦了,所以我们想到了杨辉三角,C【k,n]:=c[k-1,n]+c[k-1,n-1];这样就可以保证在长整形的范围中了, (至于这个千万不要递归求解,层数太深了,1000×1000 宁愿开数组) 那么就不多说了,对于一道送分题,大家还是不要太认真了 下面给出标程 var c:array[0..1000,0..1000]of longint; n,m,a,b,k,i,j,ans:longint; function fang(a,b:longint):longint;var i:longint;j:int64; begin j:=1;for i:=1 to b do j:=j*a mod 10007;exit(j); end; begin assign(input,factor.in);assign(output,factor.out); reset(input);rewrite(output); readln(a,b,k,n,m); for i:=1 to k do begin c[i,0]:=1;c[i,i]:=1;end; for i:=2 to k do for j:=1 to i-1 do c[i,j]:=(c[i-1,j-1]+c[i-1,j]) mod 10007; ans:=fang(a,n)*fang(b,m) mod 10007;ans:=ans*c[k,n] mod 10007; writeln(ans);close(input);close(output); end. 2.聪明的质监员 (qc.cpp/c/pas) 【问题描述】 小 T 是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有n 个矿石,从1 到n 逐一编号,每个矿石都有自己的重量wi 以及价值vi。检验矿产的流程是: 1、给定m 个区间[Li,Ri]; 2、选出一个参数W; 3、对于一个区间[Li,Ri],计算矿石在这个区间上的检验值  Y 1* v , [ , ] i i j ∈ L R 且w W j ≥ ,j 是矿石编号// 这块复制不上,题意就是重量大于等于标准的矿产个数与这些矿产价值和的乘积 这批矿产的检验结果Y 为各个区间的检验值之和。 若这批矿产的检验结果与所给标准值S 相差太多,就需要再去检验另一批矿产。小T 不想费时间去检验另一批矿产,所以他想通过调整参数W 的值,让检验结果尽可能的靠近 标准值S,即使得S-Y 的绝对值最小。请你帮忙求出这个最小值。 【输入】 输入文件qc.in。 第一行包含三个整数 n,m,S,分别表示矿石的个数、区间的个数和标准值。 接下来的 n 行,每行2 个整数,中间用空格隔开,第i+1 行表示i 号矿石的重量wi 和价 值vi 。 接下来的 m 行,表示区间,每行2 个整数,中间用空格隔开,第i+n+1 行表示区间[Li, Ri]的两个端点Li 和Ri。注意:不同区间可能重合或相互重叠。 【输出】 输出文件名为 qc.out。 输出只有一行,包含一个整数,表示所求的最小值。 【输入输出样例】 qc.in 5 3 15 1 5 2 5 3 5 4 5 5 5 1 5 2 4 3 3 qc.out 10 【输入输出样例说明】 当 W 选4 的时候,三个区间上检验值分别为20、5、0,这批矿产的检验结果为25,此 时与标准值S 相差最小为10。 【

文档评论(0)

gangshou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档