[题目链接] 点击打开链接 [算法] 树状数组 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 100010 int n,i,x; long long ans; int pos[MAXN]; long long c[MAXN]; inline int lowbit(int x) { return x & (-x); } inline void modify(int pos,long long val) { i…
[题目链接] 点击打开链接 [算法] dist[i][j][k]表示当前走到(i,j),走的步数除以3的余数为k的最小花费 spfa即可 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 110 const int INF = 1e9; struct info { int x,y,s; }; ] = {,,-,}; ] = {-,,,}; int i,j,n,t; int val[MAXN][MAXN]; templa…
\(\\\) \(Description\) 给定长度为\(2N\)的序列,\(1\text ~N\)各出现过\(2\)次,\(i\)第一次出现位置记为\(a_i\),第二次记为\(b_i\),求满足\(a_i<a_j<b_i<b_j\)的\((i,j)\)对数. \(N\in [1,10^5]\) \(\\\) \(Solution\) 考虑以一个数作为\(i\)出现在答案里,对应的\(j\)应满足\(a_j\in (a_i,b_i),b_j>b_i\).也就是说,我们需要对每一…
Why Did the Cow Cross the Road III 时间限制: 1 Sec  内存限制: 128 MB提交: 65  解决: 28[提交][状态][讨论版] 题目描述 The layout of Farmer John's farm is quite peculiar, with a large circular road running around the perimeter of the main field on which his cows graze during…
题目 4990: [Usaco2017 Feb]Why Did the Cow Cross the Road II 链接 http://www.lydsy.com/JudgeOnline/problem.php?id=4990 题面 上下有两个长度为n.位置对应的序列A.B, 其中数的范围均为1~n.若abs(A[i]-B[j]) <= 4, 则A[i]与B[j]间可以连一条边.现要求在边与边不相交的情况下的最大的连边数量. n <= 10^5. 输入 The first line of in…
题面:4989: [Usaco2017 Feb]Why Did the Cow Cross the Road 连接 http://www.lydsy.com/JudgeOnline/problem.php?id=4989 题面 上下有两个位置分别对应的序列A.B,长度为n, 两序列为n的一个排列.当Ai == Bj时,上下会连一条边. 你可以选择序列A或者序列B进行旋转任意K步, 如 3 4 1 5 2 旋转两步为 5 2 3 4 1. 求旋转后最小的相交的线段的对数. 输入 The first…
//神题目(题目一开始就理解错了)... 题目描述 Why did the cow cross the road? Well, one reason is that Farmer John's farm simply has a lot of roads, making it impossible for his cows to travel around without crossing many of them. 奶牛们为什么要穿马路?一个原因只是因为FJ的牧场的路实在是太多了,使得奶牛们每…
4990: [Usaco2017 Feb]Why Did the Cow Cross the Road II Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 93  Solved: 64[Submit][Status][Discuss] Description Farmer John is continuing to ponder the issue of cows crossing the road through his farm, intro…
4989: [Usaco2017 Feb]Why Did the Cow Cross the Road Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 153  Solved: 70[Submit][Status][Discuss] Description Why did the cow cross the road? We may never know the full reason, but it is certain that Farmer…
Why Did the Cow Cross the Road III bzoj-4994 Usaco-2017 Feb 题目大意:给定一个长度为$2n$的序列,$1$~$n$个出现过两次,$i$第一次出现的位置记为$a_i$,第二次记为$b_i$,求满足$a_i<a_j<b_i<b_j$的个数. 注释:$1\le n\le 10^5$. 想法: 这个题有一个非常不一样的地方. 我记得我之前做过的长成这样的题大概都是第一个位置+1,第二个位置-1即可. 这个题我们只能对第一个位置进行操作.…
P3662 [USACO17FEB]Why Did the Cow Cross the Road II S 题目描述 The long road through Farmer John's farm has NN crosswalks across it, conveniently numbered 1 \ldots N1…N (1 \leq N \leq 100,0001≤N≤100,000). To allow cows to cross at these crosswalks, FJ in…
P3663 [USACO17FEB]Why Did the Cow Cross the Road III S 题目描述 Why did the cow cross the road? Well, one reason is that Farmer John's farm simply has a lot of roads, making it impossible for his cows to travel around without crossing many of them. 为什么牛过…
题目描述 Why did the cow cross the road? Well, one reason is that Farmer John's farm simply has a lot of roads, making it impossible for his cows to travel around without crossing many of them. 奶牛们为什么要穿马路?一个原因只是因为FJ的牧场的路实在是太多了,使得奶牛们每天不得不穿梭在许许多多的马路中央 FJ's…
题目描述 Why did the cow cross the road? Well, one reason is that Farmer John's farm simply has a lot of roads, making it impossible for his cows to travel around without crossing many of them. 为什么牛过马路? 其中一个简单的原因就是农民约翰的农场有很多道路,使得他的母牛不得不穿越许多道路. FJ's farm…
[USACO17FEB]Why Did the Cow Cross the Road III P 考虑我们对每种颜色记录这样一个信息 \((x,y,z)\),即左边出现的位置,右边出现的位置,该颜色. 于是统计的是\(x < x_2,y > y_2,|z - z2| > k\)的数对数量. 因为\(CDQ\)分治的过程是,第一维事先排序,第二维递归进行,第三维用数据结构统计,所以 上述这个数量是很好处理的. // Problem: P3658 [USACO17FEB]Why Did th…
[题目链接] 点击打开链接 [算法] 二分答案,check的时候跑最大流,即可 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 2000 #define MAXB 1000 int i,j,low,high,mid,st,ed,N,B,tot,ans,tmp; int h[MAXN+MAXB],U[MAXN*MAXB],V[MAXN*MAXB], W[MAXN*MAXB],Head[MAXN*MAXB],Next[M…
[题目链接] 点击打开链接 [算法] SPFA + SLF / LLL 优化 [代码] #include<bits/stdc++.h> using namespace std; #define MAXT 25000 int i,T,R,P,S,u,v,w; ],vis[MAXT+]; vector<pair<]; template <typename T> void read(T &x) { ; ; ; } +c-'; x*=f; } inline void S…
[题目链接] 点击打开链接 [算法] dfs序 + 线段树 树链剖分同样可以解决这个问题 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 100010 int i,n,p,a,b,timer; ],sum[MAXN<<],size[MAXN],fa[MAXN],dfn[MAXN]; vector< int > e[MAXN]; inline void dfs(int u) { int i,v;…
[题目链接] 点击打开链接 [算法] 线段树 对于一个节点,记录它从左端点延伸的最多的空房间的个数,从右端点延伸的最多的空房间个数,和该区间最多的连续 空房间个数 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 50010 int n,m,opt,pos,x,d; struct SegmentTree { struct Node { int l,r,lm,rm,mx,tag; } Tree[MAXN*]; inlin…
题目描述 Farmer John's cows are trying to learn to cross the road effectively. Remembering the old "why did the chicken cross the road?" joke, they figure the chickens must be experts on crossing the road, and go off in search of chickens to help th…
题目背景 给定长度为2N的序列,1~N各处现过2次,i第一次出现位置记为ai,第二次记为bi,求满足ai<aj<bi<bj的对数 题目描述 The layout of Farmer John's farm is quite peculiar, with a large circular road running around the perimeter of the main field on which his cows graze during the day. Every morn…
1697: [Usaco2007 Feb]Cow Sorting牛排序 Description 农夫JOHN准备把他的 N(1 <= N <= 10,000)头牛排队以便于行动.因为脾气大的牛有可能会捣乱,JOHN想把牛按脾气的大小排序.每一头牛的脾气都是一个在1到100,000之间的整数并且没有两头牛的脾气值相同.在排序过程中,JOHN 可以交换任意两头牛的位置.因为脾气大的牛不好移动,JOHN需要X+Y秒来交换脾气值为X和Y的两头牛. 请帮JOHN计算把所有牛排好序的最短时间. Input…
Description Bessie准备用从牛棚跑到池塘的方法来锻炼. 但是因为她懒,她只准备沿着下坡的路跑到池塘,然后走回牛棚. Bessie也不想跑得太远,所以她想走最短的路经. 农场上一共有M(1<=M<=10,000)条路,每条路连接两个用1..N(1<=N<=1000)标号的地点. 更方便的是,如果X>Y,则地点X的高度大于地点Y的高度. 地点N是Bessie的牛棚;地点1是池塘. 很快, Bessie厌倦了一直走同一条路.所以她想走不同的路,更明确地讲,她想找出K…
题目地址 又是一道奶牛题 从左到右扫描,树状数组维护[左端点出现而右端点未出现]的数字的个数.记录每个数字第一次出现的位置. 若是第二次出现,那么删除第一次的影响. #include <cstdio> #include <cstring> #define re register #define GC getchar() #define Lowbit(X) (X&(-X)) #define Clean(X,K) memset(X,K,sizeof(X)) int Qread…
[Usaco2012 Open]Balanced Cow Subsets 题目描述 给出\(N(1≤N≤20)\)个数\(M(i) (1 <= M(i) <= 100,000,000)\),在其中选若干个数,如果这几个数可以分成两个和相等的集合,那么方案数加\(1\). 求有多少种选数的方案. 输入输出格式 输入格式: * Line 1: The integer $ N$. * Lines 2..1+N: Line i+1 contains \(M(i)\). 输出格式: * Line 1:…
题外话:维护区间交集子集的小套路 开两个树状数组,一个维护进入区间,一个维护退出区间 $Query:$ 给定询问区间$l,r$和一些其他区间,求其他区间中与$[l,r]$交集非空的区间个数 用上面维护的信息表示,就是$r$(含)前进入的区间个数$-l$(不含)前退出的区间个数 这个题: 我们可以把它抽象为,求区间对个数,要求区间对交集非空且互不包含 尝试像上面那样解决,$l$后进入$-r$后进入保证左端点满足要求,$l$后进入$-r$前退出,右端点满足要求 但是放到一起好像就有些问题了,尝试减掉…
#include<cstring> #include<cstdio> #include<algorithm> #include<set> using namespace std; int m,n; int SG[1000001]; int sg(int x) { if(SG[x]!=-1) return SG[x]; if(!x) return SG[x]=0; set<int>S; int maxv=0,minv=2147483647; int…
题目描述 给定长度为2N的序列,1~N各处现过2次,i第一次出现位置记为ai,第二次记为bi,求满足ai<aj<bi<bj的对数 样例输入 4 3 2 4 4 1 3 2 1 样例输出 3 题解 树状数组 WH说是CDQ分治直接把我整蒙了... 把所有数按照第一次出现位置从小到大排序,然后扫一遍.此时一定是满足$a_j>a_i$的. 那么只需要求出$(a_j,b_j)$中以前出现过的$b_i$的数目.使用树状数组维护即可. 时间复杂度$O(n\log n)$ #include &l…
题目描写叙述 农夫约翰的 N (1 ≤ N ≤ 50,000) 头奶牛,每天挤奶时总会按相同的顺序站好. 一日.农夫约翰决定为奶牛们举行一个"终极飞盘"比赛.为简化问题.他将从奶牛队列中选出一个连续区间来进行游戏. 只是,參加游戏的奶牛要玩的开心的话就不能在身高上差距太大. 农夫约翰制定了 Q (1 ≤ Q ≤ 200,000) 个预定的參赛组,给出它们的身高 (1 ≤ 身高 ≤ 1,000,000).对每一个參赛组.他须要你帮助确定组中最高牛和最低牛的身高差. 输入格式 第 1 行:…
本题是练习前缀和的好题!我们可以枚举前端点,确定一个长度为k的区间,然后利用前缀和统计区间内损坏的灯的数量,最后取最小值即可.AC代码: #include <bits/stdc++.h> using namespace std; inline int read()//快速读入 { ,x=; char c=getchar(); ') { ; c=getchar(); } ') { x=x*+c-'; c=getchar(); } return f*x; } ],s[],sum=; int mai…