noip2014普及组复赛题解.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
noip2014普及组复赛题解

珠心算测验#include #include #include #include using namespace std; int n; int a[105]; int main freopen count.in,r,stdin ; freopen count.out,w,stdout ; scanf %d,n ; for int i 1; i n; i++ scanf %d,a[i] ; sort a+1,a+n+1 ; int res 0; for int i 1; i n; i++ int ok 0; for int j 1; j n !ok; j++ if j! i for int k 1; k n !ok; k++ if a[k]! a[j] if a[j]+a[k] a[i] ok 1; res+ ok; printf %d\n,res ; return 0; 比例简化 L很小,还是枚举,然后比较的话建议用乘法比较,避免精度问题: #include #include #include using namespace std; int A,B,L; int gcd int a,int b if b 0 return a; return gcd b,a%b ; int main freopen ratio.in,r,stdin ; freopen ratio.out,w,stdout ; scanf %d%d%d,A,B,L ; int ba 1000000,bb 1; for int i 1; i L; i++ for int j 1; j L; j++ if gcd i,j 1 i*B j*A if ba*j bb*i ba i, bb j; printf %d %d\n,ba,bb ; return 0; 螺旋矩阵 没一圈的数量有规律的,最外面一圈 n-1 *4,然后每往里n-2,直到后要么只有一个点,要么4个点。 所以可以先确定是在哪圈里,然后暴力走一圈就行: #include #include #include using namespace std; int n,x,y; int solve scanf %d%d%d,n,x,y ; int ceng min x, n+1-x ; ceng min ceng, min y, n+1-y ; int num 0, len n-1; for int i 1; i ceng; i++,len- 2 int ad; if len 0 ad 1; else ad len*4; num+ ad; num++; int nx ceng, ny ceng; if nx x ny y return num; for int i 1; i len; i++ ny++; num++; if nx x ny y return num; for int i 1; i len; i++ nx++; num++; if nx x ny y return num; for int i 1; i len; i++ ny--; num++; if nx x ny y return num; for int i 1; i len; i++ nx--; num++; if nx x ny y return num; return -1; int main freopen matrix.in,r,stdin ; freopen matrix.out,w,stdout ; int res solve ; printf %d\n,res ; return 0; 子矩阵 可以用二进制状态枚举取了哪些列,然后对于行的选取,可以DP,预处理每一行的代价,任意两行之间的代价,那么 dp[j][i] min dp[j][i], dp[k][i-1]+val[k][j]+dp[j][1] ; 代码写的不是很顺,为了调试写了很多输出注释语句: #include #include #include #include using namespace std; int g[25][25],f[25][25],dp[25][25],val[25][25]; int n,m,x,y,res; int count int v int ret 0; while v if v1 ret++; v 1; return ret; void gao //printf gao\n ; for int i 1; i n; i++ for int j i+1; j n; j++ val[i][j] 0; for in

文档评论(0)

peain + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档