長安大學校賽 2017

2021-07-31 03:23:38 字數 3384 閱讀 4096

a:水

#include

using

namespace

std;

int a[10]=;

int main()

int ans=0;

while(x)

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

}return

0;}

b:貪心,每遇到乙個字元,將其移動到合理的地方。

#include

using

namespace

std;

typedef

long

long ll;

const ll inf=1e18+7;

char s[200007];

int main()

ans=min(ans,res);

//bgbg

res=0;

g=b=0;

for(int i=0;iif(s[i]=='g'&&b>g) res+=b-g-1;

else

if(s[i]=='b'&&g>b) res+=g-b;

if(s[i]=='g') g++;

else b++;

}ans=min(ans,res);

cout

<< ans << endl;

}return

0;}

d:我們將詢問按照

x 排序,每得到乙個詢問將剩餘的滿足 a[

i]>=x的

b[i]

放入到資料結構中,然後查詢區間 [l

,r] 內大於等於

y 的元素數量,可以用到分塊+二分的資料結構離線動態查詢(因為不會樹套樹)。

見:codeforces-785e-anton and permutation(分塊區間查詢,動態查詢[l,r]內小於某個值的元素個數)

#include

#define mp make_pair

#define fi first

#define se second

using

namespace

std;

const

int maxn=1e5+7;

int a[maxn],b[maxn],bl,sz,n,p[maxn],ans[maxn];

struct block

;struct query

}q[maxn];

block block[350];

void init_block()

}int query(int l,int r,int x,int y)

else

return res;

}void update(int x)

bool cmp(int a,int b)

int main()

sort(q,q+m);

int cur=1;

for(int i=0;iwhile(cur<=n&&a[p[cur]]>=q[i].x) update(p[cur++]);

ans[q[i].id]=query(q[i].l,q[i].r,q[i].x,q[i].y);

}for(int i=0;iprintf("%d\n",ans[i]);

}return

0;}

e:設 dp

[i]為前

i 個的方案數, dp

[i]=

∑[j,

i]不含

重複元素

dp[j

]

#include

using

namespace

std;

typedef

long

long ll;

const ll mod=1e9+7;

ll dp[100007];

char s[100007];

int a[100007];

bool vis[26];

int main()

else

break;}}

cout

<< dp[n] << endl;

}return

0;}

g:同乙個集合中的任意兩點間沒有邊,表現在補圖中就是完全圖,不同集合間的任意兩點間有邊,表現在補圖中就是不同的集合屬於不同的聯通集。所以我們處理出補圖,進行上述的檢測就行了。

#include

using

namespace

std;

const

int maxn=1007;

bool g[maxn][maxn],vis[maxn];

vector

adj[maxn],p;

void dfs(int u)

}bool check()

return

true;

}int main()

for(int i=1;i<=n;i++) adj[i].clear();

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

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

if(!g[i][j])

int k=0;

bool flag=true;

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

if(flag&&k>=2) printf("%d\n",k);

else

puts("0");

}return

0;}

j:列舉每個字母就行。

#include

using

namespace

std;

typedef

long

long ll;

const

int inf=1e9+7;

char s[100007];

int a[100007];

int main()

ans+=res;

}cout

<< ans << endl;

}return

0;}

l:處理出所有符合條件的數,然後二分查詢就行了。

#include

using

namespace

std;

typedef

long

long ll;

vector

a;int main()}}

sort(a.begin(),a.end());

while(t--)

return

0;}

2023年西北大學校賽題解

這次其實打的不是很好,兩個小時a了七道題,但是第五題wa了42次,三個小時死磕,個人覺得並沒有任何問題,但是還是不知道為什麼錯哎。想法應該是一樣的,可能是細節問題吧。看了好久。感覺弱好弱,西交大佬都ak了。膜一發金牌爺。第乙個要補的題就是 cf 740 a。之所以要說這個是因為當時校賽就沒做出來,然...

湘潭大學校賽I

accepted 58 submit 349 time limit 5000 ms memory limit 65536 kb 作為一名即將畢業大學生,小明即將參加一系列的面試,每場面試都有乙個開始時間 si和乙個結束時間 ti。小明可以選擇參加面試或者放棄面試,但是遲到和早退是不允許的。每場面試對...

2017河南工業大學校賽 D rqy的鍵盤

題目描述 rqy在和妹子約會,突然女票打來 rqy騙女票他在寫 女票為了證實,問他鍵盤上f鍵左邊是哪個鍵。你能否幫助rqy回應女票的質問?不然他可就要寫思想匯報了.輸入輸入資料第一行是乙個整數 t 1 t 10000 表示測試資料的組數。之後每一行先是乙個大寫字母x 之後為乙個字串left或righ...