题目来源: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了.…
题目来源:UVA 624 题目的意思就是:我现在需要从 t 张CD中拿出一部分来,尽可能的凑出接近 N 这么久的音乐,但是不能超过 N. CD不超过20张,每张长度不超过 N ,不能重复选. 一个很简单的0-1背包.因为最多只有220 = 1048576种可能,所以即使是枚举所有情况都可以毫无压力的搞起. 我这里用的DFS进行枚举,然后得到最好的结果. 最后需要说的是,此题是特判的.输出CD的长度的时候是无序的. 附AC代码: 1: #include <stdio.h> 2: #include…
题目来源: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>…
题目来源: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个子串.这…
题意:给一个无向图,给起点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…
题目做了超链接 参考官方题解,作部分优化 下馆子 -3 题意: 给定n组数据,由name,time构成 当只有一个最大值时,输出该同学 当不止有一个最大值时,输出最先大于等于max次的同学 题解: 考虑用map<string,int> 遍历 map 计算出最大值mm 若最大值为mm的只有一个,直接输出 若不止一个,重新模拟一次输入,当出现出勤次数大于等于max时输出该人名 上板子: #include <bits/stdc++.h> using namespace std; type…
本套题没有什么数据结构题,图论题,唯一有价值的就是Q题博弈,在最后面,读者可以直接拉到最下面. (还剩下两个,估计每什么价值的题,懒得补了 M .Polyhedra pro:欧拉公式,V-E+F=2:给定V,E,求F sol:F=E-V+2: #include<bits/stdc++.h> #define rep(i,a,b) for(int i=a;i<=b;i++) using namespace std; ; int main() { int T; scanf("%d&q…