大家一起做训练 第一场 G CD】的更多相关文章

题目来源:UVA 624 题目的意思就是:我现在需要从 t 张CD中拿出一部分来,尽可能的凑出接近 N 这么久的音乐,但是不能超过 N. CD不超过20张,每张长度不超过 N ,不能重复选. 一个很简单的0-1背包.因为最多只有220 = 1048576种可能,所以即使是枚举所有情况都可以毫无压力的搞起. 我这里用的DFS进行枚举,然后得到最好的结果. 最后需要说的是,此题是特判的.输出CD的长度的时候是无序的. 附AC代码: 1: #include <stdio.h> 2: #include…
题目来源:CodeForce #27 B 有n个人比赛,两两之间都有一场比赛,一共 n * (n - 1) / 2 场比赛.每场比赛的记录方式是 a b,表示在a和b的比赛中,a胜出,b失败. 经过研究发现,输赢有传递性,例如:a赢了b,b赢了c,那么a一定会赢c. 现在,比赛记录发现丢了一场,请输出这一场的比赛记录.输出可能的结果中的一个就OK. 直接暴力可做.首先,利用一个二维数组,记录两人是否比赛.得到了丢失了一场比赛的两位选手a, b之后,按照输赢的传递性直接找有没有出现一个人c.使得…
题目来源:CodeForce #27 E 题目意思和题目标题一样,给一个n,求约数的个数恰好为n个的最小的数.保证答案在1018内. Orz,这题训练的时候没写出来. 这道题目分析一下,1018的不大,比264要小,所以这题可以枚举. 一个数 A 可以分解成 p1k1 * p2k2 * -- * pnkn 其中p为素数.这样分解之后,A的因子个数 S = (k1+1) *( k2+1) * -- *( kn+1) 然后用dfs枚举 + 剪枝. 剪枝的话大于现有结果return.就这样就能AC了.…
题目来源:CodeForce #27 A 题目的意思简而言之就是要你输出一个没有出现过的最小的正整数. 题意如此简单明了,做法也很明了. 直接读入所有的数,然后排个序,设置个变量从1开始,出现过+1,没出现过输出并break 1: #include <stdio.h> 2: #include <iostream> 3: #include <math.h> 4: #include <stdlib.h> 5: #include <string.h>…
[HDU6304][数学] Chiaki Sequence Revisited -杭电多校2018第一场G 题目描述 现在抛给你一个数列\(A\) \[ a_n=\begin{cases}1 & n = 1,2 \\ a_{n - a_{n-1}} + a_{n-1 - a_{n-2}} & n \ge 3\end{cases} \] 现在需要你计算它的前缀和 \(\sum\limits_{i=1}^{n}a_i \ mod \ (10^9+7)\) 数据范围 \(n(1\le n\le…
题意:给一个无向图,给起点s,终点t,求最少拆掉几条边使得s到不了t,最多拆几条边使得s能到t 思路: 先跑一边最短路,记录最短路中最短的边数.总边数-最短边数就是第二个答案 第一个答案就是在最短路里面求最小割,也就是求最大流,然后依据最短路在建个新图.权为1.跑一边网络流 模板题.以后就用这套模板了 #include <iostream> #include <cstdio> #include <cstring> #include <queue> #incl…
题目链接:acm.hdu.edu.cn/showproblem.php?pid=6589 题意:给出一个长度为n的数组,有m次操作,操作有3种1,2,3,问操作m次后的数组,输出i*a[i]的异或和 操作k的实质是进行一次O(n)的计算,a[i]+=a[i-k] (i-k>0) k=1时,我们可以发现这是一次求前缀和的操作 k=2时,我们可以发现这是对于1,3,5,7... 2,4,6,8...两个子数组分别进行求前缀和的操作 k=3时,我们可以发现这是对于1,4,7,11...2,5,8,12…
题目来源:CodeForce #15 A 现在有 n 间正方形的房子,其中心点分布在 X轴 上,现在我需要新建一间边长为 t 的房子,要求新房子至少和一间房子相邻,但是不能和其他房子重合.请输出我有多少个位置可以选. 先分析一下: 因为现在要建一间边长为 t 的房子,而且要有一间房子与之相邻.所以,只有两种可能:第一种,在两端头.第二种,两间房子之间的间隔>= t. 分析完之后,做法已经是显而易见的了.首先,最少能建2间房子(在两端头).然后就是遍历所有中心点,来计算房子间的距离,来判断能不能建…
链接: https://www.nowcoder.com/acm/contest/139/I 题意: 给出一个n(1≤n≤5e4)个字符的字符串s(si ∈ {a,b,c}),求最多可以从n*(n+1)/2个子串中选出多少个子串,使得它们互不同构.同构是指存在一个映射f,使得字符串a的每个字符都可以映射成字符串b的对应字符.例如ab与ac.ba.bc.ca.cb都是同构的. 分析: 以字符串abba为例:现在只考虑这个字符串的2个子串ab和ba,如果不考虑重构,有2个子串,否则,只有1个子串.这…
链接: https://www.nowcoder.com/acm/contest/139/F 题意: 分析: 转载自:http://tokitsukaze.live/2018/07/19/2018niuke1.F/ 代码: #include <cstdio> #include <cassert> #include <algorithm> using namespace std; /// 注意mod,使用前须调用一次 polysum::init(int M); names…