2022年10月12日
摘要: int b[N+2], pm[N+2],tot=0; void init(){ b[1]=1; for(int i=2;i<=N;i++){ if(b[i]) continue; pm[++tot]= i; for(int j=2;j*i<=N;j++) b[j*i]=1; } } const in 阅读全文
posted @ 2022-10-12 23:16 towboat 阅读(35) 评论(0) 推荐(0)
摘要: 算法求解了不定方程 ax+by=gcd(a,b) (1) 的一组解x0,y0 void gcd(int a,int b,int &d,int &x,int &y){ if(b==0){ d=a; x=1,y=0; return ; } gcd(b,a%b,d,y,x); y-=x*(a/b); } 阅读全文
posted @ 2022-10-12 23:05 towboat 阅读(35) 评论(0) 推荐(0)
摘要: 操作:从字符串a中扣除给定的子串b(如hebheof 和 he ,结果 --bheof或heb--of 问直到无法操作时,至少需要几次 #include<iostream> #include <vector> #include <cstring> using namespace std; const 阅读全文
posted @ 2022-10-12 20:31 towboat 阅读(30) 评论(0) 推荐(0)
  2022年10月10日
摘要: 题意: 有n件商品,每件有价格c[i],优惠券d[i], 对于i>=2,使用di的条件为:xi的优惠券需要被使用,问初始金钱为b时 最多能买多少件商品? n<=5000 解答 树上背包 f[u][j][0/1] 表示某子树(u)有体积j(分配的物品数目) ,该物品是否选择,所需要的最小金钱 f[u] 阅读全文
posted @ 2022-10-10 17:54 towboat 阅读(36) 评论(0) 推荐(0)
摘要: 例子: luogu <选课> 课程有依赖关系形成树状结构,每个节点有价值a[i], 若选择X节点 则必须选择其父节点,最多选m个节点 问能获得的最大价值 f[u][i][j] 结点u,可用体积为j(节点个数),考虑前i个子节点,能获得的最大价值 我们枚举第i个点分配的体积k f[u][i][j]= 阅读全文
posted @ 2022-10-10 16:31 towboat 阅读(37) 评论(0) 推荐(0)
摘要: 题目 给出一棵树,每条边的长度为1 现在对于原图中每一对距离为2的点,连一条长度为1的边。 求 ,1<=i<j<=n 其中dist(i,j) 是两点的最短距离 解答 符号 [ ]为向上取整 考虑一对(i,j),每一步一定贪心地走长度为2的边(然后最后一步可能要走长度为1的边 则 dist(i,j)= 阅读全文
posted @ 2022-10-10 12:56 towboat 阅读(33) 评论(0) 推荐(0)
摘要: 题目 (n=3e5 n个节点以1为根的一棵树,每个非叶子节点都有一个操作max或min(0表示min,1表示max),表示这个节点中的值应该分别等于其子节点中所有值的最大值或最小值。 假设树上有k个叶节点,你可以将每个叶节点填上[1,k]的数字,且每个数字只使用一次,求根节点的最大值 解答 思维题 阅读全文
posted @ 2022-10-10 09:46 towboat 阅读(30) 评论(0) 推荐(0)
  2022年10月9日
摘要: 题目 sum{dis(i,j)} dis(i,j) 为两点的最短跳跃次数,(每次可以跳k条边) 解答 #include <iostream> #include <cstring> #include <vector> using namespace std; const int N=2e5+4; #d 阅读全文
posted @ 2022-10-09 22:47 towboat 阅读(36) 评论(0) 推荐(0)
摘要: 题目 n棵树,开始有W元,第i棵树上有num[i]只鸟,第i棵树上的一只鸟要花c[i]元,每走一棵树增加x元,每买一个鸟会让钱包容量增加b,问最多能买到几只鸟? 解答 线性dp,状态f[i][j] ,j是当前拥有鸟的个数 f[i][j] = max{f[i-1][j-k]+X-w[i-1]*k #i 阅读全文
posted @ 2022-10-09 10:49 towboat 阅读(38) 评论(3) 推荐(0)
  2022年10月8日
摘要: 题目 现有A,B两种物品(各有n1和n2个) 组成一个排列(全部物品都用到), 且满足条件 : 不会出现连续k个物品 (对A物品 k=k1, B物品k=k2) 解答 线性dp,设f[i][j][k][0/1] 前i个物品,j个A,k个B,最后一个取A或B 枚举最后一个连续相同物品的区间即可 f[i] 阅读全文
posted @ 2022-10-08 17:52 towboat 阅读(22) 评论(0) 推荐(0)