关闭

[置顶] 2017赛季个人训练记录

梦天退役了,队伍散了咯。得靠自己了以后。从基础重新来过吧,不能被某方面太简单的题卡题,要全面点。...
阅读(212) 评论(0)

Gym 101482. I - Indoorienteering (折半搜索)

题意:给一个n*n的邻接矩阵 代表 俩俩顶点之间的距离。一共n个点。然后问你。长度为w的回路是否存在,就是从u出发,最多每条边只能过一次最终回到u。(1≤n,w≤1e151\le n,w \le 1e15) 思路:折半搜索,分为两块然后每一块枚举以后,爆搜。这样每一块的复杂度大概都是在7!的数量级,5e3左右。然后用一个set,dp[i]来存取以i作为路径终点的路径长度,搜完一块以后,第二块在第一块...
阅读(5) 评论(0)

Gym 101482.H - Hyacinth (构造)

题意:给你一棵树,每个树有两个频道,相邻结点至少有一个频道相同,使得相邻结点的相同的频道的集合尽量的大。输出方案。第一个样例的集合大小为2,第二个样例大小的集合大小为6。 思路:直接dfs,标记所有用过的颜色,然后对每个孩子结点考虑一下,颜色v1是否用过,没用过用v1,打标记。否则用颜色v2,打标记。#include using namespace std; cons...
阅读(11) 评论(0)

Gym 101482.F - Finding Lines (随机算法)

题意:二维平面上有n个点(n≤1e5n\le1e5),问你能否找到一条直线,使得有至少占比为p(20≤p≤10020\le p\le 100)的点在这条直线上。 思路:   随机算法,枚举两个点,check有多少个点在这条直线上,你有0.2*0.2=0.04,也就是1-0.04=0.96的错误率,那么重复300次能降到1 e-6的错误率的级别,就能找到答案直线了。   但是我们如果每次都通过r...
阅读(11) 评论(0)

Gym 101482.C - Cent Savings (DP)

