#2007. 「SCOI2015」国旗计划 思路: 跪烂Claris 代码: #include <cstdio> #include <algorithm> #define maxn 800010 ],bi[maxn],f[maxn<<],st[maxn]; ],q[maxn<<],t,ans[maxn],L,x,y,i; inline void in(int&a) { char c; '))); a=c-)+=c-'; } inline int lo…
「SCOI2015」国旗计划 蛮有趣的一个题 注意到区间互不交错,那么如果我们已经钦定了一个区间,它选择的下一个区间是唯一的,就是和它有交且右端点在最右边的,这个可以单调队列预处理一下 然后往后面跳拿倍增优化一下 Code: #include <cstdio> #include <cctype> #include <algorithm> #define int unsigned int const int N=4e5+10; template <class T&g…
#2007. 「SCOI2015」国旗计划   题目描述 A 国正在开展一项伟大的计划 —— 国旗计划.这项计划的内容是边防战士手举国旗环绕边境线奔袭一圈.这项计划需要多名边防战士以接力的形式共同完成,为此,国土安全局已经挑选了 N NN 名优秀的边防战上作为这项计划的候选人. A 国幅员辽阔,边境线上设有 M MM 个边防站,顺时针编号 1 11 至 M MM.每名边防战士常驻两个边防站,并且善于在这两个边防站之间长途奔袭,我们称这两个边防站之间的路程是这个边防战士的奔袭区间.N NN 名边防…
#2011. 「SCOI2015」情报传递 思路: 可持久化树状数组模板: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 200005 #define maxm maxn*100 int deep[maxn],f[maxn],id[maxn],top[maxn],cnt,soot; int head[maxn],V[maxn],E[maxn],lar[maxn],size[maxn]; ],tot,Tl,Tr,n,…
「SCOI2015」小凸玩矩阵 思路: 二分+最大流: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 300 #define maxque 666666 #define INF 0x3f3f3f3f ],cnt,s,t; ],que[maxque<<]; inline void in(int &now) { ; ')Cget=getchar(); ') { now=now*+Cget-'; Cg…
#2018. 「HNOI2017」单旋 思路: set+线段树: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 #define maxtree maxn<<2 int val[maxtree],tag[maxtree],L[maxtree],R[maxtree],mid[maxtree]; ],f[maxn],root; set<int>Set; inline void in(…
「SCOI2016」幸运数字 思路: 线性基: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 20005 #define ll long long struct DataType { ll d[],p[]; ll cnt; DataType() { memset(d,,sizeof(d)); memset(p,,sizeof(p)); cnt=; } bool insert(long long val) { ;i&…
#2012. 「SCOI2016」背单词 思路: Orz: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 #define maxm 510005 ],tot=,len,head[maxm],E[maxm],V[maxm],cnt=; int val[maxm],cnt2,size[maxm],sta[maxm],top; long long ans,sum; char line[maxm]; inli…
「SDOI2017」序列计数 思路: 矩阵快速幂: 代码: #include <bits/stdc++.h> using namespace std; #define mod 20170408 #define ll long long struct MatrixType { int n,m; ll ai[][]; void mem(int n_,int m_) { n=n_,m=m_; ;i<=n;i++) ;v<=m;v++) ai[i][v]=; } MatrixType op…
好久没更过博了.. 首先断环为链,因为线段互相不包含,所以对每个线段\(i\)可以找一个满足\(r_j\geq l_i\)的\(l_j\)最小的线段,dp的时候\(i\)就会从\(j\)转移过来 然后就j点到i点连一条边,形成了一个森林 找方案可以枚举最右边的人\(r\),暴力向左跳,跳到一个\(x\)使得\(l_x+m\geq r\)就停下.r,x距离就是方案的人数,可以差分标记这些人 就做完了 注意断环为链的时候有些线段要copy一份 #include<bits/stdc++.h> #de…