ICPC
zephyr_pro
人所有的愤怒全部来自自己的无知。
展开
-
H - transaction transaction transaction
vj地址:https://vjudge.net/contest/184664#problem/H; #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int maxn = 2原创 2017-09-13 20:41:38 · 260 阅读 · 0 评论 -
Pangu and Stones HihoCoder - 1636[区间dp]
题意:有n个数字,每一次只能合并最少l个最多r个连续的数字,合并的代价为他们的和,询问最小代价把他们合并成一堆,如果不能合并成一堆输出0。 总结:比赛的时候只是想到了一点点区间dp,但是dp的含义没有完全想明白,导致转移方程写不出来,然后卡到了最后,后来看了一下题解dp的含义顿悟了一点点,区间dp接触的还是太少了。 题解:区间dp。 我们规定dp[i][i+d][k]dp[i][i + d][...原创 2018-11-07 10:49:34 · 153 阅读 · 0 评论 -
D - Domination ZOJ - 3822[概率dp]
题意:问期望多少天能把一个n*m的棋盘放成每一行每一列都至少有一个棋子的样子,一天只能放一个。 题解:动态规划,可以考虑dp[i][j][k]dp[i][j][k]dp[i][j][k]为i天放了i行和j列的概率,然后可以通过当前状态可以转移到下一天的概率。 如使i+1i+1i+1天 : 占i行和j列 占i+1行和j+1列 占i行j+1列 占i+1行j列 具体转移见代码。 收获:概率不是平...原创 2018-10-26 19:58:12 · 175 阅读 · 0 评论 -
A - Palindrome HDU - 6230[马拉车+bit]
题意:给出一个字符串,询问有多少个双回文(形如-----i-----j-----)i,j为对称中心。 题解:可以使用马拉车算法预处理出每个字符为对称中心的回文串长度,然后通过树状数组维护下面的关系 i&lt;ji &lt; ji<j j−r(j)&lt;=ij - r(j) &lt;= ij−r(j)<=i i+r(i)&gt;=ji + r...原创 2018-10-26 18:23:57 · 314 阅读 · 1 评论 -
K - Known Notation ZOJ - 3829[贪心]
题意:给出一个字符串(只含有数字和乘号),以及两种操作,分别为: 向该字符串中插入一个字符(数字或者乘号) 交换字符串中任意两个字符 回答最少需要几次操作能把字符串变成一个合法的后缀表达式。 题解:我们首先考虑如果乘号放在最后肯定是没有问题的,无论怎样只要有足够多的数字乘号一定能够用完。同理数字放在最前面也是可以的。根据上述理论贪心即可,如果该字符是乘号,那么判断他前面的运算数字的个数(多了...原创 2018-10-26 18:08:47 · 174 阅读 · 0 评论 -
G - Gasoline Gym - 101908G[二分最大流]
题意:给出R个提供点,P个接收点,每个接收点都要接收满,还有一个运输的时间,问最小时间能够完成所有的运输。 题解:首先很容易想到费用流,当然T了O(V∗E∗f)O(V * E * f)O(V∗E∗f),比赛结束后听说是二分+最大流,一下就名白了,首先每次都必须要满流,所以我们只要限制时间即可,限制时间加边,跑最大流,如果最大流不是满流,那么就不满足,否则满足条件二分即可。 code:code:...原创 2018-10-10 16:19:13 · 320 阅读 · 0 评论 -
C - Mophues HDU - 4746 [莫比乌斯反演+分块加速+前缀和处理]
题意:定义一个数字为lucky时,当且仅当这个数字的质因数的个数<=p(输入的数字)时,问在a∈[1,n],b∈[1,m]a∈[1,n],b∈[1,m]a\in[1, n], b\in[1,m]有多少对(a,b)使得gcd(a,b)=k(a,b)使得gcd(a,b)=k(a,b)使得gcd(a, b) = k且kkk为lucky数字 题解: 我们设: f(d)=∑na=1∑mb=1...原创 2018-09-14 20:41:35 · 216 阅读 · 0 评论 -
ACM-ICPC 2018 南京赛区网络预赛 B. The writing on the wall
题意:求一个n*m的矩形中有多少个不含黑块的子矩形 题解:我们可以考虑一个矩形的子矩形的算法,考虑一个子矩形的宽为w高为h,那么含有(n−h)∗(m−w)(n−h)∗(m−w)(n - h) * (m - w)个这样的子矩形,然后我们看一下有黑色方块的矩形怎么寻找他的子矩形,首先我们先考虑当前列最大的高度为多少(这里我们设为h)在以当前点为右下角点的子矩形中有∑jk=1hk∑k=1jhk\s...原创 2018-09-03 20:58:39 · 223 阅读 · 0 评论 -
ACM-ICPC 2018 南京赛区网络预赛 E. AC Challenge
题意:有n个题,完成第i个题的前置技能是完成它要求的si个题,有点拓扑排序的味道 题解:显然贪心不对,由于n比较小(n<=20)可以考虑状压dp,压缩每个状态,然后通过题目中所给出的条件判断当前状态可以由哪个状态合法的转移过来 AC代码: #include <bits/stdc++.h> using namespace std; typedef long long ...原创 2018-09-03 20:48:58 · 183 阅读 · 0 评论 -
ACM-ICPC 2018 南京赛区网络预赛 L. Magical Girl Haze【最短路变式】
题意:询问从1-n的最短路,可以选择k条路把他的长度变为0 题解:大概是一个动态规划的思想,dis[i][j]dis[i][j]dis[i][j]表示从1到i删除了j条边后的距离,然后得到转移方程 1、dis[v][j]=dis[u][j]+cost,2、dis[v][j+1]=dis[u][j]1、dis[v][j]=dis[u][j]+cost,2、dis[v][j+1]=dis[u][...原创 2018-09-03 20:43:59 · 164 阅读 · 0 评论 -
Meeting HDU - 5521 (最短路 + 巧妙建图)
题意:存在有n个地方, 有两个人分别从1和n号地点出发,问在最短的时间里他们在哪个地点能能够相遇,如果有多个地点则输出多个节点。然后给了m个集合,每个集合中的所有地点之间距离为t。 题解:该题很容易想到最短路然后枚举所有可能相遇的点取max后取min,难点在于建图,如果暴力建图的话会出现n^2复杂度,所以我们把每个集合当成一个源点,源点到集合中点的距离为t,集合中点到该源点的距离为0,这样建...原创 2018-07-28 11:23:12 · 256 阅读 · 0 评论 -
hdu-5514 Frogs(容斥+数论)
题意:给出序号为[0, m -1]的石头,以及n个青蛙能每次跳的步长,可以在石头上循环跳,问所有青蛙能够到达的所有石头的序号相加。 题解:很容易发现每个青蛙的跳的石头为gcd(ai, m)的倍数(拓展欧几里得),求这些石头的编号和也是一个等差数列的求和公式(代码中的sum函数),然后发现很多石头会被多次跳到以及多次相加,因此我们要把多次跳的石头容斥掉,我处理了所有a和m的gcd后把互质的所有...原创 2018-07-28 08:28:58 · 318 阅读 · 0 评论 -
hdu-6315 Naive Operations(线段树区间更新+剪枝单点更新)
题意:给两个数组a和b,a全部初始化为0, b初始化为一个序列并且不可改变,存在两种操作: 1、(add l r)为a在[l, r]区间里所有的数字+1 2、(query a b)询问∑⌊ai/bi⌋(i = l, l + 1, …., r - 1, r); 题解:首先可以确定的是一个线段树区间更新的题,然后就是我们想什么时候⌊ai/bi⌋会+1,那么就是ai = n*bi的时候⌊ai/...原创 2018-07-28 08:17:42 · 167 阅读 · 0 评论 -
UVALive - 8513
题意:给定n个a和n个b,问最多有多少对(a, b)使得 a+b>=k 才开始认为是网络流,二分图匹配之类的题,但是数据量太大,二分图匹配的话必然超时,网络流朴素建图边超过2e5^2,也必然超时,考虑能不能技巧建图,发现走不通,于是想到可以二分一下找一找。 r = n; 证明:如果a,b有序,那么如果ai与bj可以配对,那么ai…a(i + r - j)都可以进行配对,此时 i跳到i+...原创 2018-06-01 11:57:45 · 770 阅读 · 2 评论 -
B - A Corrupt Mayor's Performance Art HDU - 5023
题意:一组数列,有区间修改和区间询问两种操作 算法:线段树+状态压缩+区间更新 很明显区间更新的线段树,每次询问的不是颜色的个数,而是有哪些颜色,所以如何记录颜色就成了问题,首先确定的是颜色的种类数比较小,我开始想到的是每一个节点开一个30的bool数组但是担心会爆内存,实际上也不好实现,所以另外寻找了状态压缩的方法,把三十个颜色状态压缩成一个long long的数,因为 2 ^ 30 = 1...原创 2018-05-31 21:06:17 · 223 阅读 · 0 评论 -
2017 ICPC 沈阳赛 E。Number
暴力过不了,使用矩阵快速幂,lg(n),重点在于看下快速幂的算法, n>>=1和n/=2的效果相同。原创 2017-09-13 17:41:15 · 479 阅读 · 0 评论 -
B - Maximum Subarrays Kattis - maximumsubarrays[动态规划]
题意:给出一个数列,需要找出k个连续字段,让他们的和最大。 题解:动态规划,首先可以假设dp[i][j]dp[i][j]dp[i][j]为加上第j个数字分成i段的最大值,然后存在转移方程 dp[i][j]=max(dp[i][j−1]+a[j],max(dp[i−1][1],dp[i−1][2],…,dp[i−1][j−1])+a[j])dp[i][j] = max(dp[i][j - 1] +...原创 2018-11-14 16:31:41 · 852 阅读 · 0 评论