牛客~第五届SCPC中南民族大学程序设计竞赛(同步赛)(重现赛)
D.SCPC
题目链接:D-S CPC_第五届SCPC中南民族大学程序设计竞赛(同步赛)(重现赛)@XuSihan (nowcoder.com)
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
typedef pair<int,int> PII;
const int N = 1e5+10;
int main()
{
int t;
cin >> t;
while(t -- )
{
int n;
cin >> n;
if(n >= 7 && n%2 == 1) cout << "A" << endl;
else if(n >= 15 && n%2 == 0) cout << "B" << endl;
else cout << "draw" << endl;
}
}
G.小白要写小白题
题目链接:G-小白要写小白题_第五届SCPC中南民族大学程序设计竞赛(同步赛)(重现赛)@XuSihan (nowcoder.com)
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
#define int long long
using namespace std;
int s[10]={0,1,2,3,4,5,6,7,8,9};
const int N=101;
int a[N],b[N],c[N],x[N],y[N];
signed main()
{
int n,t,p,f=1,ans=0,sum=0,maxx=0;
cin>>n>>t>>p;
for(int i=1;i<=n;i++)
cin>>a[i]>>b[i]>>c[i]>>x[i]>>y[i];
do
{
int ts=0;
sum=0,ans=0;
for(int i=1;i<=n;i++)
{
int k = s[i];
if(ts+x[k]<=t)
{
ts+=x[k];
ans+=max(c[k],a[k]-ts*b[k]-y[k]*p);
}
}
maxx=max(maxx,ans);
}
while(next_permutation(s+1,s+n+1));//全排列 也可以用dfs来进行排列
cout<<maxx<<endl;
return 0;
}
I.CSGO
题目链接:I-CSGO_第五届SCPC中南民族大学程序设计竞赛(同步赛)(重现赛)@XuSihan (nowcoder.com)
#include<bits/stdc++.h>
using namespace std;
#define x first
#define y second
#define endl '\n'
typedef long long ll;
const int mod=998244343;
typedef pair<int,int> PII;
typedef pair<int,PII> PIII;
#define int long long
const int N=1e5+100;
int a[N];
int n,m;
bool check(int x)
{
vector<int> v;
for(int i = 1;i<=n;i++)
v.push_back(a[i]+x*i);
int sum=0;
sort(v.begin(),v.end());
for(int i = 0;i<x;i++)sum+=v[i];
if(sum>m)return 0;
else return 1;
}
void solve()
{
cin>>n>>m;
for(int i = 1;i<=n;i++) cin>>a[i];
int l=0,r=n;
while(l<r)
{
int m = (l+r+1)/2;
if(check(m)) l=m;
else r=m-1;
}
cout<<l;
}
signed main()
{
std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);
solve();
return 0;
}