- 博客(11)
- 资源 (2)
- 收藏
- 关注
原创 URAL 1495. One-two, One-two 2
找一个最小的数 不超过30位 只能由1 2组成的并且是n的倍数 先算出15位 dp[i]表示余数为i的最小的数 dp2[i]表示长度正好是15位余数为i的最小的数 #include #include #include #include using namespace std; typedef long long LL; LL dp[1000010], dp2[1000010]; vo
2014-11-29 21:46:41 963
原创 编译原理 实验3 语法分析
语法分析 一、 实验目的 算术表达式的文法可以是(你可以根据需要适当改变): E→E+E|E-E|E*E|E/E|(E)|i 根据算符优先分析法,将表达式进行语法分析,判断一个表达式是否正确。 二、 实验环境 操作系统:window xp 编写环境:visual c++ 编写语言:c语言 三、 实验内容 程序输入/输出示例: 如参考C语言的运算符。输
2014-11-29 19:41:49 8267
原创 URAL 1287. Mars Canals 滚动数组+DP
求从上到下 从左到右 从左上到右下 从右上到左下的 最长的S和s串 #include #include #include using namespace std; const int maxn = 1444; char a[maxn][maxn]; int dp[2][maxn][2][4]; int main() { int n; int ans1 = 0, ans2 = 0; s
2014-11-25 16:58:58 837
原创 HDU 3094 A tree game 树的删边游戏
叶子节点的SG值为0 非叶子节点的SG值为为它的所有子节点的SG值加1 后的异或和 #include #include #include using namespace std; vector G[100010]; int sg[100010]; int dfs(int x, int f) { if(sg[x] != -1) return sg[x]; if(!G[x].size
2014-11-20 14:23:47 994
原创 编译原理 实验2 DFA的运行
DFA的运行 一、 实验目的 1.理解有穷自动机的作用; 2.利用状态图和状态表表示有穷自动机; 3.以程序实现有穷自动机的运行过程; 4.利用状态表和有穷自动机的运行原理编制程序,使得程序能够识别一个输入串是否为一个有效的符号串。具体可以选择下面之一:无符号定点实数,无符号正偶数,自然数,整数,十六进制数,或其他自己定义的符号串。 二、 实验环境 操作系统:window xp 编
2014-11-14 17:53:07 3230
原创 HDU 3886 Final Kichiku “Lanlanshu” 数位DP
给你一个字符串/表示当前位比前一位小-表示和前一位相等\ 表示比前一位大 求a到b之间有多少个数满足方案 dp[i][j][k] 到第i位满足字符串的第j位前一位是k的方案数 #include #include using namespace std; const int maxn = 110; char s[maxn], A[maxn], B[maxn]; int a[max
2014-11-13 09:31:58 1356
原创 ZOJ 3233 Lucky Number 容斥
给你a数组和b数组 求x到y之间有多少个数至少被a中一个数整除并且至少不被b中一个数整除 容斥第一问很简单 第二问可以考虑反面 设满足被a中至少一个数整除的数有sum1个 在被a中至少一个数整除的前提下 被b中所有数整除的数有sum2 答案就是sum1-sum2 在dfs的时候溢出了 借鉴了某大牛的方法 #include #include using namespace std;
2014-11-07 19:45:35 1108
原创 ZOJ 3556 How Many Sets I 二项式+容斥
n个元素的子集有2^n个 求从这些子集选出k个组成有序集 并且有序集的交集为空的方案数 总数为2^n^k 减去不符合的 不符合的为交集存在1个共同元素 存在2个共同元素.... 2^n^k-C(n, 1)*2^(n-1)^k+C(n, 2)*2^(n-2)^k.... (2^k-1)^n #include #include using namespace std; typedef
2014-11-07 16:22:02 864
原创 URAL 1091. Tmutarakan Exams 容斥
从1到s选出k个数 他们的最大公约数大于1 求方案数 容斥 S(1)-S(2)+S(3) S(x)为选出k个数的公因子个数为x的数量 #include #include #include using namespace std; typedef long long LL; const int maxn = 55; int prime[maxn], vis[maxn]; int n, m;
2014-11-07 10:46:51 765
原创 CF 479E Riding in a Lift 前缀和 DP
输入 n a b k 有n层楼 起点在a层 b层是不能到达的 假设当前在x层 每一次可以到达y层 满足 |x-y| dp[i][j]为第i次到达j层的方案数 dp[i][j] = sum(dp[i-1][k]) 其中|k-j| 满足条件的k是连续的一段 用前缀和优化 #include #include #include using namespace std; typedef l
2014-11-06 20:52:48 985
原创 CF 479D Long Jumps
#include #include #include #include using namespace std; int a[100010]; int n; bool find(int x) { int l = 0, r = n-1; while(l <= r) { int m = (l+r) >> 1; if(a[m] == x) return true; i
2014-11-06 15:45:59 901
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人