pipi专题

PIPI OJ 1275: 约瑟夫环

菜鸟生成记(19) 1275: 约瑟夫环 #include<bits/stdc++.h>using namespace std;//考察双向链表,这玩意只可意会不可言传,链表是数据结构难点之一吧 const int N=1e3+10;//不过单向链表也可以完成 typedef struct st{int data;struct st *next,*pre;}*link,ll;int

PIPI OJ 1118: 继续畅通工程(并查集+最小生成树)

菜鸟生成记(18) 1118: 继续畅通工程 又双叒叕是最短路径的水题;不同的是,在构造最小生成树前,题目中已经规定一些已经建好了(这些边已经在生成树里面了);从未建好的边中选择最优边加入生成树;直到所有的顶点都被并入一个连通分量(生成树)中; AC代码 #include<bits/stdc++.h>using namespace std;typedef struct st ak;c

PIPI OJ 1286: PIPI运货(单源最短路径+边有权值+顶点也有权值)

1286: PIPI运货 菜鸟生成记(16) 这又是一个单源最短路径的模板题,有一点点加强,顶点加权; 不过把模板稍改一下就可以了; 水题真的很上头,一写就停不下来; #include<bits/stdc++.h>using namespace std;const int N=1e+3+10,inf=1e+8+10;int cost[N];int Map[N][N];int d

PIPI OJ 1111: 最小花费(单源最短路径(路程)+走尽可能多的路(边))

PIPI OJ 1111: 最小花费 菜鸟生成记(14) 这一题主要思想就是单源最短路径,想到最短路径就对一半了;(刚看见这一题就无脑的搬模板,然后就WA了(50%),因为没有考虑到下面的情况) 然后就是剩下一个小学水平的计算问题了;一个数乘以15%和分别乘以(1% 2% 3% 4% 5%)哪个值更小; 一个数乘以一个分数的问题; double a=100,b=15(b(总费用)的值越大

PIPI OJ 1303: 判断树的子树

菜鸟生成记(13) PIPI OJ 1303: 判断树的子树 思路:大树的每一个结点为根结点形成的一个子树,获取该子树的中序序列; 再获取小树的中序序列;然后让每个子树的序列与之比较;有一次序列比较相同,小树就是大树的子树;否则不是; #include<bits/stdc++.h>//以大树的每个节点作为根节点的子树与小树比较using namespace std;typedef st

PIPI OJ 1187: 子序列问题III(前缀和+二分查找)

1187: 子序列问题III 菜鸟生成记(78) PIPIOJ上面有三道题意说明一模一样,但是数据范围不一样,三个不同的难度梯度 子序列问题I 1000 (1e3) O(n^3)的纯暴力即可解决 子序列问题II 10000 (1e4) O(n^2)前缀和预处理,优化区间求和 子序列问题III 100000 (1e5) O(n*log2n)前缀和预处理,优化区间求和,二分查找优化查找(lo

PIPI OJ 1203: PIPI发工资(拓扑排序)

1203: PIPI发工资 菜鸟生成记(75) 主思路:题中提到了,a,b为上下级关系,a的工资要高于b,结合样例 2 2 1 2 2 1 -1 这一题需要拓扑排序;同时要反向建建(正向错误75%,最下面解释,正向建边的错误之处) #include<bits/stdc++.h>using namespace std;const int N=2e4;int n,m;vector<i

PIPI OJ 1273: 三个有序数组的交集

菜鸟生成记(74) 每周一水 这道早就写过了,一直卡着(以前蒻羁不会STL),这一下痛快了 1273: 三个有序数组的交集 #include<bits/stdc++.h>using namespace std;map<int,int>s1,s2,s3;int main(){int a,b,c,x;cin>>a>>b>>c;//1<=a,b,c<=1e5; int max1=0;//