2016年10月2日
摘要: 单一标记线段树。 在给定数列上建树:build时读入即可。 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int N=100010; 5 long long tag[N<<2],sum[N<<2],c; 6 阅读全文
posted @ 2016-10-02 19:42 Absolutezero 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 三部曲 【问题描述】 因为外来的入侵,国王决定在某些城市加派士兵。所有城市初始士兵数量为0。当城市 i 被加派了 𝑘名 士兵时,城市 i 的所有子城市需要被加派 𝑘+1名士兵。这些子城市的所有子城市需要被加派 𝑘+2名士 兵。以此类推。当然,加派士兵的同时国王也需要不断了解前情况。于是他随时可 阅读全文
posted @ 2016-10-02 13:51 Absolutezero 阅读(434) 评论(0) 推荐(0) 编辑
摘要: 经典单调队列 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int N=1000010; 5 int maxq[N],minq[N],a[N],ans1[N],ans2[N],lmax,lmin,rmax, 阅读全文
posted @ 2016-10-02 13:46 Absolutezero 阅读(226) 评论(0) 推荐(0) 编辑
  2016年9月29日
摘要: 本质上,区间最大值; 高为区间长度,宽度为每个元素初始大小 PS:1 <= h,w <= 10^9,而n次放置都是放在可能位置的最上面 所以对于每一种case,取h和n的最小值建树 1 #include<cstdio> 2 #include<cstring> 3 using namespace st 阅读全文
posted @ 2016-09-29 21:27 Absolutezero 阅读(174) 评论(0) 推荐(0) 编辑
  2016年9月19日
摘要: 我们发现这道题是有后效性的……前面的决策会对后面的产生影响…… 所以我们可以反向考虑 f [ i ] 表示第i分钟至第n分钟的最大空闲时间 理论上应该排个序,不过默认有序了…… 转移方程:如果该时间有任务开始,f [ i ] = max( f [ i ],f [ i+e [ i ] ]) 如果没有任 阅读全文
posted @ 2016-09-19 20:54 Absolutezero 阅读(229) 评论(0) 推荐(0) 编辑
  2016年9月18日
摘要: 显然,若停靠站点为a1,a2,a3......an, 则a1--an中,没有停靠的站点一定等级比停靠的站点低。 所以每一趟车次从每个低等级的点向每个高级连边。 之后拓扑,每次删去点i(满足1.入度为零,2.没有删掉,3.不是在本轮循环中通过减入度而使i入度为零的) 以及与i相邻的边。 1 #incl 阅读全文
posted @ 2016-09-18 20:12 Absolutezero 阅读(407) 评论(0) 推荐(0) 编辑
  2016年9月17日
摘要: int read(){ int sum=0; char ch=getchar(),last=' '; while (ch'9'){ last=ch;ch=getchar(); } while (ch>='0'&&ch<='9'){ sum=sum*10+ch-'0'; ch=getchar(); } ... 阅读全文
posted @ 2016-09-17 20:08 Absolutezero 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 单一标记线段树 1 #include<cstdio> 2 #include<cstring> 3 #define lson i<<1,l,mid 4 #define rson i<<1|1,mid+1,r 5 using namespace std; 6 const int N=400020; 7 阅读全文
posted @ 2016-09-17 19:47 Absolutezero 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 线段树模板题 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int N=50010; 5 int t,n,h[N],sum[4*N]; 6 char ch[20]; 7 void update(int),b 阅读全文
posted @ 2016-09-17 19:44 Absolutezero 阅读(371) 评论(0) 推荐(0) 编辑
  2016年9月16日
摘要: tarjan缩点后找入度为零的强连通分量,加上它的sum即可 但注意到还有NO的可能, 所以大致有两种方法: 1.tarjan之前先来一遍bfs 2.tarjan内加一个数组维护最小编号 貌似前者比较好写qwq 1 #include<cstdio> 2 #include<cstring> 3 usi 阅读全文
posted @ 2016-09-16 17:00 Absolutezero 阅读(191) 评论(0) 推荐(0) 编辑