自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Grit_ICPC的博客

凡物之骤为之而追成焉者,其器小也;物之一览而易尽者,其中无有也

  • 博客(39)
  • 资源 (4)
  • 收藏
  • 关注

原创 POJ 1364 King(差分约束)

题目大意:给定n个点,m行信息,接下来每行有4个变量a,b,str,c; a代表Sa,b为在a的基础上的移动量即Sa+b,str有两种分别为lt(<)和gt(>), c代表限制量。思路:此种为区间形式的差分约束,所以建图的时候注意后移(前移),然后建立源点。可用最短路判负权环,有不等式Sa+b-Sa>c(Sa+b-Sa>=c+1系统中都是有等号的,统一化成Sx<=Sy+c的形式即可(保证最短路可

2016-01-28 19:34:37 440

原创 POJ 3273 Monthly Expense (二分最值)

题目大意:在n个连续序列中找到m个分块使得,m块中的最大值(和的max)最小。思路:直接以max(a【i】)为下届,sum(a[0~n])为上界去二分。当分的组数大于m时,应该将当前的mid变大。#include<map>#include<queue>#include<cmath>#include<iostream>#include<cstdio>#include<stack>#incl

2016-01-28 11:37:36 426

原创 POJ 2983 Is the Information Reliable? (约束差分系统||SPFA判负权环)

题目大意:n个点,m个条信息。P 代表a在b北距离为c,V代表a,在b北至少1 问有没有冲突的信息。思路:根据a-b=c公式我们可以推出a-b<=c&&a-b>=-c,并且a-b>=1 那么对于第一个公式我们可以分别正向和逆向建图。后者单向建图。然后进行最短路如果出现负权环则代表,有冲突(可以找3组数据画出来看看)。如果没有冲突的话肯定整个图是平衡的正逆向和为0,有冲突则出现环。 那么我们可以

2016-01-27 16:36:39 441

原创 POJ 1201 Intervals

这道题也是很坑的- -!模拟队列不是RE就是TLE模拟栈才对。。 题目大意:有n个区间每个区间范围为a,b,在每个区间内任选c个数,是的最后的集合内没有重复元素的集合包含最少的元素。思路:通过这道题才算是明白怎么玩构造差分约束系统,在区间a,b的话我们如果直接add(a,b,c)的话很明显,当a=b时,没法去区分从当前点到a,还是b的问题。然后我们再看约束条件: 1、明显条件dis[b+1]-d

2016-01-27 10:55:26 448

原创 POJ 3159 Candies(差分约束系统)

题目大意:给n个同学分发糖,第一行为n,m,分别代表n个学生,m个关系, 下边的a,b,c代表b比a不能多与c个糖,即有关系b-a<=c(b<=a+c)与最短路的关系dis[b]>dis[a]+c相对,所以若求最大的差应该在满足所有b<=a+c的条件。所以找到最小最小的b即可。思路:本来是SPFA+手写队列TLE,然后看讨论用栈就行- -!(手写的时候应该是f1++,–f1)#include<ma

2016-01-26 21:37:17 429

原创 POJ 3254 Corn Fields (状压DP)

状压DP第一发!http://www.tuicool.com/articles/JVzMVj讲解较好的博客。#include<iostream>#include<cstdio>#include<cstring>#include<map>#include<queue>#include<cmath>#include<algorithm>#define MAX 1000#define in

2016-01-26 11:28:51 345

原创 POJ 3292 Semi-prime H-numbers(数筛)

题目大意:H-number指的是4*n+1的数(除4余1)。H-prime为没有H-number的因子的数,H-semi-prime为两个H-prime组成。求解1-h中的semi-prime个数。思路:我们可以像素数筛一样来晒数,起初都是H-prime所以他们的乘积都是semi-prime。然后标记,如果有标记的数那么一定是H-composites,标记为不是H-semi-prime和H-prim

2016-01-26 08:56:18 427

原创 Finding Nemo POJ 2049(三维BFS)

思路:从题目上看,这个收索不是个对于一个物体(门或者墙)都是有两个大的属性,即坐标和摆放的方向,所以可以用一个三维的数组来表示,前两维代表坐标,后一维表示方向,然后这个三维数组有0,1,2三个值分别表示空地,门,墙。在者注意坐标的问题,统一左下移动(或者右上)。方便的是人的坐标直接就是浮点转化为整形。我们同时可以将问题转化为人想要出来迷宫需要走过多少门。#include<cstdio>#inclu

2016-01-24 20:59:23 416

原创 POJ Kaka's Matrix Travels (最大费用最大流)

题目大意:有个n*n的矩阵每个位置上有个权值,可以有K次从左上角到右下角,但每经过一次,该位置上的权值变为0,求经过的路程中最大的路权值。思路:我们可以用费用流解决,将每个点拆成两个并在两点中建立两条边,原因是为了控制每个位置上的数只能够取一次我们建立流量为1,费用为该位置的权值,并且可以经过此点若干次,那么就是另外一条边的作用了,就是流量值为inf,费用为0,然后经过画图分析可得,我

2016-01-24 18:43:07 414

原创 POJ 2516 Minimum Cost (最小费用最大流)

题目大意:就是有n个商家然后n行是对应每个商家对k件物品的需求量。然后m行分别代表每个供应区可以提供k件物品的数量,下面是k个n*m的矩阵代表第k个物品,从j供应区运到i需求商的费用。思路:我们可以分k次求最小费用最大流。这题挺简单的就是源点连供应区,供应区连供应商,供应商连汇点。但是注意数组一定要开大!否则可能WA。#include#include#inclu

2016-01-24 11:27:04 491

原创 HDU 5610 Baby Ming and Weight lifting(贪心)

题目大衣:就是给定两个数a,b问能不能组成c,能就输出a+b数量的最小值否则就是Impossible思路:不知道枚举时必须是(tmp+t)*2==c最后两值同乘以2,要是(tmp+t)==c的话不对T_T.(求大神指教啊)#include#include#include#include#include#include#include#define inf 0x3f3f

2016-01-24 10:45:21 484

原创 Going Home POJ 2195 (最小费用最大流)

思路:最小费用最大流与最小割的区别就是有了一个变量记录费用的问题,并且在反向建图的时候费用为负值。在建好图之后不停的找最短路,知道到终点的时候不存在最短路时停止。求解最小费用最大流时,就是用伴随网络来更新,原理和最短路的方法更新最大流类似。边找最短路,边更新可行流。#include#include#include#include#include#include#defi

2016-01-22 19:36:31 503

原创 POJ 3436 ACM Computer Factory(拆点+前向星dinic)||(拆点+邻接矩阵dinic)||(不拆点+dinic))

题目大意:就是第一行两个数p,n分别代表电脑零件的个数,和有多少机器。接下来的n行每行2*p+1个数,第一个数为机器工作的效率,其余代表机器加工前和后电脑的变化,求机器一起工作的最大效率,并输出路径。思路:由于源点的流入和普通链接点的流入,可能会大于当前点的容量,因此拆点.那么,怎么再判断有多少个机器用到了呢,这就要原来机器的工作效率,和剩余网络,如果原来的工作效率大于剩余网络那么一定

2016-01-22 10:52:49 633

原创 POJ 1087 A Plug for UNIX(Dinic)

思路:设一个超源和超汇,分别连向用电器和插座,那么n个插座就要和汇点相连,所以汇点设的尽可能的大。m个用电器和插头,就要连在一起,且超源与用电器相连,(以上都是一一对应cap为1),最后适配器之间相连,因为适配器有无数个所以cap为inf;然后一边最大流即可。#include#include#include#include#include#include#include

2016-01-21 10:41:09 386

原创 POJ 3281 Dining (dinic+拆点)

题目大意: 有n头牛,并且分别有f,d种食物和饮品。接下来是n行每行前两个数f1,d1分别是代表当前事食物和饮品的编号。求最大可能让牛得到喜欢的套餐。思路:第一次才知道什么是拆点的问题,对于此题就是为了保证牛只吃一份套餐。然后是建图问题,我们可以让牛放在食物和饮料之间并将牛拆分,注意下标!。同时将Map[i][i+n]自己和自己相连。#include#includ

2016-01-13 21:18:57 396

原创 HDU 1494 跑跑卡丁车 (分段DP)

题目大意:注意题目的意思,当两个能量卡积满之后,两个能量卡是仍然存在的,只是当前不会产生新卡且当前的卡的能量清零。刚看到这题感觉挺棘手,分不同的段道,并且还会有能量的集聚。加上圈数。那么就可以用dp[i][j]表示第i个段道有能量j。以能量点或者段分析当前的状态转化,最后在换圈的时候进行将当前状态转换到下一状态就可以。#include#include#include#includ

2016-01-11 20:41:54 598

原创 HDU 2571 命运 (DP)

题目大意:从方格的最左上角开始走到方格的最右下角的过程中所能加得的最大和。思路:刚开始做的时候以找三者中最大的值为线索进行了暴搜,后来发现这么并不是最优的情况。 显然是DP啊,所以如果主要从其他的状态转化成当前的状态所以dp[i][j]=max(之前状态)。因为又有同列的最大值所以再找一次即可。#include #include#include#includeusing n

2016-01-11 09:11:34 453

原创 HDU 1160 FatMouse's Speed (LIS +路径标记)

思路:要求最长的序列肯定是LIS,并且路径也要标记下来。这里的路径标记和做AOE网络上标记路径类似都是通过在状态转化时,进行pre[i]=j;i的前边是j(下标)。然后通过一个循环将顺序转换过来,但是注意判断终止的条件,是i=pre[i],之后判断i是不是0。(同时这题的输入也很坑)。#include#include#include#include#include#inclu

2016-01-09 19:07:25 529

原创 图书管理系统(文件实现)

通过使用文件实现对数据的操作。其中文件的写和读分别放在构造和析构函数实现。   #include //bookbase.h#include#include#includeusing namespace std;class bookbase{public: string name; int state,number;};

2016-01-09 16:32:34 2981 1

原创 各种排序算法的比较

排序类型时间复杂度  空间复杂度 稳定性插入O(n^2) O(1)稳定希尔O(n^2)O(1)不稳定冒泡O(n^2)O(1)稳定(归冒直插)选择O(n^2)O(1)不稳定快排O(Nlongn)O(longn)不稳定归并最坏nlong2n O(long2n)稳定堆排最好=最坏nlongn O(

2016-01-08 11:01:59 565

原创 HDU 2844 Coins (多重背包)

题目大意:有n种商品,个人拥有m元钱。下一行中前n/2为n种物品的价钱后n/2为对应的物品数量。问不超过m元钱中买商品的钱数有多少种不同的。思路:就是多重背包,最后哈希统计一下数量就行。#include#include#include#include#include#include#include#include#include#define L1 lon

2016-01-08 10:09:41 464

原创 HDU 2191 悼念512汶川大地震遇难同胞――珍惜现在,感恩生活(多重背包)

思路:由于限定了每种商品的数量所以必定是多重背包。主要是多重背包转化为01背包的过程是将不能使用完全背包的转化为若干件01背包处理,因为任何一个数都可以用二进制表示,所以将某种商品的数量都拆分成某个01背包的形式并乘以系数。那么这样就可以表示某种物品的数量了。如 10 可以拆为 1 2 4 当10-7=3 #include#include#include#include#inc

2016-01-08 09:32:14 768

原创 HDU 1203 I NEED A OFFER! (01DP)

思路:这道题01是很明显的但是在初始化的时候,愣了,想和上一道DP题一样找到一个dp[]值来初始化为0,其余为inf但是,并找不到这么一个数。可以看出1-n最大的概率都为1,那么既然是求最小值,那么可以初始化为最大。现在有两种初始化方式:1.求最小直接初始化成最大2.求最小以某个dp[]值初始化为0(或据情况的最小值)其余初始化最大。#include#include#inclu

2016-01-07 21:54:12 342

原创 HDU 1114 Piggy-Bank(完全背包)

思路:PS:(完全背包每件商品无限,多重是每件是有限制的)比较裸的完全背包,但注意初始化的问题,dp[0]=0;#include#include#include#include#include#include#include#include#include#define L1 long long#define L2 int#define inf 0x3f3

2016-01-07 20:57:47 357

原创 HDU 2602 Bone Collector(01二维背包&一维背包&滚动数组优化二维背包的原理 )

01背包模板,注意一点当枚举背包容量的时候控制应该从V(总)~ >=0当满足j>=w[i]才进行比较否则直接进行从上一阶段推下来。#include#include#include#include#include#include#include#include#include#define L1 long long#define L2 int#define inf

2016-01-07 11:41:58 421

原创 HDU 1024 Max Sum Plus Plus (若干子区间求解最大值)

思路:对于此类型的题目,可以从以下几个方面分析,   1.以当前的数为切入点,只有两种情况(1)当前的数单独的新放到一个区间.(2)将其放入和j-1同个区间。那么我们可以用dp[i][j]表示在前j个数划分了i个区间。固有状态转移方程:dp[i][j]=max(dp[i-1][j-1],dp[i][j-1])+a[j];由于m的范围没有给出所以不可开dp[m][n]的数组。那么就需要有优化的方

2016-01-06 22:09:33 378

原创 C::B的自动换行问题

在Linux中打开codeblocks不能自动缩进,解决:安装codeblocks-contrib,在终端中输入:sudo apt-get install codeblocks-contrib

2016-01-06 09:57:00 1176

原创 HDU 1003 Max Sum (DP)

思路:此题在NYOJ做过一道类似的。当时那题不需要标记出左右的区间。抛开DP来讲,要找到最大和的sub序列应当是在加和到负数的时候就应当将和sum清零重新计算。DP的话只需要前缀和与a[i]自身比较就行。同时记录好前后位置。尤其在记录左端的位置,并不是有了a[i]>dp[i-1]+a[i]这个关系就要更新l的值。毕竟找到是max指,所以必须在更新max的时候将po赋值给l;#inc

2016-01-05 20:55:36 368

原创 HDU 2084 数塔(DP)

思路:根据题意可得要使每次疲劳最小必须是所选的两件物品差距不大,我们可以用dp[i][j]代表从i件物品中挑选出j双物品。那么易得dp[i][j]=min ( (a[i]-a[i-1]*(a[i]-a[i-1])+dp[i-2][j-1]),dp[i-1][j]   )  ;其中a[i]是拍完序的。因为是挑选最小dp[][]值所以必须初始dp[][]为inf,同事注意初始的细节问题j 

2016-01-05 19:19:09 481

原创 HDU 1506 Largest Rectangle in a Histogram(单调栈)

此题和POJ的feel good类似,只不过最后直接求解的是max=a[i]*(r[i]-l[i]+1);坑点是输入的n个数必须用I64,否则WA。#include#include#include#include#include#include#include#include#include#include#define L1 long long#define L

2016-01-05 14:12:02 446

原创 BZOJ 1113: Poi2008海报PLA(单调栈)

题目大意:用最少的纸张去覆盖矩形的楼。(此题与楼宽无关)思路和上述几题差别不大。此题主要是排序后找相同高度。最后用总数减去即可。#include#include#include#include#include#include#include#include#include#define L1 long long#define L2 __int64#define

2016-01-04 21:30:38 512

原创 POJ3250 Bad Hair Day(单调栈)

思路:和上题目类似,在最后一个数后设置一个哨兵即可。每次多计算一头牛,所以最后还要删去。#include#include#include#include#include#include#include#include#include#define L1 long long#define L2 __int64#define inf 0x3f3f3f3fusing

2016-01-04 20:53:10 379

原创 Problem 2163 多米诺骨牌(单调栈)

思路:单纯的暴力肯定是超时,当我们统计某一个位置能有多少骨牌倒下的时候,必然是统计到tmp.x+tmp.h#include#include#include#include#include#include#include#include#include#define L1 long long#define L2 __int64#define inf 0x3f

2016-01-04 20:23:28 1542

原创 POJ 2796 Feel Good (单调栈)

思路:可以分两步来求得每个数的l[]和r[]。且注意在且l[]的时候应从前向后跑,因为模拟一下可以发现,可以利用之前求得的结果,进行跨越式的比较。同理求r[]从后向前。且注意每次和当前相比较的数是上一层的l[]的值而不是上一个,所以在更新当前数值的时候要为上一层的l[]。#include#include#include#include#include#include#inc

2016-01-04 13:40:12 356

原创 SDUT 2254 字母螺旋方阵(递归)

与之前做过的螺旋矩阵不同之处在于,n*m的矩阵,并且是在A-Z之间不停循环的问题。注意控制好边界如递归条件一直在l#include #include #include#includeusing namespace std;int cnt;int a[1100][1100];int n,m;void so(int up,int down,int l,int r,int s,i

2016-01-03 09:51:23 1042

原创 矩阵的旋转 2559 SDUT

#include#include#include#include#include#include#include#include#define L1 long long#define L2 __int64#define inf 0x3f3f3f3fusing namespace std;const int m1=1001000;const int m2=1010;int

2016-01-02 18:25:40 518

原创 01 Matrix 杭电2015年12月校赛F (二维DP)

思路:首先计算出,每个点的DP值,而位置上的DP肯定与当前点的左上,上,左三个位置的DP值有关,且必须取三者中值最小的。然后再如何确定每个k*k的矩阵有多少个呢?我们在计算每个DP[][]值的时候可以将其值共有多少记录下来。并且注意到在如果为4*4的矩阵里边必定有一个3*3的矩阵。并且在4*4的矩阵中的这个3*3的矩阵没有被累加过,因为是以当前组成4*4的矩阵右下角开始扩展到。#inc

2016-01-02 16:10:00 358

原创 Codeforces 611C:New Year and Domino 二维前缀和

CF上10^8并不会超时(TL为1S)题目大意:在给定的n,m的矩阵中问在以l1,r1,l2,r2为边界的矩阵1*2的骨牌有多少种不同的放法。思路:看了题解才知道这是一种二维前缀和- -。放骨牌的话只有两种放法横着和竖着。那么可以设两个二维数组分别装横与竖着的前缀数组。然后再枚举两个符合的区间。#include#include#include#include#inc

2016-01-02 14:04:13 1066

原创 codefoeces B 397 - On Corruption and Numbers

题目大意:在给定的区间【l,r】中能不能选出若干数(同一个数使用的次数不限)使得组成数n,每个数使用的次数不限。思路:这道题只需要判断一下n是不是在能组成区间的范围内即可。所以可以将使用的最大数量的钱和最少数量的钱算出。那么就得到一个可以凑出钱数的区间[mi*l,mi*r]。(注意再算使用最少数量的钱数时如果能r能被n整除则为n/r,否则为n/r+1 如 7 3 4最少要2个 )#

2016-01-02 11:03:07 393

orecal考试试题

Orecal的JAVA证书考试原题,需要的同志建议看一下!!

2018-11-03

rar密码破解

密码破解

2017-06-23

根据浏览器宽度调整布局

根据浏览器宽度调整布局

2016-04-13

压缩录频软件

录频软件,简单易操作,画质较好,方便快捷

2015-12-29

空空如也

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

TA关注的人

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