自定义博客皮肤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的博客

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

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

原创 POJ 2185 正解 KMP

题意: 思路:把每一行压成一个数 求一下 KMP 把每一列压成一个数 求一下KMP 答案就是两个周期之积网上的好多题解都是错的………………………..//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int n,m,next[10005],recx;s

2016-10-31 20:03:39 347

原创 BZOJ 1355 KMP中next数组的应用

思路: 我们知道 next[i]是失配的i下一步要去哪儿 next[n]就是失配的n要去哪儿 n-next[n]就是答案(即最短周期)啦//By SiriusRen#include <cstdio>using namespace std;int n,next[1000050],j;char a[1000050];int main(){ scanf("%d%s",&n,a+1

2016-10-31 16:10:57 494

原创 POJ 2374 线段树建图+Dijkstra

题意: 思路: 线段树+Dijkstra(要堆优化的)线段树要支持打标记 一个栅栏 拆成两个点 :左和右 新加一个栅栏的时候 看看左端点有没有被覆盖过 如果有的话 就分别从覆盖的那条线段的左右向当前的左端点连一条边权为距离的边右端点同理 跑一遍Dijkstra 就好啦复杂度:O(nlogn)//By SiriusRen#include <queue>#include <c

2016-10-31 15:02:24 717

原创 POJ 2181 贪心

思路: 贪心 对于每个波浪 ans+=最大值-最小值注意最后一定是选最大值//By SiriusRen#include <cstdio>using namespace std;int n,a[150500],flag,ans;int main(){ scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d",&a[i]);

2016-10-31 11:14:40 384

原创 POJ 2111 DP+记录路径

题意: 思路: 类似滑雪 //By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 444int n,ans=-1,s[N*N],map[N][N],cnt,f[N][N],xx[]={2,2,1,1,-1,-1,-2,-2},yy[]={

2016-10-31 10:35:28 671

原创 POJ 2141 模拟

思路:字符串解密 啥都告诉你了 模拟就好//By SiriusRen#include <cstdio>#include <cstring>using namespace std;char a[666],ch[666],b[6666];int main(){ for(int i=0;i<256;i++)ch[i]=i; for(int i=0;i<=26;i++)a[i

2016-10-31 08:57:06 560

原创 POJ 2039 Floyd

句意理解题 解释输入好啦: 第一行n个数 m场电影 随后m行 每行的第一个数 代表 有k奶牛在这个电影中出现过 随后k个数 是奶牛的编号如果两头奶牛在同一个电影中出现过 相互度为1 奶牛们的相互度可以累加 (这句话的意思是 :请用Floyd解此题)输出最少的一头奶牛的相互度之和 *100/(n-1)//By SiriusRen#include <cstdio>#i

2016-10-31 08:49:12 325

原创 POJ 2018 二分

题意: 思路: 二分一个答案 让整个数组都减掉它 判判有没有相距>len的逆序对//By SiriusRen#include <cmath> #include <cstdio>#include <algorithm>using namespace std;int n,len;double a[100500],sum[100500],l=0x3ffff

2016-10-31 08:25:30 654

原创 POJ 2138 最长路

思路: 如果j能由i得到 则i向j连一条边答案就是最长路的末节点所代表的string//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 3005int n,first[N],next[N*N],v[N*N],tot=1,t,head,ta

2016-10-30 23:06:25 327

原创 POJ 2133 暴搜

题意: 思路: 按照题意暴搜注意 如果目标串==给的串 答案是2 //By SiriurRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int n,k,goal,a[1005],head,tail,q[1000000],vis[1<<16],minn[17],rec[

2016-10-30 21:35:14 431

原创 POJ 1988 带偏移量的并查集

题意: 思路: 数据范围很大 貌似只能用并查集了……//By SiriusRen#include <cstdio>using namespace std;int p,f[33333],d[33333],xx,yy,s[33333];int find(int x){ if(x==f[x])return x; int fx=find(f[x]); d[x]+

2016-10-30 20:23:54 685

原创 POJ 1989 贪心

题意: 思路: 从前到后扫一遍 如果k个数都出现过了 ans++从当前接着判断最后答案就是ans+1//By SiriusRen#include <cstdio>using namespace std;int n,k,vis[10050],cnt,ans=1,jy;int main(){ scanf("%d%d",&n,&k); for(int i=1;i<

2016-10-30 19:39:14 370

原创 POJ 1991 DP

