基础
文章平均质量分 69
bit_line
NOne
展开
-
toj1746How Many Sums
zheh#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;class BigNum;istream& operator>>(istream&原创 2014-07-26 09:23:48 · 697 阅读 · 0 评论 -
【线性同余方程】toj2297&poj2115 C Looooops
题意:给出a,b,c,k,求x使得(a + x * c) % (2^k) = b.上述方程即:a + x * c ≡ b(mod (2^k))左边的a需要化掉,因此两边同减a得到:x * c ≡ b (mod (2 ^ k)) - a(这里有点滥用同余表示法的味道,望见谅)右边如果直接(b - a)(mod (2 ^ k))显然可能出现负值,等号就不满足了,为此加上(2 ^k)的若原创 2015-02-02 14:05:13 · 896 阅读 · 0 评论 -
【基础线段树】toj2762Balanced Lineup
题意:给N只金宝的长度,Q次查询,给出区间[A, B]上最大值和最小值之差。线段树入门.线段树比较灵活,写法都是随心而为,不必拘泥于实现,抓住其更本质的数据结构思想即可。//segment tree//all bounds are tight. for bound (A, B), it means [A, B]#include #include #include #incl原创 2015-02-04 15:10:43 · 579 阅读 · 0 评论 -
【基础线段树】hdu1166敌兵布阵
题意:给n个兵营的人数,有操作:Add i j: 给第i个兵营加j人Sub i j: 第i个兵营减j人Query i j: 查询第i个到第j个(区间[i,j])的总人数End: 退出操作.首先注意到Add和Sub是一样的,Sub i j我们可以用操作Add i -j等价替换掉。于是有两种操作:单点修改,区间查询。因此可以用树状数组简单实现。自然也可以用线段树。树状数组实现:原创 2015-02-04 15:40:45 · 565 阅读 · 0 评论 -
【瞎搞】toj3001
瞎搞瞎搞...题意不用说了是中文,但是文字编码是GB2312的,如果用一般浏览器默认的Unicode会乱码。妈蛋感觉不会做有木有-。-于是可以非常暴力地猜一猜。。。首先,显然由于x,y>=2,那么1一定不能被表示出来,也就是一定存在不能被表示出来的数。其次,我们对10以内的组合猜一猜,数的表示范围开大一点,随便开一个10086好了。然后我们检测1~10086可否被表示出来。表示的本原创 2015-02-03 18:58:52 · 615 阅读 · 0 评论 -
【线段树入门】poj3468A Simple Problem with Integers
题意很简单不介绍。这题下午写烦了,最后调试发现妈蛋,update中有个地方应该是right - mid想当然地写成了right - mid + 1,浪费好久时间。。。明天回家了,这应该是回家前的最后一题了~~~( ^_^ )/~~拜拜有一股清爽感在心间沸腾有木有!!!#include #include using std::min;using std::max;typ原创 2015-02-04 18:34:39 · 554 阅读 · 0 评论 -
[toj1003]Transportation
题意:给定0~m共m+1个城市(其中0为A城,m为B城),一列火车,容量一定。另有一些订单,每笔订单有起点,终点和人数。对于每笔订单,或者接收所有人,或者不接这笔订单,每笔收益为人数乘以乘车距离(如2 5 3,收益为3*(5-2)=9)。对于给定的block,求最大收益。开始时没怎么想。但是数据非常小,订单数量不超过22,m不大于7.感觉暴搜可做,总共状态数是2^22≈400万,是可以接受的。原创 2014-12-11 21:36:58 · 824 阅读 · 0 评论 -
【每日一水】[toj1093]Argus
1093. ArgusTime Limit: 0.5 Seconds Memory Limit:65536KTotal Runs: 803 Accepted Runs:394A data stream is a real-time, continuous, ordered sequence of items. Some examples原创 2014-12-14 13:23:15 · 830 阅读 · 0 评论 -
[poj3692][匈牙利算法]
题意:给G个女孩和B个男孩的关系,要选出一个最大集合,集合中两两都认识。注意数据范围是男女各两百,所以点有400.。。建反图,那么求出的子集就需要两两都不认识,从而等价于求最大独立集的大小。根据定理|最大独立集合|+|最小顶点覆盖|=|V|,又可转化为求最小顶点覆盖,从而求出完美匹配数即可,用匈牙利算法~顺便给自己留个板子代码#include #include #include原创 2014-12-14 22:08:32 · 627 阅读 · 0 评论 -
[toj1075]Stockbroker Grapevine
1075. Stockbroker GrapevineTime Limit: 1.0 Seconds Memory Limit:65536KTotal Runs: 831 Accepted Runs:515Stockbrokers are known to overreact to rumours. You have been contr原创 2014-12-12 13:28:56 · 551 阅读 · 0 评论 -
[toj1050]【二分图匹配】Courses
1050. CoursesTime Limit: 5.0 Seconds Memory Limit:65536KTotal Runs: 1390 Accepted Runs:646Consider a group of N students and P courses. Each student visits zero, one or m原创 2014-12-15 09:21:16 · 629 阅读 · 0 评论 -
[poj3735 Training little cat]【矩阵快速幂】
好题重温。 唯一的坑点是k可能小于0…#include <cstdio>#include <cstring>#include <algorithm>const int MAX = 101;typedef long long ll;struct mat { ll a[MAX][MAX]; mat() { memset(a, 0, sizeof(a)); }原创 2015-04-10 20:11:19 · 630 阅读 · 0 评论 -
[BFS]HDU1044 Collect More Jewels
HDU1044 Collect More Jewels代码数学公式UML 图离线写博客浏览器兼容HDU1044 Collect More Jewels两遍BFS,首先需要记录一下每个点到DEST的距离,然后就可以搜了。当然也可以直接A*搞一下,估值函数设为f(x)={dis<代码:#include <cstdio>#include <cstring>#include <cctype>原创 2015-04-24 14:05:32 · 948 阅读 · 0 评论 -
【小结】最小费用流&最大权闭合图
最小费用流就是在保证流量FF的前提下,求解最少花费是多少的问题O_O{O\_O}建图: 每条边在最大流基础上(to指向点,cap容量,rev反向边)\left(to指向点,cap容量,rev反向边\right),增加一个费用(cost)\left(cost\right)求解方法: 在最大流中,是按照任意可行路径,也就是残余网络中的可增广路径,向网络中注入流量,从而在汇点获得相应流量的策略进行,直原创 2015-08-05 16:47:23 · 865 阅读 · 0 评论 -
【状压BFS】hihocoder1233(2015 Beijing Regional Online Problem G)
给几个大小不同的箱子,移来移去移成每个位置只有一个,并且箱子从小到大排好的样纸。状态显然可以压缩,并且只要我们保证在同一位置的所有箱子都满足题意,也就是上面小下面大,那么对于任何一个箱子,我们只要知道它所在位置即可。比赛时非常傻逼地用7个整数表示一个状态,并且用setset判重,复杂度直接多了一个loglog,跑得极慢,于是又想打表,大概半小时后发现一个bugbug。。。于是改掉又重新打。。。当原创 2015-09-28 10:55:50 · 695 阅读 · 0 评论 -
[toj4087]m个不同的箱子放n种不同的球
首先有个三角关系:11 11 3 11 7 5 11 15 17 7 1..递推为原创 2015-01-30 16:09:57 · 809 阅读 · 0 评论 -
【状压dp】poj2978 Colored stones
题意:给一个序列,每个数字代表一种颜色,表示一串彩色的石头,现在要从中拿走一些,使得剩下的石头中颜色相同的都连在一起,也就是颜色相同的部分中间不能插入其他颜色的石头。石头数m(原题是k) 我们从“拿走一些石头,使得剩下的石头数最多”逆向考虑。或者说,从原数字序列中选出一个子序列,使得子序列长度最长,并且满足上面的颜色要求。可以定义:dp[i][j][k]表示前i个,以颜色j结尾,已经选取的原创 2015-01-30 16:05:29 · 954 阅读 · 0 评论 -
toj2861_Divisors_线性时间内计算n前约数的总和
/C++long long int a[10]={0,1,3,5,8,10};long long int f(long long int m){ if (m<=5) return a[m]; long long sum = 0; long long int i; for (i = 1; i*i <= m; ++i) { sum += m/原创 2014-07-27 21:57:11 · 985 阅读 · 0 评论 -
poj3233Matrix Power Series矩阵快速幂
/* * 思路:这题数据k<10^9,很显然需要O(log n)的算法,自然就是矩阵 * 快速幂.矩阵快速幂和快速幂差不多就是求矩阵A的k次方时,每次折半 * 类似于二分的思想,比如要求A的100次方,我们先求出A的50次方, * 然后用得到的结果平方就好了.试想如果要算16次方,每次折半,我们 * 只需要做4次矩阵乘法,但是如果采用朴素的连乘则需要15次,效率对比 * 可想而知.原创 2014-07-28 18:00:14 · 873 阅读 · 0 评论 -
[简单dfs]poj1321棋盘问题
简单的dfs,开一个数组col[MAX]标记某一列是否已经被占用即可.搜索时,依次尝试当前行原创 2014-07-28 18:53:26 · 874 阅读 · 0 评论 -
位运算技巧
由于位运算是在二进制下进行的,所以他要比普通的加减乘除更快左移一位相当于乘2右移一位相当于整除2和1相与相当于模2 (判奇偶)小技巧:遍历用2进制数s表示的集合的所有子集时,for (i=s; i!=0; i=(i-1&s))即可原创 2014-08-04 09:36:44 · 858 阅读 · 0 评论 -
[经典DFS]poj1011Sticks
这题是我遇到的最卡剪枝的题了.很显然的dfs,代码原创 2014-08-04 20:36:34 · 786 阅读 · 0 评论 -
toj3259[Mysterious Numbers]埃式筛法
3259. Mysterious NumberTime Limit: 1.0 Seconds Memory Limit:65536KTotal Runs: 1267 Accepted Runs:400Mysterious Number refers to a number which can be divisible by the numbe原创 2014-08-05 09:10:11 · 842 阅读 · 0 评论 -
[DFS][toj1009Sticks]
不坑爹,更坑爹.详见http://blog.csdn.net/bit_line/article/details/38374445这里修改的部分是处理poj1011原创 2014-08-04 21:07:39 · 686 阅读 · 0 评论 -
51416/D辛苦屎了,骗纸呐o o
#include #include #include #include #include #include using namespace std;const int INF = 0xfffffff;const int MAX = 64;int a[MAX][MAX];int n, m, ans;int forwd[4][3][2] = {-3,0, -2,0, -1,0,原创 2014-08-04 16:03:02 · 661 阅读 · 0 评论 -
[poj1324]状态压缩+BFS
这题昨天开始做的...因为从来没有做过状态压缩.这是第一次接触.原创 2014-08-06 10:03:24 · 658 阅读 · 0 评论 -
[新手入门][拓扑排序]
( ⊙ o ⊙ )!O(∩_∩)O哈!原创 2014-08-06 21:08:11 · 788 阅读 · 0 评论 -
[toj4087]m个不同的箱子放n种不同的球
首先有个三角关系:11 11 3 11 7 5 11 15 17 7 1..递推为f[i][j] = j*f[i-1][j] + f[i-1][j-1]上述是第二类斯特灵数的地推关系第二类斯特灵数描述的问题类似于:m个相同的箱子放n种不同的球,那么分法如上述.如果箱子不同,那么先对箱子排列,所以答案为ans(n,m) = m! * f[n][m]而本题就原创 2014-08-13 11:08:06 · 949 阅读 · 0 评论 -
【稳定婚姻问题】hdu1522 Marriage is Stable
稳定婚姻描述的是一个非常有意思的问题,关于一个群体中婚姻的稳定性~ 具体可以搜索一下,这里不再介绍。本题就脱胎于稳定婚姻问题,给出n名男孩和n名女孩,每个男孩对n名女孩有一个“喜爱列表”,越喜欢的处于列表的越前面。要求找出一个稳定的婚姻关系,使得所有人的婚姻关系都稳定。所谓“稳定”,就是指:对于两对夫妻关系A-a, B-b,不应该存在A更喜欢b且b更喜欢A的情形,否则他们就会出轨离婚!解决原创 2015-01-27 17:36:13 · 884 阅读 · 0 评论 -
【稳定婚姻问题】poj3487 The Stable Marriage Problem
具体参见上篇博客。都是类似的问题,不过我发现这类问题好像输入格式的控制会稍微难一点。Gale-shapley的实现会相对简单很多。其中求loc部分其实也可以用map优化一下,否则我的实现是可能退化到O(n^3)的。当然这问题规模实在是太小了,所以也就不需要优化。。。#include #include #include #include #include #include原创 2015-01-27 18:18:42 · 789 阅读 · 0 评论 -
【康托展开+状压BFS】poj1077 Eight(八数码问题)
The Cantor Expassion is something that help us to solve some problem about the numbers arrange.Besides, it can help to compress state(encode&decode), so that we can use BFS/DFS to solve those proble原创 2015-01-29 16:56:29 · 869 阅读 · 0 评论 -
【随便做做】Codeforces#86 Problem C Double Happiness
静态数组内存是受不了的。但同学好机智,用vectorvector强行开150000000150000000的数组,水了过去。。。令f(x)f(x)表示范围[1,x][1,x]内满足题意的tt的个数,那么ans=f(r)−f(l−1)ans=f(r)-f(l-1)我们考虑打表求解,显然,不可以直接打表,所以我们考虑将33亿分段,每10000001000000分一段,于是总共需要预处理出300300个原创 2015-09-07 22:18:16 · 638 阅读 · 0 评论