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 ...
随机推荐
- 小白在 Eclipse如何避免启动时自动building workspace和validating
问题: Eclipse启动时会出现如下的情况(时间比较长): 原因所在: Validating 意为验证,validating... 逐个的检查每一个文件,Eclipse在启动时自动验证代码和创建wo ...
- 1.6分布式通讯协议-WebService
RPC 包含的要素(webservice) 协议层:tcp/ip 应用层: http协议 SOAP: http+xml 分布式通信框架-webservice分析 什么是webservice webse ...
- [Android] Android 使用 FragmentTabHost + Fragment 实现 微信 底部菜单
Android 使用 FragmentTabHost + Fragment 实现 微信 底部菜单 利用FragmentTabHost实现底部菜单,在该底部菜单中,包括了4个TabSpec,每个TabS ...
- 第二章,循环结构,输入输出,clock
计时 计时函数: clock() 返回目前为止运行的时间 注意要除以常数 CLOCKS_PER_SEC, 才能得到以秒为单位. 头文件 time.h 管道 在windows命令行下执行echo 20| ...
- SQLServer2012基于扩展事件的阻塞监控
一.前言 SQL阻塞Block是事务联机系统OLTP的产物.由于锁导致的资源等待,事务执行时间过长,直接影响业务:了解阻塞,发现阻塞,已作为DBA日常维护的重中之重. 通过dmv可以发现当前正在阻塞的 ...
- 毕业设计——django中的render()与redirect()问题
1. redirect()时需要传递数据,在网上找到的方法是通过session传递数据,但是个人认为用session传递数据并不合适,session一般用于权限验证数据的传递... 2. render ...
- react-native不是内部或 外部命令,也不是可运行的程序或批处理文件
1.执行node命令时提示:node不是内部或外部命令,也不是可运行的程序或批处理文件. 原因环境变量没有指向node安装目录 path:C:\Program Files\nodejs\ 2.reac ...
- python开发基础之语法基础
一.知识点 (一)python介绍 1.Python被设计成一种高可读性的语言,它大量地使用了英语单词作为关键字,不像其他语言使用标点符号构成复杂的语法结构. 2.Pyton是支持面向对象的,支持在对 ...
- MySQL保留字不能作为字段名使用
在设计MySQL字段的时候,无意中使用InOut这个名称作为字段名称,结果前端提交后就是没有写入数据库!但后端没有任何提示,跟踪mySQL日志,也没有留下痕迹,反复查,不得其解. 后来实在没有办法情况 ...
- python面试题一个字符串是否由重复的子字符串组成
一,给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且长度不超过10000. 输入: "abab" 输出: True 解释: 可由 ...