题意:让你分d次,问你一个序列被分成d+1段后,每段内部加和,四舍五入,然后统计所有段的加和的最小值是多少。n≤2000,d≤20n\le2000,d\le20。 思路:   简单dp。注意切d刀是d+1段。dp[i][j]:前i个数字,分为j段的加和最小值是多少。然后我们会发现状态转移的时候,我们不知道第j段有多长。   枚举前j-1段共有k个数字,那么第j段就是从k+1开始。dp[i][j...
阅读(7) 评论(0)

Gym 101389. B - Beer Pressure(bfs+哈希状态+正确分析复杂度)

题意:给你n个人已获得的票数,告诉你参与投票的人总人数为K,问你每个人赢得最后获选的概率是多少。每个人投票时,投票概率不等价,投第i个人的概率为,第i个人当前获得票数/当前已投票人数。如果最后k票投完,有人同为票数最高者,平分胜率。(n≤5,k≤50n\le5,k\le50) 思路:   这题的关键,首先是正确分析复杂度:相当于一个dp[a][b][c][d][e],每一维度皆为50,看上去是50...
阅读(11) 评论(0)

Gym 101398. K - Key Insight (思维)

题意:给你两串字符,然后告诉你长度k为一段,串一串二在每一段中通过某种映射方式一一对应,得到若干种对应方案,然后问你整个串中有多少种方案使得,所有段均满足。 思路:   先按题意连边,同一段中,相同的两个字母连边。又易得,两点之间只有边数==段数,才应该在新图中连边。   得到新图以后,直接搜联通块,联通块为偶数即可。(易证,今年多校也有一个这种题)然后每个联通块的贡献度即为其大小siz/2的阶...
阅读(9) 评论(0)

Gym 101246.J - Buoys(三分)

题意:给你一条数轴n个点( n≤400n\le400),坐标范围−10000≤x≤10000−10000\le x\le10000。问你移动某些点后,使得所有点之间的距离相同,问你所有顶点移动的距离加和的最小值是多少。 思路:   这题一上来,就感觉是排个序,固定最左端点,三分最右端点,check一下就好。自信满满,感觉自己很强,写了一发wa on test8。emmm。   三分间距吧。枚举每...
阅读(11) 评论(0)

Gym 101246.H - “North-East” (二维LIS变形)

题意:给出n个点的坐标,现在有一个乐队,他可以从任一点出发,但是只能往右上方走(包括右方和上方),要经过尽量多的点。输出它可能经过的点和一定会经过的点。 思路:   如果按x轴从小到大,y轴从大到小排序,是不是等价于求y这一维度上的LIS。然后我们很快能处理出LIS,我们同时还需要记录一下,y[i]位于LIS中的长度len[i]。然后我们拿一个dpInv数组记录一下,dpInv[i]:长度为i的时...
阅读(16) 评论(0)

Gym 101246.G - Revolutionary Roads(思维)

>题意:给你一张有向图,exactly将一条边变成双向边,问你改变后这个图中最大的强联通分量包含几个点,记录为w。输出w,并统计出所有改变后最大强联通分量包含的顶点数等于w的边是哪些,输出出来。(vs≤1000,es≤20000vs\le1000,es\le20000)思路:   这种更改一条边,一个点的题,往往是枚举边,那么枚举边以后,我们考虑对于u->v这条边,把它改为双向边。   然后我们...
阅读(9) 评论(0)

Gym 101246.C - Explode 'Em All (状压dp)

题意:给出一个n * m的图,“* ”表示这个地方需要炸掉,炸弹可以如果丢在(i,j)位置的话,那么可以炸掉第i行第j列的所有“* ”。问最少需要丢多少个炸弹可以使得所有“* ”被炸掉。(n,m≤25n,m\le25) 思路:   一开始显然,可以枚举列上放炸弹的情况,2252^{25},然后把不放炸弹的列异或起来,看看其中有几个1就说明,行上需要几个炸弹,然后答案就是max (rowcnt, c...
阅读(8) 评论(0)

Gym 101243.J - Architect of Your Own Fortune(有向图的二分图最大匹配)

题意:有n张种类A的车票,m张种类B的车票。(1≤n, m≤100)如果一张种类A的车票和一张种类B的车票满足,某一张前三个数字和另一张后三个数字的加和相同,那么即所求的车票。问最多能组成多少对,并输出他们的方案。 思路:就是个最大匹配有几个吧。满足条件的连边。注意对有向图的匈牙利算法的理解。求最大匹配的时候,是一边集体往另一边连边。输出方案的时候把两个匹配的点,再重新判断一下是哪两种车票的哪种组合...
阅读(30) 评论(0)

Gym 101243.I - Land Division Gym - 101243I(计算几何 切割凸包)

题意:给你一个有n条边的凸多边形,让你用一条线把他分成m多边形和k多边形,而且要这条线尽可能的短。n边形的顶点坐标按其在图上的顺时针方向给出。(2≤N,M,K≤100,−1000≤Xi,,Yi≤1000) 思路:分类讨论,点到点切,点到边切,边到边切,然后就是简单的计算几何入门计算了。注意。点到边的时候,可能是往左切出的m边形,也可能是往右切出的m变形。   此外边ab到边cd的最短距离是四个部分...
阅读(21) 评论(0)

Gym 101243.E - Cupcakes(思维题+正确性确切证明方式?)

题意:桌子上有K个蛋糕,有N个人排队吃蛋糕,其中N-1个人能吃的蛋糕个数为[1, ai]个,另一个吃的最多的人,他每次必吃ai个,如果轮到一个人时桌子前没蛋糕了,那么他要清理桌子,其他N-1个人都希望这个吃的最多的人清理桌子,问是否能使这个人清理桌子。第N个人吃完蛋糕后第一个人会继续去吃蛋糕,直到K = 0。 思路:   枚举轮数,最极限的情况应该是1e8/(1-1+1) = 1e8。然后考虑每轮...
阅读(25) 评论(0)

Gym 101243.C - Desktop(构造)

题意:用 2×2 的图标铺满 H×W 的桌面,要求可以重叠(后放入的图标可以部分遮盖原有图标),但每个图标必须至少露出面积为 2 ,同时要求图标的顶点必须落在整数坐标上。 思路:发现,这个图,在h为偶数的时候,可以通过(详见代码)的方式构造出答案。那么w为偶数的时候同理。可是我们要处理一个w和h均为奇数的情况,此时我们需要在h或者w的最后一行/列上铺一整条,然后就可以变成h或者w为偶数的情况了,就能...
阅读(29) 评论(0)

Gym 101164.K - Cutting (哈希+自然溢出)

题意:对于串 S1 和 S2,求一种将串 S1 任意分割为 3 个子串 A, B, C ,满足 A+B+C=S1,同时通过改变排序能构成 S2 串。串长5000. 思路:   枚举三段[0,i-1],[i,j-1],[j,len-1]。然后我们通过哈希检验即可。一开始采用的是longlong 和 mod。但是我们发现,会T。   可是如果我们改变思路,采用自然溢出,使用unsigned,采用自然...
阅读(18) 评论(0)

Gym 101164.I - Cubes(爆搜剪枝)

题意:给你一个数字n,问它最少可以由几个3的幂加和得到。输出数量及方案。(n≤44777444) 思路:大力感知了一下,感觉最多只有十几个所以暴力搜一搜,玄学剪枝最为致命,剪枝很关键。其他就。随便爆搜吧。#include using namespace std; int a[200], ans[200], mi[400]; int ans_num = 0x3f3f3f...
阅读(24) 评论(0)

Gym 101164.H - Pub crawl (凸包)

题意:给出若干个平面上的点,保证无三点共线,你每次都只能连上左边的点,问你最多能连几个点,给出连线顺序。(N≤5000) 思路:其实就是个不断做凸包的过程,把做过的点打个vis标记就行了。 关于复杂度的计算:《挑战》P261 3.6.4有个结论,凸包上的点是n√级别的,所以复杂度是O(n∗n/n√)=O(nn√)。#include using namespace s...
阅读(22) 评论(0)

Gym 101164.F - Letters (小模拟进制转换)

题意:有一个ABC⋯XYZAAABAC⋯AXAYAZ的序列,现在问你第n项是什么字符。例如第0项是A, 第25项是Z。 思路:A-Z:长度为1,有26个。AA-ZZ:长度为2,有26*26个。所以容易求出第n个字符所属于的那部分长度是len。然后会令group = delta/len,会得到你要找的数字属于哪个串,比如“AAA”或者是“DEF”。然后你发现就是一个你要找的那个串就是group = d...
阅读(14) 评论(0)

Gym 101164.C - Castle(kmp的next数组的应用)

题意:给出原串s,然后有3种操作,1、在s的末尾加上一个小写字母ch;2、把s的拷贝放入set;3、询问在set中的字符串是当前字符串s‘的后缀的个数。 思路:   我们考虑到kmp中,next[i]的意义是,i这个前缀串中。它自己的前缀和自己的后缀的最长公共部分。   首先毫无疑问我们要维护整个字符串的next数组。然后我们去dp,每次加入一个新的字符s[i]的时候,显然可以得知目前ans[i...
阅读(14) 评论(0)

2016-2017 ACM-ICPC (SEERC 2016) 【solved:7 / 11】

剩下的都没题解了。可做一点的怕是只有A和J了。 -update : 2017年10月9日21:43:43...
阅读(21) 评论(0)
74条 共4页1 2 3 4 下一页 尾页
    个人资料
    • 访问:6700次
    • 积分:779
    • 等级:
    • 排名:千里之外
    • 原创:74篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2条