jsoi2015R2D2和R3D1測試總結

2022-08-22 21:24:12 字數 4401 閱讀 4518

傳送門:然而並沒有...

這兩天測試狀態比較奇怪,前面1.5h-2h完全不知所措,一臉茫然,感覺自己吃棗藥丸

後面才發現有很多題可捉的,並沒有想象的那麼難,但是時間已經不充裕了...

r2d2

t1:不知所措數學題

一開始總想著有什麼dp可以拿一些部分分

然而連30分dp都不會....

咦,好像有大樣例

那就找一發規律

媽呀真是2^(nk)

快速冪完事....

考完冷靜了一下發現還是比較容易證的

首先n位每位相互獨立,所以可以只考慮一位

設f[k]表示k*k的三角形的方案數

考慮f[k+1]怎麼遞推

如果最左下角的數是0,那麼最後一行已經確定了,都會是0

而且不會對上面的k*k的三角形有影響,所以方案數是f[k]

如果是1,同理,最左邊一行已經確定了,都必須是1

而且也不會對右邊的k*k的三角形有影響,所以方案數是f[k]

所以f[k+1]=2*f[k]

所以一位的答案就是2^k

n位乘起來就好了,答案就是2^(nk)

t2:資料結構題?

一看到這題我就覺得是資料結構題,然而想來想去並不知道怎麼維護....於是棄療了

後來我才發現乙個顯然的性質

就是最大和最小一定取在端點,不然不是最優

然後我們就可以分數規劃了

情況有點多

假設i是右端點,j是左端點

假設a[i]為max,a[j]為min

那麼(a[i]-a[j])/(i-j+k)=ans

變形得(a[i]-i*ans)-(a[j]-j*ans)=k*ans

所以我們二分一下ans,有滿足左邊大於右邊的,ans就可以更大

左邊最大值可以用單調佇列做

記a[i]=a[i]-ans*i

如果後面加進來的a[i]比隊尾要小,隊尾就沒有意義了,可以刪去

對於區間長度是[l,r]的限制,初始時保持距離為l,加入佇列時從隊頭刪去距離超過r-1的點即可

反過來類似,注意一些細節

另外就是區間長為l時

類似地,(a[i]-a[j])/(l-1+k)=ans

變形得:a[i]-a[j]=ans*(l-1+k)

也是二分,單調佇列維護即可

複雜度o(nlogmaxans)

t3:字串神題?

突然發現字串長<=10.....

拿個可持久化trie維護一下就好了

兒子節點從父親節點繼承trie,再把邊上的字串插入進去即可

每次用ans[x]+ans[y]-2*ans[lca]即可

r3d1

t1:一開始想到了乙個玄學做法,好像很複雜的樣子...然後就安心打暴力去了

後來證了一下發現是對了,加個bitset好像可以卡過

我們對於每個點求出它能到哪些點,記為g[i][maxn],這個可以壓位做到m*n/32

然後對於每個點v,處理哪些連向它的邊可刪

如果乙個它的前驅x能夠到它的另乙個前驅y

那麼顯然x連向它的邊可以刪去了

然後證明沒有其他可刪的邊

假設有乙個邊可刪,且不滿足上面的條件

那麼說明x到v有其他路徑

那麼這條路經一定要經過v的另乙個前驅z,那麼x可以到z,不符假設

所以不存在這樣的邊

具體實現就對每個點求乙個bitset,表示是否是x的前驅

在把它和每個前驅的g[i]and一下,如果有1,就說明可以從其他點過來,然後就可以刪掉這條邊

然後發現有點卡常,怕70分都沒了,於是只開到1000,70保平安...

然後發現標程壓64位.....

t2:神奇的插頭dp

媽呀200*200....

一定有特殊的dp方法

d了半天不知所措....

突然發現這是很簡單的網路流,每棟房子是乙個點,源向它連賣給a的權值,它向匯連賣給b的的權值,相鄰的點連建圍牆的權值,求出最小割,拿總收益減去就是了...

