07 2016 档案

摘要:/* 找出能连通所有点的一棵树 是的最大的边最小 很显然就是最小生成树. 堆优化prim. */ #include #include #include #include #include #define maxn 1010 #define inf 999999999 using namespace std; int n,m,num,head[maxn],ans,tot; bool f[ma... 阅读全文
posted @ 2016-07-29 21:28 一入OI深似海 阅读(233) 评论(0) 推荐(0)
摘要:/* 这做法好像有个很高大上的名字叫做分层图. 其实就是按照题目的意思重新建图 节点有n个变成n*k个 每个表示节点的编号和剩下能用的k值 然后...卡spfa 需要堆优化的dij */ #include #include #include #include #include #define pa pair #define mk make_pair #define maxn 2000010 ... 阅读全文
posted @ 2016-07-29 19:58 一入OI深似海 阅读(189) 评论(0) 推荐(0)
摘要:/* 分三种情况 1 有环:找环长的gcd作为max gcd的超过2的最小因子作为min 2 树:所有最长链的和作为max 3为min (最长链≥3) 3 两条相交链:找出所有的这样的两条链的差 同1求 显然第三种不好处理 看了别人的做法是+反向-1的边 1 3就能合并了. */ #include #include #include #include #define maxn 1000010 ... 阅读全文
posted @ 2016-07-29 19:52 一入OI深似海 阅读(206) 评论(0) 推荐(0)
摘要:感受一下不同做法的时间 1.map+单向bfs 125ms #include #include #include #include #include using namespace std; string st,aim=" 123804765",s,si; char x; mapp; queueq; queuet; int main() { cin>>st; st=' '+st;... 阅读全文
posted @ 2016-07-29 09:41 一入OI深似海 阅读(560) 评论(0) 推荐(0)
摘要:#include #include #include #define maxn 30010 using namespace std; int m,fa[maxn],top[maxn],num[maxn]; char s; int find(int x) { if(x==fa[x])return x; int f=fa[x]; fa[x]=find(fa[x]); ... 阅读全文
posted @ 2016-07-26 20:56 一入OI深似海 阅读(167) 评论(0) 推荐(0)
摘要:/* n*m个点中选3个 再排除三点共线 共线分两类 1 在横线或者竖线上 m*C(n,3) n*C(m,3) 2 在对角线上 这个比较麻烦 以为对角线和矩阵是一一对应的 我们转化成求矩阵 并且保证有两个点在矩阵的角上 接下来的问题就是求 n m 大小的矩阵对角线经过几个点 我们设可构成的最小的三角形的底和高分别是ni mi 显然ni mi 分别是n m的约数 那么分成的线段数也是... 阅读全文
posted @ 2016-07-26 20:53 一入OI深似海 阅读(278) 评论(0) 推荐(1)
摘要:/*先贴个n*n的*/ #include #include #include #define maxn 1000010 using namespace std; int n,k,h[maxn],f[maxn],Q; int main() { scanf("%d",&n); for(int i=1;i=h[j])f[i]=min(f[i],f[j]+1); ... 阅读全文
posted @ 2016-07-25 19:21 一入OI深似海 阅读(161) 评论(0) 推荐(0)
摘要:/* 开始以为是二分...后来发现丫不单调... */ #include #include #include #define maxn 1000010 using namespace std; int n,l,r,ans,tmin[maxn],tmax[maxn],a[maxn]; int qmin[maxn],qmax[maxn],headmin,tailmin,headmax,tailma... 阅读全文
posted @ 2016-07-25 19:19 一入OI深似海 阅读(224) 评论(0) 推荐(0)
摘要:/* 裸地单调队列.. 第一次写 写的好丑.... */ #include #include #include #define maxn 1000010 using namespace std; int n,k,x,a[maxn],t[maxn],q[maxn],head=1,tail; int init() { int f=1,x=0;char s=getchar(); wh... 阅读全文
posted @ 2016-07-25 10:29 一入OI深似海 阅读(122) 评论(0) 推荐(0)
摘要:1.对于一个整数数组,要求资持单点修改,查询区间l r中的max(ai-aj)(l<=j<i<=r) 阅读全文
posted @ 2016-07-18 20:48 一入OI深似海 阅读(194) 评论(0) 推荐(0)
摘要:/* 限制步数 写迭代加深 注意剪枝:当先步数+不同的个数-1>当前限制的步数 就cut */ #include #include #include #define limit 15 using namespace std; int T,ans=20,falg; int xx[9]={0,-2,-2,-1,-1,1,1,2,2}; int yy[9]={0,-1,1,-2,2,2,-2,1,... 阅读全文
posted @ 2016-07-17 19:27 一入OI深似海 阅读(236) 评论(0) 推荐(0)
摘要:维护差分序列 显然要使差分序列的后n-1位为0 对于原来的区间操作 只需要单点修改或者两个点修改 就转化成了 对于差分序列但以一个数+1 或 -1 或者一个+1同时一个-1 ans1=max(sum1,sum2)sum1=Σbi(bi>0)sum2=absΣ(bi<0) 求方案数的话嘛 也就是不同的b1 只有+1 或 -1的操作才可能影响到b1 这里并不是只有-1才会影响到b1 操作前半段+1和... 阅读全文
posted @ 2016-07-17 07:55 一入OI深似海 阅读(311) 评论(0) 推荐(0)
摘要:/* 线段树可以做 但是代码太长了 set就可以完成这件事 将2*n个点进行排序 记录好是左端点还是右端点 关键是维护当前的高度是多少 set支持插入 删除 还有查询最大值 非常好 然后依次扫描 如果是左端点 就插入高度 反之删除高度 */ #include #include #include #include #include #include #define ll long lon... 阅读全文
posted @ 2016-07-15 18:55 一入OI深似海 阅读(229) 评论(0) 推荐(0)
摘要:/* 十分简单的题面 离散化一下 然后并茶几一下就OK了 跑的死慢 可能还有更优的方法吧 */ #include #include #include #include #include #define maxn 1000010 using namespace std; int T,n,m,s[maxn],t[maxn],fa[maxn],falg,num; int init() { ... 阅读全文
posted @ 2016-07-14 20:46 一入OI深似海 阅读(725) 评论(0) 推荐(0)
摘要:/* 开始想的是 维护a的每个指数的系数 然而不好办 然而还有^10^10^10这种数据 特殊值带入吧 多搞几个素数 接下来就是玄学的事了 给a赋值之后 就是简单地表达式求值 虽然思路简单 但是字符串一向很恶心、、 数据括号有问题。。。。 */ #include #include #include #define maxn 255 #define mod 10007 using namespa... 阅读全文
posted @ 2016-07-14 16:16 一入OI深似海 阅读(789) 评论(0) 推荐(0)
摘要:/* 开始想耍小聪明 直接map搞 代码短 好理解 空间够 恩 很好 就是 map慢死了 T了 */ #include #include #include #include using namespace std; int n,m,ans; string s,si; mapt; int main() { cin>>n; while(n--) { ... 阅读全文
posted @ 2016-07-11 15:02 一入OI深似海 阅读(152) 评论(0) 推荐(0)
摘要:/* 这题倒是没啥难度 字典树可搞 但是吧 空间是个问题 开始写成这样 struct node { int next[27],sum[27]; bool over; }t[maxn]; 死活过不了 开小了er 开大了MLE 问了问wmy 很机智的说用map 管用的 然后卡空间过了 看他们用指针动态分配内存 然而我并不太会..... */ #include #inclu... 阅读全文
posted @ 2016-07-11 10:44 一入OI深似海 阅读(185) 评论(0) 推荐(0)
摘要:中国剩余定理互质版 设m1,m2,m3,...,mk是两两互素的正整数,即gcd(mi,mj)=1,i!=j,i,j=1,2,3,...,k. 则同余方程组: x = a1 (mod n1) x = a2 (mod n2) ... x = ak (mod nk) 模[n1,n2,...nk]有唯一解 阅读全文
posted @ 2016-07-10 21:23 一入OI深似海 阅读(1630) 评论(0) 推荐(0)
摘要:/* 赤裸裸的数学题 各种整体+插空 所以嘛 学好数学还是很重要的 ans=(n-1)!*(m-1)!*(2+(n-2)(n-1)) */ #include #include #include #define mod 100000007 #define ll long long using namespace std; ll n,m,a=1,b=1,c; int main() { ci... 阅读全文
posted @ 2016-07-09 20:37 一入OI深似海 阅读(160) 评论(0) 推荐(0)
摘要:/* 空间32000 我写的全都31900+ 醉了 可以降维优化空间的 状态:f[i][j] 前i个题目a一共做了j分钟 b最少的做题时间 转移:考虑每个题目给谁做 f[i][j] = min ( f[i-1][j-a]a做 , f[i-1][j]+b b做); 最后对于f[n]枚举a的做题时间 更新答案 */ #include #include #include #define max... 阅读全文
posted @ 2016-07-09 20:29 一入OI深似海 阅读(156) 评论(0) 推荐(0)
摘要:/* 终于没有看题解写出了一道noip T3难度的题(虽然wmy简单点拨了一下 ^^) 联通所有点 路上维护最小权值 使最小权值 很像最小生成树嘛 但是他要的是最小的最大 二分不单调似乎 所以先最大生成树建图 这样就得到了n-1条边链接n个节点 又是维护两两节点之间的路上最小值 很容易想到LCA 怎么维护呢 开始想想 嗯 树的规模应该不会很大 嗯 不用倍增思想应该以跑的挺快 所以第一遍只维护了... 阅读全文
posted @ 2016-07-08 17:08 一入OI深似海 阅读(431) 评论(0) 推荐(0)
摘要:/* 一眼就知道是贪心 关键是怎么贪 考虑到每个乘客的旅行时间只算在车上的 没想太多 一看是按照每一段路上的乘客数 乘客越多的 使用加速卡 然后自信的交了 10分..... */ #include #include #include #include #define maxn 10010 using namespace std; int n,m,k,t[maxn],f[maxn],s[maxn... 阅读全文
posted @ 2016-07-07 18:09 一入OI深似海 阅读(215) 评论(0) 推荐(0)
摘要:/* 一开始的思路 求出每两个点之间的距离(其实枚举两个点就T了) 统计为2 的点对 然后统计答案 倍增LCA的话 是O(n+n*n) 后面的n*n是枚举那两个点 华丽的T了 60分 */ #include #include #include #define maxn 200010 using namespace std; int n,w[maxn],fa[maxn][20],head[ma... 阅读全文
posted @ 2016-07-07 17:56 一入OI深似海 阅读(206) 评论(0) 推荐(0)
摘要:/* 贪心.... 处理处每个点按照最大距离在x轴上的映射 然后我们就有了一些线段 目的是选取尽量少的点 使得每个线段内都有点出现 我们按照左端点排序 然后逐一处理 假设第一个雷达安在第一个线段的右端点 若下一条与之无交点 则再按一个雷达 若完全覆盖 贪心的 我们把雷达移动到下一条的右端点 这样这个雷达就又多覆盖了一个岛 */ #include #include #include #inclu... 阅读全文
posted @ 2016-07-07 07:58 一入OI深似海 阅读(172) 评论(0) 推荐(0)
摘要:/* 二分图匹配 建图稍麻烦点 不过 有STL大法带我上天 说正经的 先假设都有关系 然后把确定的没有关系的删掉 这样跑出来的一定是完美匹配 至于确定的匹配嘛 删掉这一条 不再是完美匹配 然后记下排序输出 */ #include #include #include #include #include #define maxn 25 using namespace std; int n,su... 阅读全文
posted @ 2016-07-06 21:56 一入OI深似海 阅读(287) 评论(0) 推荐(0)
摘要:/*裸地KM*/ #include #include #include #define maxn 110 #define inf 0x3f3f3f3f using namespace std; int n,m,ans,match[maxn],w[maxn][maxn],d; int fx[maxn],fy[maxn],lx[maxn],ly[maxn]; bool Dfs(int i) { ... 阅读全文
posted @ 2016-07-06 21:51 一入OI深似海 阅读(217) 评论(0) 推荐(0)
摘要:/* 根据中序遍历的性质 加上子树的类似递归处理 嗯 是个石子归并 然而边界老写不对 还有循环顺序 一气之下写了记忆化.... 几下每个区间的最优值由那个点分开 即子树的根是谁 然后递归输出来 注意先递左子树 后递右子树 */ #include #include #include #define maxn 35 using namespace std; int n,f[maxn][maxn]... 阅读全文
posted @ 2016-07-05 19:27 一入OI深似海 阅读(131) 评论(0) 推荐(0)
摘要:#include #include #include using namespace std; int f[27][11],l,ans; char s[11]; void Get_f() { for(int i=1;i #include #include #define maxn 100010 using namespace std; int T,n; long long s[maxn+... 阅读全文
posted @ 2016-07-05 14:42 一入OI深似海 阅读(156) 评论(0) 推荐(0)
摘要:/* 没想到还有dp的事 只能水部分分了 前几个点可以水过 4,5暴力也可以 先每个临湖点都灌一下水 (可以加剪枝 比旁边小的可以不搜) 统计每个临湖点能灌倒几个临沙漠点 并记录每个临沙漠点是否能灌倒 这样前三个点就好办了 判断可以输出不能全灌到的点 对于剩下的全部能灌倒得 暴力的话是2^n 也就水两个点了 这里如果全部能灌倒 有一个很有用的性质 : 这时每个临水点能灌到的临沙漠点 一定是相邻的... 阅读全文
posted @ 2016-07-04 19:46 一入OI深似海 阅读(200) 评论(0) 推荐(0)
摘要:FJSC图论测试 题目 1.无线通讯网(wireless.pas/cpp/c) 【题目描述】 国防部计划用无线网络连接若干个边防哨所。2种不同的通讯技术用来搭建无线网络;每个边防哨所都要配备无线电收发器;有一些哨所还可以增配卫星电话。 任意两个配备了一条卫星电话线路的哨所(两边都拥有卫星电话)均可以 阅读全文
posted @ 2016-07-03 10:50 一入OI深似海 阅读(468) 评论(2) 推荐(0)
摘要:/* 中国的题目 ——贱买贵卖 0.0 这题wa了好多遍 第一遍看着题 哎呀这不很简单嘛 从起点能到的点都是合法的点 然后统计合法的点里最大最小值 然后printf 也不知道哪里来的自信 就这么交了 然后爆零了 第二遍想了想 恩 刚开始思路有问题 必须先买后卖 买的点要在卖的前面 恩 很有道理 然后数组模拟着统计了一下i之前的最小值和i之后的最大值 并且确保每个点都是合法的 然后 连样例都不对... 阅读全文
posted @ 2016-07-02 18:44 一入OI深似海 阅读(202) 评论(0) 推荐(0)
摘要:/* 这题目简直没谁了 我只想说 codevs上传题目的 专业素养在哪里 最起码别有错别字啊 0.0 咳咳 说正事 应该是考察拓扑排序的 统计出入度 然后依次处理每个入度为0的点 当然ci为0的可以不必要统计了 因为他不传递刺激 好好理解一下给出的公式 无非就是所有传入i的刺激与ci乘积累加 累加完事之后-ui 最后输出 出度为0的 */ #include #include #incl... 阅读全文
posted @ 2016-07-02 11:55 一入OI深似海 阅读(867) 评论(4) 推荐(0)
摘要:/* 一开始大意了 以为和bzoj上的祭祀是一样的(毕竟样例都一样) 这里不知相邻的点可以相互到达 间接相连的也可以到达 所以floyed先建立一下关系 再跑最大独立集 下面贴一下95 和 100的代码 (认真读题保平安) */ #include #include #include #define maxn 210 #define maxm 30010 using namespace std;... 阅读全文
posted @ 2016-07-01 15:14 一入OI深似海 阅读(343) 评论(1) 推荐(0)