打的慘不忍睹,就過了3題
1004:水題,直接輸出yes就過了, solved by lyy
1010:逆序對*min(x,y) ,隊友一開始wa了4發,給了他模板都不肯抄,偷懶隨便上網找了兩個逆序對的模板恰巧都是錯的,gg finally solved by lyy#include using namespace std;
#define ll long long
int n;
int main()
return 0;
}
#include using namespace std;
#define ll long long
ll cnt;
int n;
int a[500005],t[500005];
int x,y;
void merge_sort(int *a,int x,int y,int *t)
" class="mathcode" src=""/>,維護區間最小值,每次區間減一,如果為0,就需要進製,對應第二個線段樹更新;第二個存的是答案,最終輸出答案即可,一開始以為會炸,在極端情況下有可能到o(n^2),但是直接ac了
#include using namespace std;
#define ll long long
#define maxn 100005
int b[100005];
int n,m;
namespace lyy
//build函式建樹
void build(int l,int r,int rt)
int m=(l+r)>>1;
//左右遞迴
build(l,m,rt<<1);
build(m+1,r,rt<<1|1);
//更新資訊
pushup(rt);
} void update(int l,int c,int l,int r,int rt)
int m=(l+r)>>1;
//根據條件判斷往左子樹呼叫還是往右
if (l<=m) update(l,c,l,m,rt<<1);
else update(l,c,m+1,r,rt<<1|1);
pushup(rt);//子節點更新了,所以本節點也需要更新資訊
} void pushdown(int rt,int ln,int rn)
}void update(int l,int r,int c,int l,int r,int rt)
int m=(l+r)>>1;
pushdown(rt,m-l+1,r-m);//下推標記
//這裡判斷左右子樹跟[l,r]有無交集,有交集才遞迴
if (l<=m) update(l,r,c,l,m,rt<<1);
if (r>m) update(l,r,c,m+1,r,rt<<1|1);
pushup(rt);//更新本節點資訊
}ll query(int l,int r,int l,int r,int rt)
int m=(l+r)>>1;
//下推標記,否則sum可能不正確
pushdown(rt,m-l+1,r-m);
//累計答案
ll ans=0;
if(l <= m) ans+=query(l,r,l,m,rt<<1);
if(r > m) ans+=query(l,r,m+1,r,rt<<1|1);
return ans;
}}
int sum[maxn<<2],add[maxn<<2];//sum求和,add為懶惰標記
int a[maxn];//存原陣列資料下標[1,n]
//pushup函式更新節點資訊 ,這裡是求和
void pushup(int rt)
//build函式建樹
void build(int l,int r,int rt)
int m=(l+r)>>1;
build(l,m,rt<<1);
build(m+1,r,rt<<1|1);
pushup(rt);
} void pushdown(int rt) }
void go(int l,int r,int rt)
void update(int l,int r,int l,int r,int rt)
else
return;
} int m=(l+r)>>1;
pushdown(rt);
if (l<=m) update(l,r,l,m,rt<<1);
if (r>m) update(l,r,m+1,r,rt<<1|1);
pushup(rt);
}int query(int l,int r,int l,int r,int rt)
int m=(l+r)>>1;
pushdown(rt);
int ans=0;
if(l <= m) ans+=query(l,r,l,m,rt<<1);
if(r > m) ans+=query(l,r,m+1,r,rt<<1|1);
return ans;
}int main()
build(1,n,1);
memset(add,0,sizeof(add));
for (int i=1;i<=m;i++)
}return 0;
}
2018多校聯合訓練4
過了6題,第一次進入前100名 1012 直接從1走到n solved by wyq include includeint a 100005 int reabs int x int main return 0 1004 和出題人心有靈犀2333 solved by lyy include using...
2018 多校聯合訓練 7
problem a 比賽的時候沒主要搞這個題 因為不怎麼會 其實就是類似做dij的乙個過程,記錄3個值 當前點編號,到當前點的代價,當前點的那條邊的顏色。然後遍歷一遍就可以了。problem b 本來比賽的時候想到不同的字母之間的差值肯定不能作為迴圈節。然後我就上了fft,因為做過差不多的題。但是w...
2018 多校聯合訓練 1
problem a 首先解方程 frac frac frac n frac frac frac 1 如果 a,b,c 都必須為正整數,那麼令 a b c 那麼 a 3 所以 2 a 3 a 2 的時候 b 3,c 6,或者 b 4,c 4 顯然前者好像比較垃圾,那麼捨去 a 3 的時候 frac f...