然後就是15分鐘寫網路流系列...

然後就爆零被教做人了...

t3:這個真是字串神題,看了標程好像是字尾陣列,暴力還掛了,不知所措...

得分情況:100+0+100+70+0+0

有些題目就是要敢於去想,要相信能寫出來

但是有時寫暴力求穩也是很重要的...

r2d1

t1:

#include#include#include#includetypedef long long ll;

const ll mod=(ll)1e9+7;

using namespace std;

int n,k;

ll qpow(int a,ll b)

return res;

}int main()

t2:

#include#include#include#include#includeconst double eps=1e-6;

const int maxn=100010;

using namespace std;

int cas,a[maxn],n,k,l,r;

struct tque

void pushmin(int p,double v)

void pushmax(int p,double v)

void pop1(int p)

void pop2(int p)

double top()

}q;bool check(double miu)

q.clear();

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

q.clear();

for (int i=1;i<=n;i++)

q.clear();

for (int i=1;i<=n;i++)

return 0;

}int main()

printf("%.4lf\n",l);

} return 0;}/*

15 1 2 4

1 2 3 4 5

*/

t3:

#include#include#include#includeconst int maxn=100010,maxm=200010,maxt=1200010;

using namespace std;

int n,q,pre[maxm],now[maxn],son[maxm],val[maxm][15],tot,pp[15],fa[maxn][22],dep[maxn];char tmp[15];

struct trie

now=ch[now][s[i]],pre=ch[pre][s[i]];

} for (int j=1;j<=26;j++) ch[now][j]=ch[pre][j];

} int query(int now,int s)

}t;void add(int a,int b)

void dfs(int x)

}int lca(int a,int b)

void change()

int main()e[maxm];

bitsetmap[maxn];

int n,m,ans,pw[maxn1],ord[maxn];bool g[maxn1][maxn1],con[maxn1][maxn1],tmp[maxn1][maxn1],bo[maxn1];

struct twork1

bool check(int s)

printf("%d\n",ans);

} }t2;

int main()

/*5 6

1 22 3

3 54 5

1 51 3

7 81 2

2 55 7

1 36 7

1 44 7

3 5*/

t2:#include#include#include#include#include#define aabs(a) (a>0?a:-(a))

const int maxn=500010,maxm=1000010,inf=(int)1e9;

using namespace std;

int n,m,ans,pre[maxm],now[maxn],son[maxm],val[maxm],tot,dis[maxn],head,tail,q[maxm+10];

int id(int x,int y)

struct flow

void ins(int a,int b,int c)

} return dis[t]>0;

} int find(int x,int low)

if (!y) dis[x]=-1;

return res;

} void work()

}f;void init()

for (int i=1;i

小公尺路由r2d論壇 小公尺路由器R2D拆機換3T紫盤

小公尺自帶1t對於我們這些高畫質迷是遠遠不夠的,可換硬碟大大方便了容量的增加,小公尺這款支援硬碟容量1 2 3 4 6 8t,不過注意的是換6t以上得把電源介面卡換12v 3.5a以上的才可以穩定帶起,不然會引起電壓不夠造成硬碟損壞,資料無價,這點注意了。這次換的是西數3t監控紫盤,24小時工作穩定...

2018SD省隊集訓R2 D2

我們並不需要知道相對應位置的數字是不是相等,只要置換之後的hash值相等就行了。hash 函式本身相當於每個位置乘上 x 的若干次方,置換之後只要改變次方的順序就好了。具體來說,設我們的base值是m,一段區間的hash值是 n i 0s i mi i 0nsi mi,然後乙個置換的hash值是 n...

Swift和R3聯手了,跨境支付市場競爭公升級

本週三,全球銀行支付網路swift ceo gottfried leibbrandt在巴黎金融科技論壇上宣布 將會與區塊鏈企業r3一起合作,將r3的平台與其新的支付標準框架gpi整合在一起。gpi全稱為global payments innovation,由swift組織發起 全球大型銀行參與的全球...