“浮甘瓜于清泉,沉朱李于寒水”

read-normal-img

暂时不会再打牛客周赛了,除非有实时比赛

牛客周赛Round6

A

会模拟就行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define frep(i,a,n) for(int i=a;i>=n;i--)
#define int long long
const int N=1e5+100;
#define PII pair<int,int>
#define lowbit(x) (x&(-x))
const int mod=1e9+7;
const double pai=acos(-1.0);
#define ios ios::sync_with_stdio(0); cin.tie(0),cout.tie(0);
#define LF(x) fixed<<setprecision(x)
signed main()
{
ios;
string s;
int ans=0;
cin>>s;
int n=s.length();
s=" "+s;
rep(i,1,n)
{
if(s[i]=='0'||s[i]=='6'||s[i]=='9')
{
ans+=1;
}
else if(s[i]=='8')
{
ans+=2;
}
}
cout<<ans<<'\n';
return 0;
}

B

会分解就行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define frep(i,a,n) for(int i=a;i>=n;i--)
#define int long long
const int N=1e5+100;
#define PII pair<int,int>
#define lowbit(x) (x&(-x))
const int mod=1e9+7;
const double pai=acos(-1.0);
#define ios ios::sync_with_stdio(0); cin.tie(0),cout.tie(0);
#define LF(x) fixed<<setprecision(x)
signed main()
{
ios;
int n;
cin>>n;
while(n--)
{
int a,b;
cin>>a>>b;
int sum=0;
while(b)
{
sum+=b%10;
b/=10;
}
cout<<a*sum<<'\n';
}
return 0;
}

C

会定一求一就行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define frep(i,a,n) for(int i=a;i>=n;i--)
#define int long long
const int N=1e5+100;
#define PII pair<int,int>
#define lowbit(x) (x&(-x))
const int mod=1e9+7;
const double pai=acos(-1.0);
#define ios ios::sync_with_stdio(0); cin.tie(0),cout.tie(0);
#define LF(x) fixed<<setprecision(x)
int a[20];
void init()
{
a[0]=1;
rep(i,1,20)
{
a[i]=i*a[i-1];
}
}
signed main()
{
ios;
init();
//感觉可以枚举x的阶乘
//先处理出阶乘
//再进行枚举
//或许可行
//不过应该是要预处理出阶乘的
//来了
int n;
cin>>n;
int cha=1e18;
int ans_x;
int ans_y;
rep(i,1,15)
{
int y;
if(i==1)
{
y=1;
}
else
{
y=n/(a[i]-1)+1;
}
if(i==2)
{
continue;
}
rep(j,1,y)
{
if(j==2)
{
continue;
}
if(abs(a[i]*j-j-n)<cha)
{
cha=abs(a[i]*j-j-n);
ans_x=i;
ans_y=j;
}
}
}
cout<<ans_x<<' '<<ans_y<<'\n';

return 0;
}

D

会map加上一点点思维就行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define frep(i,a,n) for(int i=a;i>=n;i--)
#define int long long
const int N=1e5+100;
#define PII pair<int,int>
#define lowbit(x) (x&(-x))
const int mod=1e9+7;
const double pai=acos(-1.0);
#define ios ios::sync_with_stdio(0); cin.tie(0),cout.tie(0);
#define LF(x) fixed<<setprecision(x)
int a[N];
void Totoro()
{
int n,k,x;
unordered_map<int,vector<int> >mp;
cin>>n>>k>>x;
rep(i,1,n)
{
cin>>a[i];
mp[i%k].push_back(a[i]);
}
int sum=0;
for(auto &[_x,y]:mp)
{
sort(y.begin(),y.end());
int maxn=y.back();
for(auto &c:y)
{
sum+=maxn-c;
c=maxn;
}
}
if(sum>x)
{
cout<<-1<<'\n';
return ;
}
x-=sum;
int ans=*max_element(a+1,a+1+n);
for(auto &[_x,y]:mp)
{
ans=max(ll(ans),ll(y.back()+x/y.size()));
}
cout<<ans<<'\n';
}
signed main()
{
ios;
//这种题目一般有个规律
//a1+a2+a3=a2+a3+a4
//毫无疑问,a1=a4
//那么就是取模一定要相等了
//用哈希表记录取模值,找到最大,加上,不够久摆烂
//如果可以加那么加
//最后有剩下,遍历哈希表找到最大值就行了,这时候要整个取模相同的一起加了
//不过要记录不相等的元素还是unorder_map好一点
int t;
cin>>t;
while(t--)
{
Totoro();
}
return 0;
}
read-normal-img