自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

山外小楼夜听雨

老年选手瑟瑟发抖_(:з」∠)_

  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 [HDU 2608] 0 or 1 · 数学

对于窝这种数论蒟蒻来说还是有点思维量的。。。佣神:看到这种mod 2 的题目肯定一眼想到质数合数平方数啊 (跪烂。。。)orz:http://blog.csdn.net/xingyeyongheng/article/details/9887895#include #include #include #include #include using namespace std;

2015-06-30 16:55:28 550

原创 [HDU 4704] Sum · 费马小定理 & 快速幂

题意:给定n,设是将n分成k个数之和的方案数,求隔板原理:将n个物品分成k组,相当于在n-1个间隔中插入k-1个隔板,方案数为,所以等于,貌似是叫二项式定理来着?反正这个式子的值等于,所以就是要求的值。但是因为n非常大,所以用费马小定理降幂。科普:费马小定理:然后快速幂直接搞起。这题是多测!#include #include #include #include

2015-06-29 22:19:24 648

原创 [CF 338E] Optimize! · 线段树

这题纠结了整整一个晚上。。。我们把A中每个长度为len的区间称为G。首先我们可以知道的是,如果我们选择了A中的[i,i+len-1]这段区间去和B匹配,那么一定是B中最大的去匹配A中最小的,次大的匹配次小的,依次类推,就不给出证明了。所以我们原始的做法就是对于每个G排序后检验正确性,但是这样的复杂度大约是,根本不可做。。。然后我们就开始幻想啊,能不能一直维护一个有序序列之类的?但是区间

2015-06-28 22:20:17 775 1

原创 [BZOJ 3289] Mato的文件管理 · 莫队算法 & 树状数组

求不带修改的区间逆序对。莫队直接搞,每次转移是,所以总复杂度为.

2015-06-25 11:56:58 498

原创 [CF 86D] Powerful array · 莫队算法

莫队算法板子题,再打一遍增强记忆。1.记得处理询问中l==r的情况。2.注意long long今天才知道原来CF是架在Windows上的。。。#include #include #include #include #include #include using namespace std;#define ll long long#define sqr(x) ((ll

2015-06-23 19:53:06 722

原创 [BZOJ 2038] 2009国家集训队 小Z的袜子 · 莫队算法

今天看wzy大神的blog看见了莫队算法小结,心血来潮学了一下莫队算法的基础,没时间了啊还是打条模板题算了。 。。以前没学过莫队的时候听机房里的小伙伴说什么有个算法复杂度是,特别不理解,原来还真有这种算法。。。跪莫涛大神跪hzwer:我觉得这篇已经写得很好了   分块部分的思维值得研究#include #include #include #include #include u

2015-06-22 22:06:13 601

原创 [BZOJ 3295] CQOI 2011 动态逆序对 · 分块 & 逆序对

最优算法CDQ分治或树套树,并不会做。分块大法好!要求每次删除前的逆序对数,可以转化成求每次删除一个数后的逆序对数。删除之前的对数,减去与当前要删除的数相关的逆序对数,就是每次的答案。我们可以把原序列a[]分成个块,每个块有个数。然后维护一个b[],b[]中的每一个块都是一个单调递增的序列。当前要删除的数为x,所在的块是k,那我们分两种情况做:1.对于k号块,直接在

2015-06-21 22:01:48 916

原创 [BZOJ 4096] Usaco2013 dec Milk Scheduling · 贪心

因为总共有n头牛,n个时间,所以我们从后往前枚举时间i,然后枚举所有的牛j,在所有可以选的牛中选一个价值最大的。#include #include #include using namespace std;const int N=100005;int n,t[N],v[N],ans,ad;bool f[N];int main(){ scanf("%d",&n); for

2015-06-20 23:05:51 898

原创 [POJ 1804] Brainman · 逆序对

归并排序求逆序对数。http://blog.csdn.net/acdreamers/article/details/16849761#include #include #include #include using namespace std;const int N=10005;int T,n,a[N],ans,tmp[N];void merge_sort(int l,int

2015-06-20 21:04:03 522

原创 [BZOJ 2438] 中山市选2011 杀人游戏 · Tarjan

一开始想到用并查集直接求联通,但是这样貌似并不可行。。。每调查一个人,都会增加1/n的被杀概率,所以要尽量少调查人。如果我们调查了一个人,那么和他认识的人我们全都能知道,以此类推,向下的人都可以知道,所以我们只要求入度为0的点的个数,这些人我们只能通过直接询问他才能知道是不是杀手,另外的人都可以通过这些人知道。对于一个环里的人,我们只要知道一个点就能摸清所有点,所以先Tarjan缩环。

