牛客練習賽45

2021-09-20 21:15:39 字數 1761 閱讀 3351

a  qaq:

dp[i][0]表示前i個字元可以組成的"q",dp[i][1]表示前i個字元可以組成的"qa",dp[i][2]表示前i個字元可以組成的"qaq"。掃一遍即可。

#includeusing namespace std;

#define ll long long

const int maxn=1e5+10;

char t[5005];

ll dp[maxn][3];

int main()

else if(t[i]=='a')

else

}printf("%lld\n",dp[len][2]);

return 0;

}

b  tic-tac-toe:

暴力列舉

#includeusing namespace std;

char t[5][5],txt[5][5];

bool ok()

if(txt[1][1]=='w'&&txt[2][2]=='w'&&txt[3][3]=='w')

return 1;

if(txt[1][3]=='w'&&txt[2][2]=='w'&&txt[3][1]=='w')

return 1;

return 0;

}bool cal()}}

return 0;

}bool check2()

txt[i][j]='#';

if(!cal())

return 1;}}

}return 0;

}bool check1()

int main()

return 0;

}

c  buy fruits:

對於n為偶數的情況,例如n=10,發現按如下構造即可:

9,7,5,3,1,0,8,6,4,2

對於奇數的情況特判n==1,其他情況均為不可行

#includeusing namespace std;

int a[100005];

int main()

int cnt=0,ans=0;

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

}return ans>=k;

}int ask()

};vectorg[maxn];

int level[maxn],iter[maxn];

void add_edge(int from,int to,int cap)

void bfs(int s)}}

}int dfs(int v,int t,int f)}}

return 0;

}int max_flow(int s,int t)

return flow;

}int a[44],b[44],c[44][44],mp[20002];

int main()

mp[n*n+i]=-a[i];

mp[n*n+n+i]=-b[i];

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

int s=0,t=n*n+2*n+m+1;

for(int i=1;i0)

add_edge(s,i,mp[i]);

else

add_edge(i,t,-mp[i]);

}printf("%d\n",sum-max_flow(s,t));

return 0;

}

牛客練習賽45 C Buy Fruits

在blueland上有 n n個水果店,它們的編號依次為 0,1,2.n 1 0,1,2.n 1。奇妙的是,每個水果店都只賣一種水果,且這些水果店賣的水果種類都各不相同。在每個水果店有乙個傳送門,且這些傳送門也有各自的編號,其中 i i號水果店的傳送門編號為 ai ai,每個傳送門的編號也各不相同,...

牛客練習賽9

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 珂朵莉想每天都給威廉送禮物,於是她準備了n個自己的本子 她想送最多的天數,使得每天至少送乙個本子,但是相鄰兩天送的本子個數不能相同 珂朵莉最多送幾天禮物呢 第一行乙個整...

牛客練習賽15

時間限制 c c 2秒,其他語言4秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 第一次期中考終於結束啦!沃老師是個語文老師,他在評學生的作文成績時,給每位學生的分數都是乙個小於10的非負小數。amy 8.99999999999999999999...