牛客编程巅峰赛S2第8场 - 钻石&王者
牛牛选物
https://ac.nowcoder.com/acm/contest/9887/A
A 牛牛选物
解题思路:n<=20,2^20属于1e6级别大小,所以用01表示选不选物品然后枚举找到符合条件的最大值即可。
int Maximumweight(vector<int>& v, vector<int>& g, int V) { // write code here int mx=-1,n=v.size(); for(int i=0;i<1<<n;++i){ int j=0,sv=0,sg=0,p=i; while(p>0){ sv+=p%2*v[j],sg+=p%2*g[j]; j++; p/=2; } if(sv==V)mx=max(mx,sg); } return mx; }
B 牛牛与字符串2
解题思路:s.size()<=10^6,所以直接从最长的n-1长度进行比较即可。
int solve(string s) { // write code here int n=s.size(),i=0,k=n-1; for(k=n-1;k>0;--k){ int j=n-i-k,m=k; while(s[i]==s[j]&&m--)i++,j++; if(m)i=0;//如果k长度不满足就从头开始 else return k; } return -1; }