2015-06-19 15:22:31 588

原创 [BZOJ 1303] CQOI 2009 中位数图 · 数学

一个大于b的数和一个小于b的数可以互相抵消,所以我们用1和-1表示。从b向两边扩展,left[i]表示b左边抵消后有i个数比b小的可能数,right[i]表示b右边抵消后有i个数比b大的可能数。乘法原理得ans=sigma(left[i]*right[i]).#include #include #include #include using namespace std;cons

2015-06-19 10:18:30 1115

原创 [BZOJ 1179] Atm · 图的联通 & SPFA

Tarjan缩环,跑spfa最长路。#include #include #include using namespace std;const int N=500005*2;struct arr{ int node,nxt;}e1[N],e2[N];int h[N],head[N],tim,tot1,tot2,scc,dfn[N],low[N];int q[N],l,r,da

2015-06-18 20:25:17 609

原创 [HDU 3415] Max Sum of Max-K-sub-sequence · 单调队列

大概就是求一个环形序列里长度不超过k的最大子段和。因为是环形,所以我们可以把序列复制一遍。对于每个i,我们要求的就是一个j,使得i-j+1那怎么求呢?把前缀和处理出来,i~j的序列和就是s[i]-s[j-1],i是每次枚举的,已经确定,所以我们就是需要求最小的s[j-1]。我们可以用递增的单调队列来维护前缀和,队列中存的是下标。另外就是一些细节处理。#include #inc

2015-06-16 20:48:04 1166

原创 [BZOJ 2738] 矩阵乘法 · 分块

标算整体二分,然而窝太弱了并不会做。分块大法好:狠狠点我我们把n*n个数排序,然后从小到大插入矩阵,每次插n个,用前缀和维护每个子矩阵当前已经填了多少个数。查找的时候 对于每个询问,如果子矩阵里的数已经超过了k个,说明答案在当前插入的这n个数里,倒着查找即可。用链表维护询问,已经出解的直接跳过。因为每个询问最多会查n次,所以复杂度O(nq),然而如果用树状数组代替前缀和维护的话

2015-06-14 13:59:42 536

原创 填(wa)坑计划

好吧这些都是唔蒟蒻暂时没写出来又找不到错的错题。。。以后有心情再来填坑吧。。。BZOJ 3916#include #include #include #include #define N 2001000using namespace std;bool a,b,c;char s[N];int n,m;int main(){ int i; scanf

2015-06-13 12:25:15 620

原创 [BZOJ 2083] Poi 2010 Intelligence test · 二分

一开始以为是个神题后来发现是个大水题。。。next[i][j]表示数字i在原序列中出现第j次的位置,now用来记录对于当前的b[i],最小的合法位置是多少。每次二分更新now,如果now>n说明在原序列中没有合法的b[i]存在,直接退出。二分必须要手写,因为vector里用lower_bound返回的并不是下标值而是迭代器(具体是什么我也不清楚)。PS:机房小伙伴用倍增的方法写但是超时

2015-06-12 22:00:15 791

原创 [BZOJ 2654] tree · 二分答案

根据MST算法的性质,每次选权值最小的边,所以我们可以给白边加上或减去一个权值k,令白边被少选或者多选,二分k即可。PS:机房里大神突然讨论起一个好像很有道理但实际上并没用什么卵用的问题:如果当某一个权值有很多条白边和黑边,如果加上一个k的时候只选到了need-1条边,而加上k+1的时候会选到need+1条边,怎么办?   一开始好像觉得这个问题很神,但是突然发现很扯有没有啊!这个时候白边和黑

2015-06-11 21:12:57 835

原创 [Tyvj 1359] 收入计划 · 二分答案

比较经典的二分答案题。可行解一定是在最大的一次工资和工资总和这段区间里面,所以我们就对这个区间二分答案,然后扫一遍检验。#include #include #include #include using namespace std;const int N=100005;int n,m,data[N],l,r,mid,ans,Max,sum;bool check() {

2015-06-11 14:10:00 942

原创 [Vijos 1137] 组合数 · 数学

题目上的标签说的是容斥原理,但是窝怎么伪暴力就秒A了。。。把分子分母分别质因数分解,然后约掉重复的部分,最后统计。这题本来不准备写blog的,太水了,但学了一个log级别的分解质因数,顿时感觉太弱了。在欧拉筛法中,每个数只会被它最大的质因数筛去,所以我们用check[i]来表示i的最大的质因数,如果i是个质数那么check[i]=i,所以我们对于一个数t要分解质因数的时候,只要不停做t

2015-06-04 21:36:06 622

NOI2015试题

day1和day2的都在里面

2015-07-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除