codeforces / project Euler 泛做
发现这个题库,很有意思,趁着还没有学习微积分,看不了书,赶快从头开始刷,所以都是一些简单的题目,即时简单,有一些结论还是很有意思的。
网上资料很少,有的找不到答案,所以只有硬着头皮做了。
PE 15
一个网格图,只能向下,或者向右走,问从\((0,0)\)到\((n,m)\)到路径有多少条.
这里的结论是有\(C_{n+m}^n\).
证明:从0,0到n,m会往下走n步,往右走m步,把路径看成一个长度为n+m的序列,往下走为0,往右走为1
有n个0,m个1,转化为有多少个不同的序列。
我们考虑从序列中选择0的方案数.就是\(C_{n+m}^n\).
PE 76
这是一道很有意思的Partition Function P题目。
里面详细的讲解了如何使用数学的方法来解,不过全是英文,我没有看懂。
也可以使用\(f[i][j]\)表示以i结尾最后一段的和式j数的方案数.
然后发现可以使用前缀和优化,复杂度\(O(n^2)\)
由于是DP,所以放一下代码仅供参考.
int main() {
f[0][0] = sum[0][0] = 1;
for(int i = 1;i <= 100;++ i) sum[0][i] = sum[0][i - 1];
int n = 100;
for(int i = 1;i <= n;++ i) {
for(int j = 1;j <= i;++ j) {
f[i][j] = sum[i - j][j];
sum[i][j] = f[i][j];
}
for(int j = 2;j <= 100;++ j) sum[i][j] += sum[i][j - 1];
}
ll Ans = 0;
Ans = sum[100][99];
std::cout << Ans;
return 0;
}
从上面的链接中得知,有生成函数的解法。
PE 90
一个trick , 显然可以用对数函数来比较大小
\(log(a^b) = b*log(a)\)
PE 577
恩,调这道题做了一下午。
\(f(i)\)表示以i行为底的六边形造成的共线,然后就可以计算了
\[f(n) = f(n-1) + \sum_{s=1}^{\lfloor n/3\rfloor}s(n-3s+1)\]
PE 97
一个trick , mod,
乘法和加法满足
\((a*b) \% mod = ((a \% mod) * (b \% mod))\%mod\)
\((a+b)\%mod = ((a\% mod) + (b\% mod) )\%mod\)
PE 364(坑)
第三道计数题,感觉还是get不到计数的点。
只推了一个性质:
第一步结束之后,不存在长度>=3的空格子。
根据这个性质。
第一步结束之后,局面会变成每两个人间隔只有1与2.
有一特殊情况是两端有人或者没人。
存在特殊情况,我们先枚举左右端点。
然后枚举长度为2的空格子的个数。
枚举之后,我们发现可以计算出长度为1的空格子的个数.
考虑第二步,每个人必须加入长度为二的空格子,所以方案数是2.
之后就是难以忍受的细节问题了。
还没有完成代码的任务
待做
PE 601
PE 613
PE 493
PE 102
PE 618
codeforces / project Euler 泛做的更多相关文章
- Codeforces Training S03E01泛做
http://codeforces.com/gym/101078 和ysy.方老师一起打的virtual 打的不是很好...下面按过题顺序放一下过的题的题(dai)解(ma). A 给两个1~n的排列 ...
- [Project Euler] 来做欧拉项目练习题吧: 题目013
问题描述: Work out the first ten digits of the sum of the following one-hundred 50-digit numbers. 371072 ...
- codeforces泛做..
前面说点什么.. 为了完成日常积累,傻逼呵呵的我决定来一发codeforces 挑水题 泛做.. 嗯对,就是泛做.. 主要就是把codeforces Div.1的ABCD都尝试一下吧0.0.. 挖坑0 ...
- [project euler] program 4
上一次接触 project euler 还是2011年的事情,做了前三道题,后来被第四题卡住了,前面几题的代码也没有保留下来. 今天试着暴力破解了一下,代码如下: (我大概是第 172,719 个解出 ...
- Python练习题 029:Project Euler 001:3和5的倍数
开始做 Project Euler 的练习题.网站上总共有565题,真是个大题库啊! # Project Euler, Problem 1: Multiples of 3 and 5 # If we ...
- Python练习题 046:Project Euler 019:每月1日是星期天
本题来自 Project Euler 第19题:https://projecteuler.net/problem=19 ''' How many Sundays fell on the first o ...
- Python练习题 045:Project Euler 017:数字英文表达的字符数累加
本题来自 Project Euler 第17题:https://projecteuler.net/problem=17 ''' Project Euler 17: Number letter coun ...
- Python练习题 039:Project Euler 011:网格中4个数字的最大乘积
本题来自 Project Euler 第11题:https://projecteuler.net/problem=11 # Project Euler: Problem 10: Largest pro ...
- Python练习题 032:Project Euler 004:最大的回文积
本题来自 Project Euler 第4题:https://projecteuler.net/problem=4 # Project Euler: Problem 4: Largest palind ...
随机推荐
- 老男孩Python全栈学习 S9 日常作业 011
1.编写装饰器,为函数加上统计时间的功能 import time def Decoration(func): def Timmer(): # 开始时间 Start = time.time() func ...
- 【7】学习C++之类的构造函数
(说实话,我一开始真没觉得构造函数这块有多重要,但是看的视频中老师却花了不少的时间去讲这块内容,本着整理了不亏的心态还是整理了一下) 1.常见的构造函数 C++的类在创建对象的时候,都会去调用构造函数 ...
- 贪吃蛇游戏——C语言双向链表实现
采用了双向链表结点来模拟蛇身结点: 通过C语言光标控制函数来打印地图.蛇身和食物: /************************** *************************** 贪吃 ...
- Image 上传下载Api
1.配置 "UploadConfig": { // 自定义存放位置,无需放到站点内部 "Path": "C:\\Users\\kxy\\Desktop ...
- window10:jdk 8下载和安装步骤
window10:jdk 8下载和安装步骤 点击链接:https://blog.csdn.net/qq_39720249/article/details/80721719
- Python爬虫从入门到进阶(4)之xpath的使用
官网地址:https://lxml.de/xpathxslt.html 导入: from lxml import etree lxml.tree 支持 ElementTree 和 Element 上的 ...
- 论文笔记:Mask R-CNN
之前在一次组会上,师弟诉苦说他用 UNet 处理一个病灶分割的任务,但效果极差,我看了他的数据后发现,那些病灶区域比起整张图而言非常的小,而 UNet 采用的损失函数通常是逐像素的分类损失,如此一来, ...
- 一个简单的go语言爬虫
package main import ( "bufio" "fmt" "golang.org/x/net/html/charset" &q ...
- emos邮件系统的web密码修改方法
作者:邓聪聪 1.修改web管理界面的登陆密码,数据库修改管理员密码,有root用root,没root用系统用户.查看方法 进入数据库查看到管理表项中的root管理账户信息, mysql> u ...
- Linux禁止ping、开启ping设置
Linux默认是允许Ping响应的,系统是否允许Ping由2个因素决定的:A.内核参数,B.防火墙,需要2个因素同时允许才能允许Ping,2个因素有任意一个禁Ping就无法Ping. 具体的配置方法如 ...