a:
和某題很像,這題是帶修改版本的
考慮把每條邊(u
,v,w
) (u,
v,w)
邊權加到他連線的兩點u,
v u,v
上 當a,b中某人同時取了u,
v u,v
,他獲得2w
2
w的價值,對差值貢獻±2
w ±2w
當a,b一人取了
u u
,一人取了
v'>v
v,各獲得
w w
,對差值貢獻
0'>00
發現將差值/2
/
2後和原來取邊的情況等價
問題變成了
n n
個點,取每個點有點權,a,b輪流取,a想最大化a-b,b反之
顯然a,b會輪流取最大權的點
我們只要維護點權排序後奇數字置的權值和偶數字置的權值
帶修改,修改=刪除+插入
寫一棵splay維護
code:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
using
namespace
std;
ll ans;
inline
void read(ll &x)
inline
void up(int &a,const
int &b)
if(l!=x) fa[son[x][0]=build(l,x-1)]=x;
if(x!=r) fa[son[x][1]=build(x+1,r)]=x;
pushup(x);
return x;
}void pushup(int x)
void rot(int x,int &k)
void splay(int x,int &k)
pushup(x);
}int go(int x,int t)
void del(int x)
else fa[root=son[x][1]]=0;
pushup(root);
}void ins(int x)}}
ll cal()
}tr;
int main()
else
ans=tr.cal()>>1;
printf("%lld\n",ans);
ans*=o;
}return
0;}
b:
突然就成了板子題?
設起點從左到右為a1
,a2....an
'>a1,
a2....an
a1,a
2....an
,終點從左到右b1
,b2.....bn
b 1,
b2.....bn
因為不能路徑相交,最終路徑顯然是a1
−>b1
,a2−
>b2
,a3−
>
b3.....an
−>bn
a 1−
>b1
,a2−
>b2
,a3−
>
b3.....an
−>bn
先考慮怎麼求點
s s
到t'>t
t,不經過障礙點的方案數 將t
t
看作障礙點,設f[
i]'>f[i
]f[i
]表示s s
到第i'>i
i個障礙點,中途不經過其他障礙點的方案數,轉移的時候容斥一下,總方案數減不合法的,不合法的通過列舉遇到的第乙個障礙點計算f[
i]=w
ays(
s,i)
−∑f[
j]wa
ys(j
,i) f[i
]=wa
ys(s
,i)−
∑f[j
]way
s(j,
i)
然後設m[i
][j]
m [i
][j]
表示ai
a
i到bj
b
j不經過障礙點的方案數,根據某定理,這個n∗
n n∗n
的矩陣的行列式就是路徑兩兩不想交的總方案數
感受一下似乎就是個容斥
code:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
using
namespace
std;
const
int maxc = 210000;
const
int maxn = 405;
const
int mod = 998244353;
inline
void add(int &a,const
int &b)
inline
void dec(int &a,const
int &b)
int pw(int x,int k)
int inv(int x)
int s[maxc],invs[maxc];
void pre()
int c(int i,int j)
int n,m,p,q;
struct point
}st[maxn],ed[maxn],pi[maxn];
inline
bool cmp(const point x,const point y)
if(k)
else
continue;
}int ii=inv(a[i][i]);
for(int j=1;j<=n;j++) if(a[j][i]&&j!=i)
}int ans=1;
for(int i=1;i<=n;i++) ans=(ll)ans*a[i][i]%mod;
return ans;
}}int f[maxn];
int main()
}printf("%d\n",gauss::solve());
return
0;}
c:
simpson積分能拿50pt
求凸多邊形和所有圓並面積,圓並面積,凸多邊形面積
算面積格林公式變二重積分,然後找每條線段,每個圓的圓弧,在邊界上的部分,叉積積分一下算面積
反正我不會
題解 六省聯考2017
題目順序不是做題順序也不是考試順序更不是難度順序,是隨機順序。為了不影響 體驗決定把 刪去,需要請私信我,qq或皆可。題目裡的難度評分是個人評分,僅供參考開心就好。題意是給定期末考試每門課的出分時間和學生希望的出分時間,如果學生要等就會有不滿意度。你可以進行老師的增加和調換操作,但是都會產生不滿意度...
六省聯考2017 題解
t1 期末考試 題意 有 n 位同學,每位同學都參加了全部的 m 門課程的期末考試,都在焦急的等待成績的公布。第 i 位同學希望在第 t i 天或之前得知所有課程的成績。如果在第 t i 天,有至少一門課程的成績沒有公布,他就會等待最後公布成績的課程公布成績,每等待一天就會產生 c 不愉快度。對於第...
六省聯考2017題解
觀察資料範圍,發現 n 非常大,但是 k 和 r 很小,容易想到矩陣乘法。原題式子的組合意義就是從 n times k 個物品選擇 i i bmod k r 個物品。考慮dp,設 f 表示從 i 個物品中選擇 s s bmod k j 個物品。由於 c c c 因此可以推出 f f f 發現所有的 ...