Codeforces
这波lucio来全学了
这个作者很懒,什么都没留下…
展开
-
Codeforces #319(Div.2) B. Modulo Sum (动态规划)
题意:两个数n和m,还有a1-an的n个数,判断是否存在该数列的一个子序列,使得子序列元素的和可以被m整除。看了下官方题解:分两种情况:n>m 和 n<=m。如果n>m, 可以判断输出一定为“Yes”。求出前 i 个数的和 S1-Sn,有鸽巢原理,可以知道至少有两个数列和对m取模的结果相等,假设为Sl%m=Sr%m,则可以知道(Sl-Sr)%m==0,于是 [ l+1,r ]就是所求的子序列。如果n<=m, 用动态规划解决,O(m^2)。dp[i][r]表示到了第i个数,前面子序列的和对m取模是否能原创 2015-09-12 10:55:08 · 873 阅读 · 0 评论 -
Codeforces #319(Div.2) C. Vasya and Petya's Game(数学题)
题意:A给出一个数x,B每次猜一个y,A回答B,x是否可以被y整除,求出要猜的最小次数和需要猜的数。素数筛处理出所有素数,枚举每个素数p,可以知道如果p^k<n,则p^k一定需要选,根据这个原则求出所有要猜的数。原创 2015-09-12 11:11:45 · 1247 阅读 · 0 评论 -
Codeforces#321 (Div. 2) B. Kefa and Company(前缀和,二分查找)
题意:kefa有n个朋友,Kefa 想邀请他的一些朋友去餐厅,每个朋友带两个值mi和si,分别为钱数和友情值,邀请的朋友要求最大的m和最小的m相差不大于d,求能得到的最大的友情值。思路:按m值递增排序,枚举起点,找到符合要求的终点,计算这个区间的友情值总和,更新答案就好了,为了省时间用前缀和求区间和。注意下数据范围,答案用LL。原创 2015-09-23 22:30:45 · 1325 阅读 · 0 评论 -
Codeforces #319(Div.2) A. Multiplication Table
可以看到x在每行最多出现一次,在x/i的地方,枚举i判断x%i==0和x/i<=n,更新答案。O(n)原创 2015-09-12 10:26:49 · 526 阅读 · 0 评论 -
Codeforces#321 (Div. 2) C. Kefa and Park(dfs)
题意:地图是一棵树,从根(点1)出发,要到叶子去,路上连续有m个点有猫的路不走,求有多少路可以走。思路:很水的dfs,构造边的时候记录下度数,用于判断是否为叶子就好了。原创 2015-09-23 22:39:12 · 1425 阅读 · 0 评论 -
Codeforces#321 (Div. 2) D. Kefa and Dishes(DP,掩码)
题意:Kefa 去吃东西,菜单上有n中菜可以选,每种菜分别会带给kefa ai的满足感,此外有k条规则,给出u,v,c,先吃u再吃v会得到c的满足感。kefa要吃m种菜,求得到满足感的最大值。思路:用一个二维的dp数组,第一个元素用掩码表示已经拿的菜,注意大小是2^18,第二个元素表示拿的最后一种菜,先置dp数组为-1,以此来消除掩码没有意义的空元素,可以知道,初始状态是第i种菜先拿的时候,值为ai,状态转移,后面的状态有原来dp[][j] ,或者是先拿一个i再拿j得到,为dp[]+c[j]+g[i][j原创 2015-09-23 22:57:11 · 1339 阅读 · 2 评论