题目描述:在一个\(n\times m\)的网格中,放\(2n\)个棋子,使每一行和每一列都不超过两个棋子.求方案数\(\mathrm{mod} \ 943718401\). 数据范围:\(n\le m\le 2\times 10^6\) 首先你要知道这个模数是个 NTT 模数.注意到每一行都要有两个棋子.设有\(k\)列有两个棋子,则有\(2(n-k)\)列有一个棋子的方案数是\(S_k\). \[ Ans=\sum_{k=0}^n\binom{m}{k,2(n-k)}S_k \] 然后考虑计…
Description Solution 943718401=225*2^22+1 显然每行必须有两个,我们不妨枚举有k列有2个石子,那么有2(n-k)列有1个石子. \[Ans=\sum\limits_{k=0}^{n}{m\choose k}{m-k\choose 2(n-k)}S_k\] 抽象一下问题,我们有n种颜色的球,每种颜色的球有两个且没有区别,现在要将它们放进k+2(n-k)个有区别的盒子中,其中k个盒子无序的放2个球,2(n-k)个盒子放1个球,同种颜色的球不能放入同一个盒子,\…
先看一段很简单的java代码: toString()/** * @author jeffwong */ public class InfiniteRecursion { public String toString(){ return "InfiniteRecursion address "+ this + "\n"; } public static void main(String[] args) { InfiniteRecursion obj = new Inf…
无意识(无知)-->有意识-->进入潜意识-->无意识(本能状态) 1. 从“无意识-->有意识”的两个重要内容是“反省”+“要努力学习”,估计有80%的人无法跨过这一步 2. 从"有意识-->进入潜意识"需要大量地刻意训练,训练什么就决定成为一个什么样的人 3. 从“潜意识-->无意识”需要长期地专注某领域 反省什么: 意识到所言所行的对与错.好或坏,影响了一个人的一生的生活质量,仍至生命质量. 因为“控制自己”的关键是“自我意识”后反省,并刻意地…
相邻 环形 总结 (1)相邻:在一个圆形操场的四周摆放着n堆石子(n<= 100),现要将石子有次序地合并成一堆.规定每次只能选取相邻的两堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分.选择一种合并石子的方案,使得做n-1次合并,得分的总和最小. /* * 在一个圆形操场的四周摆放着n堆石子(n<= 100),现要将石子有次序地合并成一堆. * 规定每次只能选取相邻的两堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. *选择一种合并石子的方案,使得做n-1次合并,得分的…
codevs1048: 题目大意:有n堆石子排成一列,每次可合并相邻两堆,代价为两堆的重量之和,求把他们合并成一堆的最小代价. 解题思路:经典区间dp.设$f[i][j]$表示合并i~j的石子需要的最小代价.则有$f[i][j]=min(f[i][k]+f[k+1][j]+\sum\limits _{l=i}^{j}a[l])$,时间复杂度$O(n^3)$. C++ Code: #include<cstdio> #include<cstring> using namespace s…
/* 注意到合并三堆需要枚举两个端点,其实可以开一个数组记录合并两堆的结果,标程好像用了一个神奇的优化 */ #include<iostream> #include<cstdio> #include<string> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #define ll long long #define fo(i,…
来自: Java编程思想P287 public class Main { /** * @param args */ @Override public String toString() { return "Main" + this; // 这里我们调用this的话,就默认调用了toString() 无限递归了 } public static void main(String[] args) { // TODO Auto-generated method stub Main a = ne…
Java中的每个类基本上都继承自Object,标准容器类自然也不例外.因此容器类都有toString()方法,并且重写了该方法,使得它生成的String结果能够表达容器本身,以及容器所包含的对象.例如ArrayList.toString(),它会遍历ArrayList中包含的所有对象,调用每个元素上的toString()方法: public class Person { private int age; private String name; public int getAge() { ret…
题目链接:12075 - Counting Triangles 题意:求n * m矩形内,最多能组成几个三角形 这题和UVA 1393类似,把总情况扣去三点共线情况,那么问题转化为求三点共线的情况,对于两点,求他们的gcd - 1,得到的就是他们之间有多少个点,那么情况数就能够求了,然后还是利用容斥原理去计数,然后累加出答案 代码: #include <stdio.h> #include <string.h> #include <algorithm> using nam…