![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
优化
文章平均质量分 70
冷月残星
这个作者很懒,什么都没留下…
展开
-
【2016-大连赛区网络赛-H】优化(Function,hdu 5875)
http://www.cnblogs.com/wt20/p/5861613.html#include#define maxn 100010using namespace std;typedef long long ll;ll A[maxn];ll Next[maxn];ll N;int main(){ ll T; scanf("%I64d",&T)转载 2016-09-11 22:41:42 · 421 阅读 · 0 评论 -
置换,模拟,优化(HDU 5338,ZZX and Permutations)
理解置换的概念以及题意后,剩下的就是模拟了。花了挺长时间,主要是模拟有漏洞+想暴力过。希望自己能养成一个做题目的好习惯,虽然写完代码再来debug能比较稳定地查出错误,但是一旦出现了整体性的解法错误就得推倒重来,这会花掉非常多的时间,希望自己能权衡一下写代码和想明白之间的时间分配,任何基本功都是值得坚持训练的。代码#include#include#define原创 2017-06-07 10:27:08 · 286 阅读 · 0 评论 -
组合游戏(Circles Game,HDU 5299)
很容易想到这是一个组合游戏。每个子游戏都是一棵有根树上的游戏,最后的答案就是每个子游戏SG值的Nim和。有根树上的游戏就是给你一颗有根树,每次操作可以随便选取一个节点,并把这个节点所在的子树都删掉,不能操作者输。那怎么计算每棵树的SG值呢?一开始尝试用经典的递推法去求,但是发现树的结构种类太多,不可能穷举,每种结构的后续状态也非常多,也不可能用每个后续节点来转移,而且记录树的信息很多,没有原创 2017-05-12 21:51:20 · 960 阅读 · 0 评论 -
石子合并,四边形不等式优化(Buy Candy,玲珑杯 Round#6 A lonlife 1066)
转载了给自己看http://blog.csdn.net/u014800748/article/details/45750737http://www.cnblogs.com/gj-Acit/p/4493512.html我就说一下结论:正常的区间dp,时间复杂度为O(n^3),即枚举区间长度+枚举区间左边界+枚举分割点。下面优化到O(n^2)。对于下标a如果转载 2016-12-17 18:57:51 · 352 阅读 · 0 评论 -
数学(Anton and School,cf 734F)
首先要知道 (a&b)+(a|b)=a+b我也不知道怎么才能想到这个,只能说按位运算是有很多规律的,以后遇到类似的题可以尝试着去寻找一些规律。讲解:已知 b[i]=∑(a[i]&a[j]),(1 c[i]=∑(a[i]|a[j]),(1根据公式,易得 b[i]+c[i]=∑(a[i原创 2016-11-29 13:41:49 · 267 阅读 · 0 评论 -
区间DP(Sum游戏,uva 10891)
以前做过类似的题目,几乎就一样,所以很快就做出来了。dp[i][j]代表对区间[i,j]先出手的最优解,那么枚举所有决策,区间dp一下就ok了。因为先手取完后,就轮到后手取,后手取就相当于对取完后的状态的先手取。相减就是答案。代码#include#define maxn 110using namespace std;typedef long lon原创 2016-10-28 01:04:32 · 379 阅读 · 0 评论 -
部分枚举(遥远的银河,LA 3695)
一开始没看清题,以为不一定平行。。。然后就不会了。。。看了题解写了一遍,发现求某个值最好写在一个函数里,否则有时候代码中间要出一个特例就会很麻烦,甚至要goto。写在函数里一个return就ok了。然后枚举矩形时最好不要重边,否则一行点就会算两次。重边的情况特判输出就好了。看了大白书上的代码又模仿了一遍,发现模仿别人写代码很难学到什么东西。因为你会想当然的凭着记忆去写代原创 2016-10-27 15:54:24 · 408 阅读 · 0 评论 -
水题,高效,优化(开放式学分制,uva 11078)
就是本来是O(n^2),然后从后往前枚举,顺便维护后面的最小值,就可以优化成O(n)。然后自己写了一下输入输出还是快了一点的= =。20ms/50ms。一开始输入没考虑负数,All these integers haveabsolute values less than 150000.理解成了全是整数,事实上意思是绝对值小于150000.改了就过了。这种优化思路很常见,以前原创 2016-10-24 21:56:40 · 329 阅读 · 0 评论 -
水题,优化,高效(年龄排序,uva 11462)
做了那么多题,只遇到过2个专门卡空间的题目,一个是某次比赛的,题目是啥都忘掉了,还有一个就是这个水题了。但这题主要值得学习的地方在于输入输出的优化,真的没想到自己写的输入输出能快那么多。250ms与80ms的区别。不过大白书上说的也对,在确信I/O时间成为整个程序性能瓶颈之前,不要盲目优化。至今还没遇到卡手写输入输出的题目= =。isdigit函数在头文件cctype里。输入输出函原创 2016-10-24 21:25:54 · 268 阅读 · 0 评论 -
数论,优化,预处理(GCD 等于 XOR,uva 12716)
能想到O(n(logn)^2)就差不多了,至于O(nlogn)真的好难想到。。。只能说先暴力,然后再找规律不失为一个好方法吧。类似素数筛法的算法的复杂度都是O(nlogn)。因为n/2+n/3+...+n/n=n*(1/2+1/3+...+1/n)。根据调和级数的性质,1/2+1/3+...+1/n约等于lnn。所以复杂度为O(nlogn)。具体思路看紫书吧。预处理的技巧也非常转载 2016-09-27 20:10:12 · 454 阅读 · 0 评论 -
枚举,模拟(Too Much Money,cf Canada Cup 2016 E)
一开始想只用放某个大于等于所有硬币的硬币是最优。后来发现能出解但不一定是最优解。当时就是想,第一次取的硬币的大小一定是大于等于最大的硬币。那么我就枚举所有可能的取值,如果都可以被凑出来,那就说明无解。如果凑不出来了,那就取最小的那个。当时觉得如果第一步都能凑出来,那么以后也一定能凑出来。如果第一步都凑不出来,那也就没有以后了。事实上,如果你放大硬币,这个推论确实是对的。然而可能会存在某个小硬币原创 2016-10-23 10:46:19 · 459 阅读 · 0 评论 -
【2016-北京赛区网络赛-I】枚举,贪心,优先队列,优化(导弹,hihocoder 1391)
比赛时暴力枚举,TEL。然后尝试用滑动窗口优化,然后发现无法优化。赛后才知道可以用优先队列来优化。好可惜呀。代码#includeusing namespace std;typedef long long ll;ll TA,TB;ll x;ll N,M;struct dd{ ll t,v,d; ll st,ed; dd(ll a,原创 2016-09-27 12:37:25 · 380 阅读 · 0 评论 -
高效(防线,uva 1471)
参考 http://blog.csdn.net/L123012013048/article/details/45054857一开始用set弄,erase弄超时了。后半部分的方法十分不错。一方面思路用二分搜索代替了暴力枚举。另一方面,这种技巧有时能代替低效的set,大大提高效率,今后解题都可以参考。前面的滑窗也有许多小细节需要处理。#includeusi转载 2016-09-07 19:48:15 · 554 阅读 · 0 评论 -
优化(Just Finish it up,uva 11093)
#include#define maxn 100010using namespace std;typedef long long ll;ll jia[maxn];ll jian[maxn];ll N;inline ll next(ll now){ if(now==N) return 1; else return now+1;}inline ll run(l原创 2016-09-12 19:22:28 · 392 阅读 · 0 评论 -
统计,优化(Counting Intersections,HDU 5862)
类似的统计问题有很多,大概都是用某种循序枚举一个量,然后用数据结构(线段树或树状数组)或堆(set,map或优先队列)等来维护一些东西,然后快速计算出结果。想起了很久以前没做出来的一道题目:http://blog.csdn.net/xl2015190026/article/details/52679699具体就是横竖线分开考虑,对所有纵坐标离散化。对横线按最左端升序排序。对原创 2017-07-23 18:51:50 · 303 阅读 · 0 评论