傳送門:然而並沒有...
這兩天測試狀態比較奇怪,前面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組織發起 全球大型銀行參與的全球...