题意: 思路:考虑DP 先把事件按照地点顺序排个序 f[i][j][0]表示从i到j还没有去过 现在在i f[i][j][1]表示从i到j还没有去过 现在在j 那么方程就呼之欲出了 f[i][j][0]=max(min(f[i-1][j][0]+node[i].pos-node[i-1].pos,f[i][j+1][1]+node[j+1].po

2016-10-30 19:27:38 418

原创 POJ 3175 枚举

思路: 枚举小数点前 的数是啥 判一判 复杂度是根号的…..注意精度!!!! //By SiriusRen#include <cmath>#include <cstdio>using namespace std;#define LL long longint n,l;int main(){ scanf("%d%d",&n,&l); double base=

2016-10-30 16:57:57 318

原创 POJ 3168 排序+扫描

题意: 思路: 我们可以把每个矩形拆成四条线 与x轴平行的放在一起 与y轴平行的放在一起 排个序 判一判有没有交 有交 则说明不可扩张 统计一下 就可以了处理的姿势很重要 姿势不对毁一生//By SiriusRen#include <cstdio>#include <algorithm>using namespace std;#define N 5555

2016-10-30 14:47:32 274

原创 POJ 3169 差分约束

题意: 好久没做差分约束了,,, 看到这道题第一想法是贪心…………………………思路: 差分约束 从i到i+1的距离>=0 add(i+1,i,0)对于互相讨厌的牛从u到v的距离>=d add(v,u,-d)对于互相喜欢的牛从u到v的距离<=d add(u,v,d)跑SPFA就好了顺便判判dis 和入队次数//By SiriusRen#include <q

2016-10-30 13:16:11 511

原创 POJ 3170 线段树优化DP

题意: 思路: 先搞一个vector 存以T2结尾的结构体 (结构体里面有开始工作的时间和花费) f[i]表示取区间[M,i)的代价 易得f[i]=min(f[k]+w,f[i]);T1<=k//By SiriusRen#include <vector>#include <cstdio>#include <cstring>#include <algorithm>u

2016-10-30 01:10:02 645 1

原创 POJ 3172 (认真读题的题)

题目: 思路:题目很有意思首先 题里说:N<=1000 题里又说 诶呦 woc? 这不自相矛盾嘛 最坏情况也就是个 斐波那契数列 几十个数 暴搜+剪枝不就好了嘛剪枝:从大往小搜,如果前缀和+当前的和<=当前解 return(这正确性很显然 但是不是很好想到)//By SiriusRen#include <cstdio>using namespace

2016-10-30 00:32:22 371

原创 BZOJ 2037 区间DP

跟POJ 3042是一个类型的http://blog.csdn.net/qq_31785871/article/details/52954924 思路: 先排个序 (把初始位置也插进去) f[i][j]表示从第i个到第j个之间的蛋都被收完了 f[i][j][0]表示在地点i f[i][j][1]表示在地点j 维护一个sumv数组 是v的前缀和 f[i][j][

2016-10-30 00:01:42 552

原创 POJ 2455 二分+网络流

题意: 思路: 莫名其妙TLE啊woc我A了一坨题的网络流模板有问题 !!!! 在常数上会慢 (一个等于号 啊啊啊) 改了所有网络流有关的文章… 。。。。//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 90000

2016-10-29 17:53:11 601

原创 POJ 2456 二分

这不就是跳石头嘛 (加上sort) 然后就二分答案 搞定~//By SiriusRen#include <cstdio>#include <algorithm>using namespace std;int n,k,l=0,r=0x3fffffff,ans,Mid,a[100500];bool check(){ int temp=1,rec=a[1]; for(int

2016-10-29 16:15:09 356

原创 POJ 2457 BFS

题意: 说人话: 从A到B连边 找从1到k的最短路 并输出路径(随便一条即可 ) 如果不能到达 输出-1 思路: 搜//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 100500i

2016-10-29 16:04:39 581

原创 POJ 2458 DFS+判重

题意: 思路: 搜+判重 嗯搞定 (听说有好多人用7个for写得….)//By SiriusRen#include <bitset>#include <cstdio>0using namespace std;bitset<134217728>bit;char s[17][17],vis[17][17],xx[]={1,-1,0,0},yy[]={0,0,1,-1};i

2016-10-29 15:44:58 778

原创 POJ 2459 模拟

题意: 思路: 按照题意模拟即可//By SiriusRen#include <cstdio>using namespace std;int c,f1,f2,d,xx,yy,vis[2005];int main(){ scanf("%d%d%d%d",&c,&f1,&f2,&d); for(int i=1;i<=c;i++){ scanf("%d%

2016-10-29 11:04:13 540

原创 POJ 1904 思路题

思路: 思路题 题目诡异地给了一组可行匹配 肯定有用啊….就把那组可行的解 女向男连一条有向边 如果男喜欢女 男向女连一条有向边 跑一边Tarjan就行了 (这个时候 环里的都能选 “增广环”嘛)嗯 就搞定了//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namesp

2016-10-29 10:50:57 403

原创 POJ 2226 二分图最小覆盖

题意: 思路: 把横着的连通块放在一个集合 竖着的放在一个集合如果有交 就连边 求最小覆盖即可 (数值上等于最大匹配)//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 2555*2555int n,m,first[2555

2016-10-29 10:00:20 365

原创 POJ 2227 FloodFill (priority_queue)

题意: 思路: 搞一个priority_queue 先把边界加进去 不断取最小的 向中间扩散//By SiriusRen#include <queue>#include <cstdio>#include <cstring>using namespace std;#define int long longstruct Node{int h,x,y;Node(int a,

2016-10-29 09:01:00 355

原创 POJ 2391 Floyd+二分+拆点最大流

题意: 思路:先Floyd一遍两两点之间的最短路 二分答案 建图 跑Dinic只要不像我一样作死#define int long long 估计都没啥事……我T到死辣……..最后才改过来……(不过注意一哈 答案 &最短路确实是会爆int的)//By SiriusRen#include <cstdio>#include <cstring>#include <a

2016-10-28 23:51:11 606

原创 POJ 2323 贪心

题意: 思路: 贪 贪 贪 如果当前的c>之前的c+s 那么之前的合适 一直贪下去就好了//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define int long longint n,s,rec=1,c[10500],y[10500

2016-10-28 14:58:42 363

原创 POJ 3174 暴力枚举

思路: 暴力枚举三个点 判一判 搞定 (x1*y1=x2*y2) x1、y1、x2、y2为他们两两的差//By SiriusRen#include <cstdio>using namespace std;int n,cnt; struct Point{int x,y;}point[888];struct ans{int x,y,z;}ans[888];int main(){

2016-10-28 14:31:18 622

原创 POJ 2394 Dijkstra

题意: 思路: 裸的Dijkstra 爆敲一发模板//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 2222int f,p,c,m,xx,yy,zz,w[N],v[N],next[N],fi

2016-10-28 13:44:03 772

原创 POJ 3049 DFS

思路:暴搜//By SiriusRen#include <cstdio>#include <iostream>#include <algorithm>using namespace std;int l,c,yuan,fu,lenth;char a[16],s[16];bool Yuan(char x){ if(x=='a'||x=='e'||x=='i'||x=='o'||x=

2016-10-28 13:25:36 469

原创 POJ 3050 枚举+dfs+set判重

思路: 枚举+搜一下+判个重 ==AC//By SiriusRen#include <set>#include <cstdio>using namespace std;int a[8][8],xx[]={1,-1,0,0},yy[]={0,0,1,-1};set<int>s;bool check(int x,int y){ return x>0&&x<6&&y>0&&y<6;

2016-10-28 13:12:19 596

原创 POJ 3051 DFS

题意:判断连通块大小 水题//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int n,m,a[1111][88],xx[]={1,-1,0,0},yy[]={0,0,1,-1},vis[1111][88],ans,temp;void dfs(int x,i

2016-10-28 13:05:09 669

原创 POJ 3046 DP

题意: 思路:先说O(A^2T)的做法 f[i][j]表示前i个家族选j个蚂蚁的方案数 f[i][j]+=f[i-1][k] j-vis[i]<=k<=j然后前缀和优化一哈 就成O(AT)的了我们发现空间还是会炸 这样子就压掉一维好了 空间是O(A)的嗯就酱//By SiriusRen#include <cstdio>#include <cstring>#inclu

2016-10-28 12:54:29 197

原创 POJ 3042 区间DP(费用提前计算相关的DP)

题意: 思路: f[i][j][1]表示从i到j的区间全都吃完了 现在在j点 变质期最小是多少 f[i][j][0]表示从i到j的区间全都吃完了 现在在i点 变质期最小是多少 f[i][j][0]=min(f[i+1][j][0]+(s[i+1]-s[i])(n-j+i),f[i+1][j][1]+(s[j]-s[i])(n-j+i)); f[i][j][1]=min(f

2016-10-28 11:46:57 967 1

原创 POJ 3037 SPFA

题意: 思路: 我们可以发现 到每个点的速度是一样的 那这就成水题了….裸的SPFA跑一哈 搞定//By SiriusRen#include <cmath>#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int v,

2016-10-28 09:30:51 628

原创 POJ 3038 贪心(multiset)

题意: 思路: 1. 贪心 我们考虑肯定是走最近的最合适 想象自己是一个黑一日游的司机: 1.如果有乘客要上车,那么就让他上,收钱! 2.如果超载了,把距目的地最远的几个乘客踢下去,退钱。 3.行驶到下一站 (摘自http://blog.sina.com.cn/s/blog_9d987af5010158ih.html) 多么生动形象….

2016-10-28 08:46:32 482

原创 BZOJ 1572 贪心(priority_queue)

思路: 维护两个堆 一个按时间 (从后到前)的 另一个是按价值(从大到小)的 从时间的堆向价值的堆倒 每回(合法状态下)取当前的堆顶 判一判//By SiriusRen#include <queue>#include <cstdio>#include <algorithm>using namespace std;long long ans;int n,t=100000000

2016-10-27 23:45:36 387

原创 POJ 3040 贪心

贪心好题 ………. 思路: 从大到小凑C 如果不够 再从小到大补满(超过)C//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int n,c,ans,flag,vis[21];struct Money{int amount,value;}mon

2016-10-27 19:58:45 227

空空如也

空空如也

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

TA关注的人

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