紫書訓練 7 16

2021-09-25 09:17:02 字數 3959 閱讀 7859

差分約束+cdq分治+虛樹

密碼:996996

差分約束的部落格

虛樹部落格  

虛樹還沒有學習

差分約數裸題

#include#include#include#include#include#include#include#include#include#include#include#define il inline

#define pb push_back

#define fi first

#define se second

#define ms(_data,v) memset(_data,v,sizeof(_data))

#define sc(n) scanf("%d",&n)

#define sc(n,m) scanf("%d %d",&n,&m)

#define sz(a) int((a).size())

#define rep(i,a,b) for(int i=a;i<=b;++i)

#define drep(i,a,b) for(int i=a;i>=b;--i)

using namespace std;

typedef long long ll;

const ll inf=0x3f3f3f3f;

const double pi=acos(-1.0);

const double eps=1e-9;

const int maxn=1e5+5;

int dist[maxn];

int pushnum[maxn];

bool vis[maxn];

struct edge ;

vectortt[maxn];

int n,ml,md;

bool spfa(int start) }}

} }return true;

}int main()

rep(i,1,md)

if(!spfa(1)) cout<<-1《也是模板題

#include#include#include#include#include#include#include#include#include#include#include#define il inline

#define pb push_back

#define fi first

#define se second

#define ms(_data,v) memset(_data,v,sizeof(_data))

#define sc(n) scanf("%d",&n)

#define sc(n,m) scanf("%d %d",&n,&m)

#define sz(a) int((a).size())

#define rep(i,a,b) for(int i=a;i<=b;++i)

#define drep(i,a,b) for(int i=a;i>=b;--i)

using namespace std;

typedef long long ll;

const ll inf=0x3f3f3f3f;

const double pi=acos(-1.0);

const double eps=1e-9;

const int maxn=1e5+5;

int dist[maxn];

int pushnum[maxn];

bool vis[maxn];

struct edge ;

vectortt[maxn];

int t,n,xx,yy;

bool spfa(int start) }}

} }return true;

}int main()

rep(i,1,yy)

if(!spfa(1)) cout<<-1《解決三維問題,先隊一維排序,然後再對一維排序,然後用樹狀陣列解決第三維。

#include#define il inline

#define pb push_back

#define fi first

#define se second

#define ms(_data,v) memset(_data,v,sizeof(_data))

#define sc(n) scanf("%d",&n)

#define sc(n,m) scanf("%d %d",&n,&m)

#define sz(a) int((a).size())

#define rep(i,a,b) for(int i=a;i<=b;++i)

#define drep(i,a,b) for(int i=a;i>=b;--i)

using namespace std;

typedef long long ll;

const ll inf=0x3f3f3f3f;

const double pi=acos(-1.0);

const double eps=1e-9;

const int maxn=2e5+5;

int sum[maxn],tot,ans[maxn/2],n,k;

il void add(int p,int k)

il int ask(int p)

struct node a[maxn/2];

bool cmp(node a,node b)

a[i].ans+=ask(a[i].z);

} for(int i=l; i太妙了呀,查詢拆成4個點,剛學cdq,果然還是不能好好使用。資料裡的s都是0,所以初始值就不考慮了,考慮得話加一下就行了。

#include#define il inline

#define pb push_back

#define fi first

#define se second

#define ms(_data,v) memset(_data,v,sizeof(_data))

#define sc(n) scanf("%d",&n)

#define sc(n,m) scanf("%d %d",&n,&m)

#define sz(a) int((a).size())

#define rep(i,a,b) for(int i=a;i<=b;++i)

#define drep(i,a,b) for(int i=a;i>=b;--i)

using namespace std;

typedef long long ll;

const ll inf=0x3f3f3f3f;

const double pi=acos(-1.0);

const double eps=1e-9;

const int maxn=2e5+5;

int sum[maxn*10],ans[maxn],tot;

int s,w,op;

il void add(int p,int x)

il int ask(int x)

struct nodeq[maxn<<2],tp[maxn<<2];

bool cmp(node a,node b)

int l1=l,l2=mid+1;

for(int i=l;i<=r;++i)

for(int i=l;i<=r;++i) q[i]=tp[i];

cdq(l,mid),cdq(mid+1,r);

return ;

}int main() ;

} else if(op==2);

q[++tot]=node;

q[++tot]=node;

q[++tot]=node;

} }sort(q+1,q+tot+1,cmp);

cdq(1,tot);

rep(i,1,cnt) printf("%d\n",ans[i]);

return 0;

}

紫書訓練 7 11

貪心場次 密碼 996996 有點思維 include define il inline define pb push back define fi first define se second define ms data,v memset data,v,sizeof data define sc...

巢狀矩形(DAG模型) 紫書訓練

題目描述 有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x a,b 可以巢狀在矩形y c,d 中當且僅當a紫書上有題目,但是沒有寫題出自 只好自己大致寫一下題目了.做題感受 經典的dp問題,但是由於我剛入門dp並不能特別快理解,想出來了還好說。思路 狀態轉移方程d i max.d i 表示...

紫書 STL初步

檢索 int p lower bound a,a n,x a 因為是返回位置所以要減掉起始位置 vector 不定長陣列 a.size 讀大小,a.resize 改變大小,a.push back 向尾部新增元素,a.pop back 刪除最後乙個元素 empty 測試是否為空 vector是模板類 ...