自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SiriusRen的博客

是不是代码很短<( ̄︶ ̄)>

  • 博客(47)
  • 收藏
  • 关注

原创 POJ 3237 树链剖分+线段树

思路:树链剖分+线段树纯自己瞎想的 想到哪儿就写哪儿,,, 所以调了一下午+一晚上…..【尴尬】#include <cstdio>#include <cstring>#include <algorithm>#define N 22222using namespace std;char ch[11];int cnt=0,rec[N],top[N],fa[N],deep[N];in

2016-08-31 23:27:11 327

原创 SPOJ 375 树链剖分

思路: 链剖裸题……//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 22222char ch[11];int n,cases,root,tree[N*4],xx,yy,ans;int tot,first[N],next[N],v[N]

2016-08-31 14:54:46 326

原创 NOIP 2012 T2 国王游戏 (贪心+高精)

思路:呃呃网上那么多题解写得都不错…..就是高精 巨坑。。。这里展出的是任氏高精(纯自己yy滴)//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm> using namespace std;int n,temp[5555],len,A[5555],ans[5555],ans_max;char s[11]

2016-08-30 23:29:31 642

原创 POJ 1364 差分约束

思路: 把所有“>”变成“≥” 把所有“<”变成“≤”(加一减一就好了)然后我们发现:图不一定连通!!怎么办呢 对于每一个连通块SPFA就好了嘛……//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>#define N 111using namespace std

2016-08-30 14:52:18 547

原创 POJ 3657 并查集

