题目传送门 盒子和小球之二:N个有差别的盒子(1<=N<=20).你有A个红球和B个蓝球.0 <= A <= 15, 0 <= B <= 15.球除了颜色没有任何区别.你可以将球放进盒子.一个盒子可以同时放进两种球,也可以只放一种,也可以空着.球不必全部放入盒子中.编程计算有多少种放置球的方法. 考虑动态规划.一个盒子可以同时放进两种球,但是每个盒子我们可以对他进行很多操作,所以也就可以近似看成每个盒子可以放无数球,但是这并不重要.设f[i][j][k]表示我们当前放到…
题意:有N个有差别的盒子和分别为A个和B个的红球和蓝球,盒子内可空,问方案数. 解法:我自己打的直接用了求组合C的公式,把红球和蓝球分开看.对于红球,在N个盒子可放任意个数,便相当于除了A个红球还有N个"空"球可放进N个盒子里,这些球之间是无差别的,从这N+A个球中选N个,就是C(N,N+A).对于蓝球同理.再用乘法原理,相乘为答案. 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring>…
题意:有N个相同的球,M个不同的盒子,每个盒子最多放K个球.请计算将这N个球全部放入盒子中的方案数模1000007后的结果. 解法:f[i][j]表示i个盒子里放j个球的方案数. 1.得到3重循环的坐法,枚举第i个盒子里放k个球--f[i][j]=sum( f[i-1][j-k~j] ) 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 usin…
http://noi.openjudge.cn/ch0206/4978/ 描述 宠物小精灵是一部讲述小智和他的搭档皮卡丘一起冒险的故事. 一天,小智和皮卡丘来到了小精灵狩猎场,里面有很多珍贵的野生宠物小精灵.小智也想收服其中的一些小精灵.然而,野生的小精灵并不那么容易被收服.对于每一个野生小精灵而言,小智可能需要使用很多个精灵球才能收服它,而在收服过程中,野生小精灵也会对皮卡丘造成一定的伤害(从而减少皮卡丘的体力).当皮卡丘的体力小于等于0时,小智就必须结束狩猎(因为他需要给皮卡丘疗伤),而使得…
弹性盒子属性 一.align-content属性 属性作用:用于修改flex-wrap属性行为.类似于justify-content,但它不是设置弹性子元素的对齐,而是设置各个行的对齐. 属性值: flex-start  各行向侧轴的起始位置堆叠. flex-end  各行向侧轴的结束位置堆叠. center  各行向弹性盒容器侧轴的中间位置堆叠 space-between各行向弹性盒容器中平均分布 space-around  各行在弹性盒容器中平均分布,两端保留子元素与子元素之间间距大小的一半…
分析 简单区间DP, 定义状态f[i][j][0/1]为取完i-j的小球最后取i/j上的小球所能获得的最大价值. 排序转移. ac代码 #include <bits/stdc++.h> #define N 1005 using namespace std; template <typename T> inline void read(T &x) { x = 0; T fl = 1; char ch = 0; for (; ch < '0' || ch > '9'…
LINK:P6570 [NOI Online #3 提高组]优秀子序列 Online 2的T3 容易很多 不过出于某种原因(时间不太够 浪了 导致我连暴力的正解都没写. 容易想到 f[i][j]表示前i个数 当前或为j的方案数. 转移很简单 不过复杂度最坏是n*值域的. 只有20 可以把状态降维 可以枚举子集来剪枝 这样就可以卡过40分了. 容易发现当前为0的时候 整体状态要乘2这个可以打一个标记. 这样在开o2的情况下就可以获得70分的好成绩了. const int MAXN=200010<<…
传送门 概率dp经典题. 如果当前位置(i,j)(i,j)(i,j)有钉子,那么掉到(i+1,j),(i+1,j+1)(i+1,j),(i+1,j+1)(i+1,j),(i+1,j+1)的概率都是1/2. 而如果没有钉子,那么掉到(i+2,j+1)(i+2,j+1)(i+2,j+1)的概率是1. 这样转移就行了. 另外注意读入字符要用cin. 代码: #include<bits/stdc++.h> #define ll long long using namespace std; ll n,m…
题意: 给两个字符串,可以增.删.改,问使这两个串变为相同的最小操作数. 解法:(下面2种的代码主要区别在初始化和,而状态转移方程大家可挑自己更容易理解的方法打) 1.f[i][j]表示a串前i个和b串前j个完成匹配的最小操作数. 2.f[i][j]表示a串前i-1个和b串前j-1个完成匹配的最小操作数. 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream&g…
题意:在m个村庄建n个小学,求所有村到最近小学的距离总的最小值. 解法:由于题目是求"离最近的学校",而不是前一个学校,所以枚举学校的具体位置不方便,可转化成区间(学校居区间中间)的划分问题. 实现:dis[l][r]存村庄l和村庄r之间建1个小学的最小距离和,即到中间那个村庄的距离和.f[i][j]表示前i个村庄建了j个小学的最小距离和. 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring&…