摘要:
这道题代码很短,实际上就是令dp(i)表示是否可以组成i这么大的面值然后sum(i)表示当前组成i这么大的数字用了多少个当前的数字,然后循环的时候维护sum的值不超过可用范围就行了#include #include #include using namespace std;cons... 阅读全文
摘要:
分析一下发现如果每一次放进去一个新,它就会对所有覆盖这个点的所有颜色的L加1那么另add(i,j)为第一个放到i第二个放到j放完之后这种状态有多少组交叉那么有int add(int x, int y) { int cnt = 0; for(int i=0;i x && ... 阅读全文
摘要:
其实就是把每一部分的内容缩成一个点,然后把每一个特殊意义的符号用方便表示的符号表示出来 比如 (@表示必须选一个, #表示选择1个或者不选,的含义和*一样) ! -> @@# * -> ? -> @## 然后if(check(str[0][i][0]) |... 阅读全文
摘要:
我们令f(i,j)表示在字符串中从i-j的回文串的分割后的最小次数,那么可以很容易的发现f(i,j)=min{f(i,k)}+1条件是从k+1到i的这几个字符串是回文串,那么才可以进行分割,这道题目唯一要注意的地方就是注意在预处理回文串的判断的时候要注意奇数串和偶数串#includ... 阅读全文
摘要:
令dp(i,j)表示用第i个方块做底其中第j条边做高的时候所可以得到的最大高度那么显然dp(i,j)=min{dp(k,p)}+h(i,j)同时要求第k个的底面严格小于i的底面。这道题就是这样。#include #include #include using namespace s... 阅读全文