题意: 思路:1.二分+线段树(但是会TLE 本地测没有任何问题,但是POJ上就是会挂……) 2.二分+并查集 我搞了一下午+一晚上才搞出来…………..(多半时间是在查错)首先 如果我们想知道这头奶牛之前的奶牛回答的是不是错的怎么办呢?把回答的A从大到小排个序。这里有几种错的方式:如果后面的区间完全被前面的区间包含,这是错的如果有两个不相交的区间的A是一样的,这也是错的(题目保证没有两

2016-08-30 11:20:54 732

原创 POJ 1990 线段树

题意: 思路: 线段树 (一棵就够啦 不像树状数组,还得用两棵)先对v从小到大排序。每回插入的时候当前的v是最大的,只需要统计它到各个坐标的距离就好了。里面存两个东西: 这个坐标左边的坐标个数和这个坐标左边的坐标之和。 ans_num表示这个坐标左边的坐标个数ans_num表示这个坐标左边的坐标之和tot_sum表示一共的坐标之和i表示当前处理的是第i头牛ans+=(cow[i].p

2016-08-30 11:03:45 677

原创 POJ 1275 差分约束

一堆化不等式,,,,,, 懒得写了。。。 请看mars_ch的blog…..戳戳戳戳戳还是她给我找的错……….//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int first[25],next[666],v[666],w[

2016-08-30 10:49:52 398

原创 TYVJ1415 差分约束

思路: i–>i+1连一条边权为0的边 i–>i-1连一条边权为-1的边 start-1 —>end 连一条边权为w的边求0—>n的最长路即可//By SiriusRen #include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 22

2016-08-29 16:40:56 804

原创 POJ 2502 Dijkstra OR spfa

思路:建完了图就是模板水题了 …..但是建图很坑。首先要把出发点向地铁站&终点 连一条边 地铁站之间要连无向边 地铁站向终点连一条边以上的边权要*0.006两个地铁站之间要连无向边 边权*0.0015//By SiriusRen#include <queue>#include <cmath>#include <cstdio>#include <cstring>#include <a

2016-08-29 10:39:09 702

原创 POJ 1062 Dijkstra

POJ少有的中文题 (很久之前就想写来着,但是原来不会啊…..) 思路: 首先我们可以新建一个点,从这个点向每个物品连一条权值为这个物品价值的边 (这样就把点权转化成了边权对吧……) 我们已经知道了一个物品的替代品是啥,那么就可以从每个替代品向这个物品连一条边权为替代品价值的边。 是不是很有道理。。。随后枚举区间 (区间里得包括酋长的地位)每次枚举从新建的点向一号点跑一遍Dijkst

2016-08-28 21:12:18 717

原创 POJ 2377 最大生成树

思路: 裸的最大生成树 不解释//By SiriusRen#include <cstdio>#include <algorithm>using namespace std;int n,m,ans=0,cnt=0,f[100050];struct Node{int x,y,w;}node[20050];int find(int x){return x==f[x]?x:f[x]=find

2016-08-28 16:59:58 684

原创 POJ 3048 线性筛法求素数

一些坑: 题目有多组数据!!! 有组数据如下: 1 1坑很深……//By SiriusRen#include <cstdio>#define N 200000using namespace std;int n,mindiv[200050],prime[100000],top=0,xx,rec;int main(){ for(int i=2;i<=N;i++) {

2016-08-28 16:40:51 857

原创 POJ 3269 中位数

题意: 思路: 这道题坑也不少。。 你准备好脑洞了么?首先 要认真审题 题目中有说:“没有两头牛的吃草位置是相邻的” 这句话让我们省了很多的事儿 (Discuss里有的大神就入了这个坑了)然后呢 自然想到了中位数 (不要问我怎么想到的)但是如果n为偶数怎么办呢 就取两个中间位置的数那段区间呗~本以为随便搞搞 n的取值 干啥 n为奇数 找到中间点

2016-08-28 13:59:24 1213

原创 POJ 3178 凸包+DP (巨坑)

题意: 思路: 这题巨坑!!! 这题巨坑!!! 这题巨坑!!! 这题巨坑!!! 这题巨坑!!!(而且没有题解…….5555555……) 只能照着自己想的写了……先求出来凸包 求凸包的方法呢:先找出来左下角的点 然后按照极角排序就OK了。 我用了两边sort sort(point+1,point+1+n,cmp); sort(point+2,point+1+n,cmp2);

2016-08-28 10:52:36 1416

原创 POJ 3188暴搜

题意: 思路: 裸的暴搜 …….但是要注意如果你不用所有的按键就能输出最优解的话一定要把所有的子木都安排到一个位置…. 我的一群PE就是这么来的……为什么写的人这么少…… // by SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int b,l,d,

2016-08-27 14:51:48 1048

原创 POJ 3044单调栈

题意: 思路: 单调栈// by SiriusRen#include <stack> #include <cstdio>using namespace std;stack<int>s;int n,w,ans=0,xx,yy;int main(){ scanf("%d%d",&n,&w); for(int i=1;i<=n;i++) { s

2016-08-27 12:51:10 588

原创 POJ 2375

思路: Tarjan缩点+一些特判//By SiriusRen#include <stack>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;stack<int>stk;int n,m,map[666][666],xx[]={1,-1,0,0}

2016-08-27 11:13:02 625

原创 POJ 2132 暴搜OR Floyd

题意: 给你一个邻接矩阵(n<=25)问所有1到2路径的gcd的lcm是多少。 一些经验(WA/TLE的经验): 1. 无脑暴搜是会TLE的……. 2. 关于精度 dyf神牛说了:long long就能过 (何必再写个高精呢)3. 是不是只有我智障把LCM写错了……思路:暴搜+剪枝 显然的剪枝:若已得的LCM能够除得尽当前解。剪掉。(gcd&lcm的性质) 然后就32ms

2016-08-26 22:12:48 553

原创 POJ 2190 模拟

按照题意模拟就好…注意“X”只能出现在最后一位。。。// by SiriusRen#include <cstdio>using namespace std;char s[15],mark;int main(){ scanf("%s",s+1); int temp=0; for(int i=10;i;i--){ if(s[11-i]=='X')s[11-

2016-08-26 20:10:24 710

原创 POJ 2189 枚举

题意: n头牛,p长度的道路,问至多包括c头牛的道路最长有多长。思路: 按照题意暴力就好…… 注意边界。// by SiriusRen#include <cstdio>#include <algorithm>using namespace std;int n,p,c,a[1005],vis[1005],ans=0,i,j;int main(){ scanf("%d%d%d",

2016-08-26 19:51:48 830

原创 POJ 2188线段树求逆序对

题目给的输入是大坑,算法倒是很简单…… 输入的是绳子的编号wire ID,而不是上(或下)挂钩对应下(或上)挂钩的编号。 所以要转换编号,转换成挂钩的顺序,然后再求逆序数。知道了这个以后直接乱搞就可以0msAC(这题可以用冒泡排序过的……) (n<=1000)// by SiriusRen#include <cstdio>#include <cstring>#include <algor

2016-08-26 19:34:04 746

原创 POJ 1952 DP

思路:这题要求最长下降子序列的长度和个数,我们可以增加 数组maxlen[size](记录当前第1个点到第i个点之间的最长下降序列长度) 和maxnum[size](记录1~i之间的最长下降序列个数 ) ,首先对于最长下降序列属于DP基础题,只要对每一个a[i]求出符合要求(a[i] < a[j])的max( maxlen[j] + 1)即可,主要难点在第二步求下降序列总数在序列中,如果maxlen

2016-08-26 16:12:47 418

原创 POJ 2184 DP

思路: f[j]表示当ts的和为j的时候tf的最大值。 这时候要分情况讨论: (我把状态平移了101000) 若ts[i]>=0倒序循环 否则正序 (防止ts被用了多次)f[101000]=0;for(int i=1;i<=n;i++) if(ts[i]>=0) for(int j=202000-ts[i];j>=0;j--) f[j+t

2016-08-26 13:37:48 329

原创 POJ 1951 模拟

思路: 坑爹模拟毁我一生 给两组数据: 输入: YOURE TRAVELING THROUGH ANOTHER DIMENSION A DIMENSION NOT OF SIGHT.输出: YR TVLNG H DMS F.注意“.”前面没有空格。。。 别问我怎么知道的……(。・・)ノ输入: MADAM I SAY I AM ADAM输出: MD SY注意 如果第一个单词前面有空格

2016-08-26 12:10:17 308

原创 POJ 1950暴搜

思路: 暴力枚举好了。。每回判断一下……用long long会超时 但是10^20会爆int。。。 不过仔细想一想 超过10^9的数肯定拼不回0啊…… 猥琐用int AC了// by SiriusRen#include <cstdio>#include <iostream>#include <algorithm>using namespace std;int n,s[16],c

2016-08-26 11:06:56 268

原创 POJ 1949 DP?

题意: 有n个家务,第i个家务需要一定时间来完成,并且第i个任务必须在它 “前面的” 某些任务完成之后才能开始。给你任务信息,问你最短需要多少时间来完成任务。输入: 第一行n个家务 第2~n+1行:每行第一个数字:完成这件家务所用的时间。 第二个数字:需要前面几个家务才能做这件。 随后是家务的编号思路:chore K (K > 1) can have only chores 1,.K-1

2016-08-26 10:15:03 230

原创 POJ 1948 DP

题意:给你n个木棍(n<=40)每个木棍长度<=40,问用上所有的木棍拼成的三角形的面积的最大值,并输出面积*100的值(不四舍五入) 如果没有解,输出-1。 思路: 背包判断可达性。 f[j][k]表示能拼成一个长度为j的边,一个长度为k的边。 所以 if(f[j][k]&&j+a[i]<=800&&k+a[i]<=800)

2016-08-26 09:51:56 214

原创 POJ 1945 暴搜+打表 (Or 暴搜+判重)

思路:呃呃 暴搜+打表 暴搜的程序::稳稳的TLE+MLE (但是我们可以用来打表) 然后我们就可以打表过了 hiahiahia可以证明最小的那个数不会超过200(怎么证明的我也不知道),然后就直接判重就好了 打表: 打表的程序:// by SiriusRen#include <queue>#include <cstdio>#include <algorithm>using

2016-08-25 23:08:21 3661

原创 POJ 1944 并查集(模拟)

思路: 肯定是要枚举断点的。。就看枚举完断点以后怎么处理了…… 1.用类似并查集的思想… f[x]=max(f[x],y)表示x和y相连(一定要注意取max,,,血的教训) 复杂度O(np) 2.猥琐思路 每回枚举完断点以后sort一遍 用左右指针扫一遍就OK.. 需要高超的卡时技巧就能过 复杂度:O(nplogp)// by SiriusRen#include <cstdio>#

2016-08-25 19:03:50 679

原创 POJ 3259 Wormholes SPFA判负环

思路:SPFA判负环 数组不要开太小……(后面附一组测试数组)// by SiriusRen#include <queue>#include <cstdio>#include <cstring>using namespace std;#define N 13555int n,cases,m,W,xx,yy,zz,tot,first[N],v[N],w[N],next[N],d[N],i

2016-08-07 12:36:18 293 1

原创 POJ 3268 Dijkstra+priority_queue或SPFA

思路:正向建边,一遍Dijkstra,反向建边,再一遍Dijkstra。ans加在一起输出最大值。// by SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 1005int n,m,X,tot=0,maxx=0,fi

2016-08-07 11:55:02 722

原创 POJ 3299 模拟

水题,但是WA了一屏………swap的时候忘了把读入的数字也swap了………………………..【尴尬】// by SiriusRen#include <cmath> #include <cstdio>#include <algorithm>using namespace std;char jya,jyb;double T,D,H,xx,yy,e,h;int main(){ whil

2016-08-07 11:20:45 185

原创 POJ 3342 树形DP+Hash

这是很久很久以前做的一道题,可惜当时WA了一页以后放弃了。 今天我又重新捡了起来。(哈哈1A了) 题意: 没有上司的舞会+判重思路: hash一下+树形DP 题目中给的人名hash到数字,再进行运算。 树形DP f[x][0]+=max(f[x.son][0],f[x.son][1]); f[x][1]+=f[x.son][0]; f[x][0]表示

2016-08-06 23:02:08 316

原创 POJ 3368 线段树

思路: 先统计在第i个位置当前数字已经出现的次数。 维护两个数组,一个是当前位置的数字最后一次出现的位置,另一个是当前位置的数字第一次出现的位置 查找的时候分为两种情况:没有和边界相交(意会意会)的数字中的最大值,注意右边界一定要不小于左边边界。统计一下和边界相交的数字出现的次数… 如果整个区间是一个数的话要特判。// by SiriusRen#include <cstdio>#i

2016-08-06 17:53:06 237

原创 POJ 3628 01背包 OR 状压

思路: 1.01背包 先找到所有奶牛身高和与B的差。 然后做一次01背包即可 01背包的容积和价格就是奶牛们身高。 最后差值一减输出结果就大功告成啦! 2. 搜索 这思路很明了吧。。。 搜索的确可以过… 3. 模拟! 0到1< < n 来一遍。(状压呗)01背包的:// by SiriusRen#include <cstdio>#include <algorithm>

2016-08-06 15:19:31 213

原创 POJ 3660 Floyd传递闭包

题意:牛有强弱,给出一些牛的强弱的胜负关系,问可以确定几头牛的排名。 思路: Floyd传递闭包 // by SiriusRen#include <bitset>#include <cstdio>using namespace std;#define f(x) for(int x=1;x<=n;x++)bitset<105>map[105];int n,m,jyx,jyy,an

2016-08-06 14:50:14 531

原创 POJ 2446 匈牙利算法

题意: 思路: 二分图匹配。。。// by SiriusRen#include <cmath>#include <cstdio>#include <cstring>using namespace std;#define N 1111int n,m,k,xx[]={1,-1,0,0},yy[]={0,0,1,-1},jyx,jyy,T,fa[N],ans=0;bool a[N][

2016-08-06 14:28:39 682

原创 POJ 2239 匈牙利算法

思路:最大匹配 也是很裸的一道题….// by SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 500int n,tot=0,first[N],v[N*N],next[N*N],jy,xx,yy,ans=0,vis[N],fa[N];void a

2016-08-06 14:06:55 685

原创 POJ 2536 匈牙利算法

思路:最大匹配 (很裸)// by SiriusRen#include <cmath>#include <cstdio>#include <cstring>using namespace std;#define N 205int n,tot=0,first[N],v[N*N],next[N*N],m,s,V,vis[N],fa[N],ans=0;double ax[N],ay[N],

2016-08-06 14:05:51 758

原创 POJ 2728 最优比率生成树

(今天才学会Prim 尴尬……)这题好久之前(四个月之前)就写过。。 当时WA了……抄得题解现在终于搞对了。// by SiriusRen#include <cmath>#include <cstdio>#include <cstring>#define N 1005using namespace std;int n,now;double map[N][N],h[N][N],low,

2016-08-04 20:56:36 581

空空如也

空空如也

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

TA关注的人

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