[thuwc2017]在美妙的數學王國中暢遊
e和sin資訊不能直接合併
泰勒展開,大於21次太小,認為是0,保留前21次多項式即可
然後就把e,sin ,kx+b都變成多項式了,pushup合併
上lct
//luogu-judger-enable-o2
//luogu-judger-enable-o2
#include#define reg register int
#define il inline
#define fi first
#define se second
#define mk(a,b) make_pair(a,b)
#define numb (ch^'0')
#define ld double
using
namespace
std;
typedef
long
long
ll;template
il void rd(t &x)
template
il void output(t x)
template
il void ot(t x)
template
il void prt(t a,int st,int nd)
namespace
miracle
il ld &operator(const
int &x)
il const ld &operator(const
int &x) const
poly friend
operator +(const poly &a,const poly &b)
return
c; }
ld calc(ld x)
return
ret;
}};int c[30][30
];ld jie[k],ma[k],mb[k];
poly exp(
double a,double
b)
for(reg i=0;ii)
}return
ret;
}poly sin(
double a,double
b)
for(reg i=1;i2
)else
}}
return
ret;
}poly init(
int typ,double a,double
b)struct
nodet[n];
#define ls t[x].ch[0]
#define rs t[x].ch[1]
void pushup(int
x)bool nrt(int
x)void rev(int
x)void pushdown(intx)}
void rotate(int
x)int
sta[n];
void splay(int
x) rotate(x);
}pushup(x);
}void access(int
x)
}void makert(int
x)void link(int x,int
y)void split(int x,int
y)void cut(int x,int
y)int findrt(int
x)ld query(
int x,int
y,ld v)
char s[233
];int
main()
}jie[
0]=jie[1]=1
;
for(reg i=2;i<=k;++i)
for(reg i=1;i<=n;++i)
while(m--)
else
if(s[1]=='d'
)else
if(s[1]=='m'
)else
}return0;
}}signed main()
/*author: *miracle*
date: 2019/4/11 20:11:40
*/
多項式可以支援合併
獵奇!THUWC2017試機題
乙個長度為 n nn 的序列,選擇乙個長度為 k kk 的子串行,使得字典序最小。o n log n o n log n o nlogn 會被卡,要求線性。這題其實挺正常挺經典的。本質是貪心,假設目前是第 i ii 輪,上一輪選了第 x xx 個,那麼現在就是在 x 1,n k i x 1,n k ...
在美妙的數學王國中暢遊
數學王國有 n 座城市 森林狀 每個城市有三個引數 f,a,b 當乙個智商為 x 的人經過會得到 f x 的收益。有 m 個事件,分為 4 類 1 建邊 2 斷邊 3 修改乙個城市的引數 4 詢問乙個智商為 x 的人,判斷是否聯通,若聯通則答從 u 到 v 的收益和。除最下一檔,各檔分互不包含 刪邊...
白話一階數字濾波程式 數學與電學的美妙結合
我們先來看乙個式子 其中ka和kb是個定值,且相加為1 乍一看,嘿!這個不就是乙個很簡單的式子嗎 如果u k 是個電壓值,那麼這一次的計算值就等於這一次採集的值和上一次的計算值按比例分配。我們憑直覺就知道了,這樣搞一下之後有點類似於取平均值的感覺,有波動的資料搞一下應該會平滑一些。到這裡有童鞋就要問...