acm
文章平均质量分 53
请叫我西木同学
这个作者很懒,什么都没留下…
展开
-
2014-2015 ACM-ICPC, Central Europe Regional Contest (CERC 14) [Gym-100543G]
2014-2015 ACM-ICPC, Central Europe Regional Contest (CERC 14) [Gym-100543G]最后一题,训练完看了别人的代码,发现是区间dp,dp的是时间区间,先要将时间离散化,然后是时间的区间的选择问题,当时就是不知道要怎么组合区间的选择,画图往贪心去想只能推出一个最少要攻击多少次的次数,没有想到可以用区间dp考虑这种麻烦选择。#inclu原创 2017-07-18 21:19:24 · 728 阅读 · 0 评论 -
给定n,求1/x + 1/y = 1/n (x<=y)的解数。(x、y、n均为正整数)
基本的思路首先化简可得 x+yx∗y=1n\frac{x+y}{x*y}=\frac{1}{n}关键一步令令 x=n+ax=n+a y=n+by=n+b这一步相当关键,整个题目的精髓所在。 因为x和y和n都是正整数,要想等式成立,x和y作为分母肯定都要大于n,不然等式成立不了代入原公式化简得 代入原公式化简得 n2=ab n^2=ab 然后就等价于求解n2n^2的约数原创 2018-03-22 21:15:07 · 3876 阅读 · 0 评论 -
java acm 中的 multiset
acm中multiset的用处multiset的就是在set中不去除重复的元素,对于acm某些题目要用到二分查找某个东西然后删除掉的功能的时候是非常有帮助的。举个例子,就类比于计算机操作系统中的内存分配的最佳适应算法,每次都要找到一个最佳的分区(刚好大于或等于)的空间来分配给新的任务。相当于一个贪心的过程,multiset自带的二分还有插入删除都是logn的,所以非常适合做这类题目。JAV...原创 2018-03-18 22:08:08 · 1282 阅读 · 1 评论 -
ZOJ 3981
公式是m-(t%m)如果t%m不等于0,如果m等于0了那么unhappy值也是0,刚好能转圈到那个位置 那么先把其他人的题目先转化成第一个人的,因为机器从第一个人走到第二个人的位置需要时间, 拿第一个样例来举例子,第二个人的1秒过题其实就相当于是第一个人的0秒过题 那么假设机器位置在第一个人的位置那里启动,那么先可以算出一个答案。然后机器沿着逆时针走的原创 2017-11-02 15:47:18 · 445 阅读 · 0 评论 -
HDU 6166 Senior Pan
最短路 集合论 二分思想原创 2017-08-23 17:37:26 · 262 阅读 · 0 评论 -
Admiral HDU - 6171
这题很像那道八数码的题目,可以把21个位置每个位置有6种数,那么总共有21的6次方种状态,那么是可以用一个longlong来表示状态,用set来判重的。但是这样还是不够快。我们可以利用A星算法来优化搜索过程A星算法的知识,A星算法中有两个重要的值,已走步数和到终点估计值,已走步数这个很容易得到,到终点的估计值这个我们可以估计每个不合法的点直接挪过去他该去的那一行该走的步数。估价值h(n)<=原创 2017-08-24 19:56:16 · 280 阅读 · 0 评论 -
2017"百度之星"程序设计大赛 - 初赛(A)1006 度度熊的01世界
按照题目要求判断联通块个数和被包围个数之间的关系来判断图形。用dfs来进行联通块染色判断。原创 2017-08-13 20:12:18 · 313 阅读 · 0 评论 -
hdu 6150
图论原创 2017-08-20 20:03:42 · 395 阅读 · 0 评论 -
HDU - 6156 数位dp求k进制下回文串的个数
用数位DP求k进制的回文串个数原创 2017-08-20 17:34:38 · 547 阅读 · 0 评论 -
2017"百度之星"程序设计大赛 - 初赛(B)1006 小小粉丝度度熊
这题的区间因为有重叠,先考虑把重叠无用的区间去掉,考虑怎么去掉。如图,红色那种区间是完全没有用的,按区间左端点从小到大排序之后,如果一个区间的右端点,比上一个有效区间的右端点还要小的话,那么就是无用的了,应该要删掉这个区间。这个操作用set来实现很方便。然后考虑签到次数,这个条件怎么用,考虑到区间的价值都是正的,满足递增性,那么可以用尺取的方法来实现。如果签到次数有剩余,那么就尽量往右包括原创 2017-08-13 18:52:43 · 269 阅读 · 0 评论 -
hdu6071 2017hdu多校第四场
这道题题意也是很简单,给出一个4个点的无向图,组成了一个环路 从2点出发,随便跑,然后再从2点结束,问怎么个跑法让距离总和在超过k的前提下最短。 一步一步来想这道题,瞎几把暴力深搜可以出答案啊。 当然复杂度很高,那加个记忆化搜索,dp[4][k+30000],dp[i][j]表示的是从2开始出发来到i那个点,距离有没有距离为j的走法,有就true,没有就false,当深搜的时候遇到已经tr原创 2017-08-04 20:54:52 · 272 阅读 · 0 评论 -
[hdu6070] 2017hdu多校第四场
这道题是跟code force 834D很相像的一道题,题意说的是要求区间里面不同数的个数除区间长度的最小值,首先先想到一个公式size(l,r)r−l+1\frac{size(l,r)}{r-l+1},size(l,r)指的是l到r区间里有多少个不同的数。我们可以枚举每个数,对于每个数来说,如果以这个数作为新的右端点,那么左端点到上一次出现这个数之前的区间,都能享受到这个数作为一个新的贡献。也就是原创 2017-08-04 17:58:27 · 329 阅读 · 0 评论 -
hdu[6147] Pokémon GO II
hdu[6147] Pokémon GO II ,百度之星复赛原创 2017-08-18 20:31:57 · 349 阅读 · 0 评论 -
hdu - 6136
HDU - 6136解法一 第一种解法比较直观,最初始状态环上有 nn个人,第一次淘汰发生必然是环上相邻的两个人相撞。注意到第一个被淘汰的人不会对后续过程有任何影响,如果我们能找出谁是第一个被淘汰的,直接把这个人从初始状态中删除,就能把问题变成一个只有 n−1n-1个人的子问题,这个子问题和原问题有相同的答案。 于是我们可以用一个堆维护环上所有相邻人相遇的时间,从中取出最小值,就能找到第一个被淘原创 2017-08-18 20:11:53 · 239 阅读 · 0 评论 -
HDU 6040 2017多校第一场
题意说的就是通过那个函数来产生随机数,读入的A,B,CA,B,C其实就是一个随机数的种子,用来产生n个数用,然后是读入m个询问,对于每个询问在n个数中求取第bi小的数。因为n可以去到1e71e7,想要直接通过nlognnlogn的排序来做是不可能的然后这题的询问数量比较少,如果能在o(n)o(n)的时间内得到元素的第kk小就是这题的突破口。官方题解 最慢的情况是 bb 的取值为 0, 1, 2,原创 2017-07-26 21:14:42 · 314 阅读 · 0 评论 -
Central Europe Regional Contest 2014 B [Gym - 100543B]
这题题意也很简单,就是在某个山坡pi,pi+1上沿着山坡往右往前看过去最先看到的是哪个山坡,题目按顺序给出了p1~pn个坐标。 当时做的时候不知道要怎么快速查询到那个第一个与直线pi,pi+1相交的山坡线段。因为山坡形状很不规则。没有规律来进行诸如二分啊,线段树这些可以logn时间的操作。 参考了一下大佬的题解,就跟他说的那样有道理,如果用上凸包,就可以把不规则的线段弄成一个凸包(只要上半部原创 2017-07-22 18:12:31 · 464 阅读 · 0 评论 -
Central Europe Regional Contest 2014 [Gym - 100543C]
这题的题意很简单,就是要把一个数化成大于等于2项的公差为1的等差数列,要求项数最少,当时都假设出首项跟项数用未知数代替,想着用解数学方程的想法看看能不能求出来,弄了几十分钟也没算出来。然后队友一个想法启发了我,就是项数不会超过n√\sqrt{n}左右的项,具体为什么可以从那个前n项和的式子中看出来的,然后虽然这题的n可以去到10的九次方,但是知道了这个复杂度的上限,枚举项数这个暴力算法也就出来了,之原创 2017-07-18 22:35:41 · 337 阅读 · 0 评论 -
GDCPC2018广东省赛C题
题目大概意思给出一棵树,树上的每个结点的值。 询问从结点a到b的路径上的值,对于值val来说,最大的异或和是多少这是一道经典可持久化字典树的题目#include<bits/stdc++.h>using namespace std;const int N=2e5+5,M=30;int ch[N*35][2],tot,num[N*32],a[N],T[N];...原创 2018-05-25 00:58:07 · 682 阅读 · 0 评论