随笔分类 -  算法笔记

摘要:还是五月湘潭赛的题目,当时就是因为我坑。。。连个银牌都没拿到,擦。这个题目枚举区间是不可能的,明显是要考虑每个数对全局的影响,即找到每个数最左和最右能满足是最大的位置 以及 最小的时候,相乘即为该数字影响的区间总数。当时想到的是用线段树,建树的时候求出最大和最小值,然后在每个数往里面搜索,比赛的时候... 阅读全文
posted @ 2014-08-31 08:56 KRisen 阅读(243) 评论(0) 推荐(0)
摘要:在一棵树上找影响最小的某个点,某个点的影响是等于其他点到他的距离*其他点的权值 的和我一开始也找不到什么好的方法,只能想到每个点暴力去判断,但是这样肯定会超时(10^5个点),又有点想用类似前缀和,但是这是在树上,不是很好搞不过最后还是得用到前缀和,先dfs1把从0号节点出发的整个值算出来,并且沿途... 阅读全文
posted @ 2014-07-30 10:02 KRisen 阅读(474) 评论(0) 推荐(1)
摘要:今天多校的一道题,哎,多校被中学生碾压了发现自己很怕敲贪心,这道题其实贪心特性相当明显,我看这个题算比较早,还在想各种递推或者dp那种后来还是聪哥马上反应过来了首先,对于任何的task,因为最后的money是 500*x+2*y,所以,在得到最多money方面,肯定是x的优先级高,x相同的时候再比较... 阅读全文
posted @ 2014-07-23 00:21 KRisen 阅读(255) 评论(0) 推荐(0)
摘要:给定n m kn和m为一个矩阵的行和列,都从1开始,矩阵的每个元素的值即为 i*j(行*列),求里面第k个数还想找什么规律,发现虽然矩阵里面很有规律,但是n 和m在不断变化 根本不好找其实元素从 1 到 n*m,直接二分,每次二分完后,枚举所有行,通过min(mid/i,m)可以马上得到该行小于等于... 阅读全文
posted @ 2014-07-18 12:05 KRisen 阅读(238) 评论(0) 推荐(0)
摘要:题意比较简单,给你n个项链碎片,每个碎片的两半各有一种颜色,最后要把这n个碎片串成一个项链,要求就是相邻碎片必须是同种颜色挨着。看了下碎片总共有1000个,颜色有50种,瞬间觉得普通方法是无法在可控时间内做出来的,因为碎片到底放哪里以及是正着放还是反着放都是不可控的。这个时候数学建模就真的好重要了,... 阅读全文
posted @ 2014-05-26 11:18 KRisen 阅读(176) 评论(0) 推荐(0)
摘要:今天比赛的时候拿到的第一道题,其实挺简单的,求两等差序列中相同元素的个数,我想了一下就觉得,只要找到了第一个相等的点,然后后面求最大公约数就可以直接得到结果了网上叫什么拓展欧几里得,我反正是按照我们的思路来的关键是如何找到第一个相等的点,因为首项和公差能达到 10^9,项数可以达到10^18,我觉得... 阅读全文
posted @ 2014-05-18 20:38 KRisen 阅读(303) 评论(0) 推荐(0)
摘要:好印象深刻的题,前天选拔赛给跪了。怪我这种关键题没敲出来。题意很简单,给你一串无规则的数列,再给个m值,求出满足 数列和>=m的长度最小的连续子串。。。确实一开始卡住了,因为看数据肯定是nlogn的算法才能过,我和聪哥坐在外面的楼梯上,想了各种方法,我就一直在想前缀和以及 先求出最长连续和 再两边删... 阅读全文
posted @ 2014-05-04 13:57 KRisen 阅读(182) 评论(0) 推荐(0)
摘要:还是聪哥给我讲的思路才知道的,起初我利用两两互质去求发现有问题,互质只是必要条件而非充分条件,后来还是用的标准思路即其实最终只要保留最大的素数的幂即可,其他包含该素数幂但指数低的都不用了,这样就能保证序列最小公倍数不变,同时,为了字典序最小,只需一点小小的处理。在处理的时候遇到些小问题,主要是没考虑到每个值得因子没有求尽。#include #include #include #include #define ll long longusing namespace std;ll num[550],ans[550],prime[550];int n;ll gcd(ll a,ll b){ if... 阅读全文
posted @ 2014-04-07 11:45 KRisen 阅读(175) 评论(0) 推荐(0)
摘要:http://acm.whu.edu.cn/land/problem/detail?problem_id=1546这个题目还是聪哥教的方法过的首先搜索是必须的,而且通过搜索来缩点,这些应该要想到,即把图上的起点和终点还有能量点进行标记,之后用bfs找到这些个点的最短路,最多只有12个点,这样对12个点进行状态压缩DP,状态压缩这部分不是很好写用dp[i][j]表示在状态i的情况下,此刻在j点落脚的最大能量数,则先枚举i再枚举j,再枚举k,k代表已经存在于i里面的点 每次从dp[i][k]过度到dp[i][j],从dp[i][k]+dis[k][j]+dis[j][m+1]#include #i 阅读全文
posted @ 2014-04-04 21:45 KRisen 阅读(170) 评论(0) 推荐(0)
摘要:昨天是我负责这个题目的,最后没搞出来,真的给队伍拖后腿了。当时都推出来了 我假设最后结果是取了m个物品,则我把这个m个物品按取的先后编号为 k1 k2 k3 k4...km则最终结果就是 (k1.a+k2.a+...km.a)-((m-1)*k1.b+(m-2)*k2.b+....+1*k(m-1).b+0*km.b);由此可见最终的结果必定是从n个石头中选出m个石头,而且这m个石头要按b值的升序来取,因为按上述式子,这m个石头的a值顺序不影响结果,但b值越小的放前面就使得结果越优,这里也算用了一下贪心思想吧,不过是显而易见的。然后当时聪哥就照着这个敲了一个贪心的,WA了。。。之后就肯定了绝对 阅读全文
posted @ 2014-03-31 15:53 KRisen 阅读(261) 评论(0) 推荐(0)
摘要:http://acm.whu.edu.cn/land/problem/detail?problem_id=1542今天做武大的网赛题,哎,还是不够努力啊,只搞出三个这个题目一看就是个最短路,但是题目数据量太大,n^2承受不起,而且如果只是个最短路,那题目花这么大力气叙述有些城市可以互相免费干嘛呢这个是聪哥发现的神奇的细节,题目里说It is guaranteed that there are no more 200 coalitions.暂且把这个称作空域,也就是说最终免费的城市都成了一个块,而不同的块只有不超过200个,聪哥当时是这么分析的,如果真是这样的话,那可以先用并查集把这200个块求 阅读全文
posted @ 2014-03-30 22:36 KRisen 阅读(292) 评论(0) 推荐(0)
摘要:Description Here is no naked girl nor naked runners, but a naked problem: you are to find the K-th smallest element in the set of all irreducible fractions , with 0#include using namespace std;int n,k;struct node{ int p,q; node operator+(const node &rhs) { node nt; nt.p=p+rhs... 阅读全文
posted @ 2014-03-27 17:45 KRisen 阅读(253) 评论(0) 推荐(0)
摘要:依然非常失望,我为什么现在还是那么弱,今天就做出了一道题,垫底。一个大家都看出来的C题,我居然没找到规律,想了一会儿就放弃了。A题是这样的,有n种珍珠,给出这n种珍珠各自的数目,再给出一个M,表示每M个不同珍珠组成一个项链。求问最多可以组成多少个这样的项链。一开始想到的就是贪心,发现如果按升序排序,再从前往后去贪心,样例都过不了,如果从后往前贪,可以过样例,而且感觉好像没有什么不妥,于是就造就了今天的一直WA的情况。这个题目不能用贪心,从前往后贪的时候就发现有问题,即,某个珍珠可以此时用完,但如果等下一次跟后面一个数用完的话,得到的总数将会更大。。。其实同理,由后往前贪也会出现这种情况,只是恰 阅读全文
posted @ 2014-03-22 20:11 KRisen 阅读(202) 评论(0) 推荐(0)
摘要:上次周赛碰到这个题目,居然都没思路,真是不应该啊,起码也应该想到枚举法。因为题目只允许每一row进行reverse操作,而每两列可以进行交换操作,所以首先把row的变化固定下来,即枚举第一列与第1-m列进行交换,之后逐个检查每一行第一列的状态 与 终态是否一致,不一致的话则该行就一定要进行reverse操作了,这样下来,每次枚举就把row的reverse变化给固定下来,接下来只要枚举 接下来的2-m行互相的列变换即可,只需一个嵌套循环即可,总的循环也只是三重 而n和m仅有100,规模承担的起一个简单的枚举暴力题 虽然说还是带有一点技巧的,怎么比赛的时候就没想出来呢!!!#include #in 阅读全文
posted @ 2014-03-11 23:40 KRisen 阅读(353) 评论(0) 推荐(0)
摘要:上次的ZJU月赛题,规则比较复杂,当时就连题意都没摸清楚,只觉得非常复杂比完后敲啊敲啊敲,连续WA啊,该反思下自己,没按照题意来设置条件,题目中说了 白球入袋并且。。。 给对手加分 ,白球未入袋并且。。。给对手加分,这个白球未入袋的情况也要加在判断条件里啊啊啊啊,还有就是有个地方要排序我居然忘了,好久都没发现。#include #include #include #include using namespace std;int n,m;int a[1010];int vis[10010];int ans[2];int hit[1010],c[1010];int main(){ while... 阅读全文
posted @ 2014-03-04 20:09 KRisen 阅读(286) 评论(0) 推荐(0)
摘要:题意很简单,在一串正整数序列中找一个连续的子序列使该序列和大于等于一个已知量S,但要求序列长度最短,通常喜欢暴力枚举这个题目跟大白书之前的一个题目很像,在数列A中 求 Ai-Aj最大 并且 i=S,则不断增加i,否则,就增加j。这样只是枚举了一下终点,而找到起点几乎是常数时间。#include #include #include using namespace std;int num[100010];int B[100010];int main(){ int n,s; while (scanf("%d%d",&n,&s)!=EOF) { for (int i 阅读全文
posted @ 2014-02-18 11:52 KRisen 阅读(274) 评论(0) 推荐(0)
摘要:正好训练赛来了一道最长递减序列问题,所以好好研究了一下最长递增序列问题。B -Testing the CATCHERTime Limit:1000MSMemory Limit:30000KB64bit IO Format:%I64d & %I64uSubmitStatusPracticePOJ 1887DescriptionA military contractor for the Department of Defense has just completed a series of preliminary tests for a new defensive missile call 阅读全文
posted @ 2013-08-03 15:02 KRisen 阅读(1580) 评论(0) 推荐(1)
摘要:Protecting the FlowersTime Limit:2000MSMemory Limit:65536KTotal Submissions:3204Accepted:1300DescriptionFarmer John went to cut some wood and leftN(2 ≤N≤ 100,000) cows eating the grass, as usual. When he returned, he found to his horror that the cluster of cows was in his garden eating his beautiful 阅读全文
posted @ 2013-07-23 16:25 KRisen 阅读(787) 评论(0) 推荐(0)
摘要:感觉有必要写一篇日志反省下一开始踌躇满志的ACM之路,如今走得越发有些艰难我在努力找节奏只是我是自己太笨了还是怎么回事,这两天的代码。。我不想吐槽了先是我敲得特别顺心的一个模拟题,用队列做的,就RE,我怎么也想不通哪里会爆栈,人家用JAVA写的几乎和我一样的队列模拟,就过了还有今天的BFS那个题,是我想简单了?大家都用的三维数组+哈希来做,我用我的二维数组广搜一下出问题了,但是我模拟了一下搜索过程,就是不知道怎么会有问题就连数据测试了那么久都没找出来,我一度认为是结构体里定义的数组有问题,难道结构体里面定义的数组会作为公共的?我还专门测试了一番,发现不是啊,人家是相互独立的,那我就只能让这题先 阅读全文
posted @ 2013-07-22 23:12 KRisen 阅读(143) 评论(0) 推荐(0)
摘要:三分搜索法 二分法作为分治中最常见的方法,适用于单调函数,逼近求解某点的值。但当函数是凸性函数时,二分法就无法适用,这时三分法就可以“大显身手”~~ 如图,类似二分的定义Left和Right,mid = (Left + Right) / 2,midmid = (mid + Right) / 2; 如果mid靠近极值点,则Right = midmid;否则(即midmid靠近极值点),则Left = mid;程序模版如下:double Calc(Type a){ /* 根据题目的意思计算 */}void Solve(void){ double Left, Right; double mid, m 阅读全文
posted @ 2013-01-24 11:41 KRisen 阅读(363) 评论(2) 推荐(0)