牛客周赛42

a-e非常签到

a

#include <bits/stdc++.h>

using namespace std;
#define int long long
#define ll long long
typedef pair<int, int> pii;
#define N 250005
#define endl '\n'
int mod=998244353;
void solve() {
	
	string s;
	cin>>s;
	if((s.length())>1){
		cout<<"kou";
	}
	else{
		cout<<"yukari";
	}
}


signed main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int t = 1;
//	cin >> t;

	while (t--) {
		solve();
	}
	return 0;
}

b

#include <bits/stdc++.h>

using namespace std;
#define int long long
#define ll long long
typedef pair<int, int> pii;
#define N 250005
#define endl '\n'
int mod=1e9+7;
int a[N];
void solve() {
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	string s;
	cin>>s;
	int len=s.length()-1;
	int ans=0;
	int now=1;
	for(int i=0;i<=len;i++){
        char c=s[i];
		if(c=='R'){
			now=min(now+1,n);
		}
		else{
			now=max(now-1,1ll);
		}
		ans+=a[now];
        ans%=mod;
        //cout<<c<<" "<<now<<'\n';
	}
	cout<<ans;
}


signed main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int t = 1;
//	cin >> t;

	while (t--) {
		solve();
	}
	return 0;
}

c

#include <bits/stdc++.h>

using namespace std;
#define int long long
#define ll long long
typedef pair<int, int> pii;
#define N 250005
#define endl '\n'
int mod=998244353;
int a[N];
void solve() {
	int n;
	cin>>n;
	
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	sort(a+1,a+n+1);
	set<int>s;
	if(n&1){
		s.insert(a[n]);
		int l=1,r=n-1;
		while(l<=r){
			s.insert(a[l]*a[r]);
            l++;
            r--;
		}
	}
	else{
		int l=1,r=n;
		while(l<=r){
			s.insert(a[l]*a[r]);
            l++;
            r--;
		}
	}
	cout<<*s.rbegin()-*s.begin();
	
}


signed main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int t = 1;
//	cin >> t;

	while (t--) {
		solve();
	}
	return 0;
}

d

#include <bits/stdc++.h>

using namespace std;
#define int long long
#define ll long long
typedef pair<int, int> pii;
#define N 250005
#define endl '\n'
int mod=998244353;
vector<int> a[N];
int c[N];
int mx;
int ans=0;
void dfs(int u,int fa,int sum){
	mx=max(mx,sum);
    c[u]+=1;
	for(auto v:a[u]){
		if(v==fa) continue;
		dfs(v,u,sum+1);
        if(c[v]%2==0){
            ans++;
        }
        else{
            c[u]+=c[v];
        }
	}
}
void solve() {
	int n;
	cin>>n;
	for(int i=1;i<=n-1;i++){
		int u,v;
		cin>>u>>v;
		a[u].push_back(v);
		a[v].push_back(u);
	}
	dfs(1,0,1);
	if(c[1]%2==1){
		cout<<-1;
	}
	else{
		cout<<ans;
       // cout<<-1;
	}
	
}


signed main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int t = 1;
//	cin >> t;

	while (t--) {
		solve();
	}
	return 0;
}

e

dp

#include<bits/stdc++.h>
using namespace std; 
const int N=1e6+6;
namespace modnum_space {
	typedef long long ll;
	const ll pmod = 1e9+7;
	struct modnum;
	modnum inv(modnum a);
	ll exgcd(ll a, ll b, ll &x, ll &y);
	modnum qpow(modnum a, modnum b, modnum p);
	
	struct modnum {
		ll val;
		modnum(){ val = 0; }
		modnum(ll a) { val = (a%pmod+pmod)%pmod; }
		modnum(int a) { val = (a%pmod+pmod)%pmod; }
		friend modnum operator + (const modnum &a, const modnum &b){ return (a.val+b.val)%pmod; }
		friend modnum operator - (const modnum &a, const modnum &b){ return (a.val-b.val+pmod)%pmod; }
		friend modnum operator * (const modnum &a, const modnum &b){ return (a.val*b.val)%pmod; }
		friend modnum operator / (const modnum &a, const modnum &b){ return (a.val*inv(b.val)).val%pmod; }
		friend modnum& operator += (modnum &a, const modnum &b){ return a = a+b; }
		friend modnum& operator -= (modnum &a, const modnum &b){ return a = a-b; }
		friend modnum& operator *= (modnum &a, const modnum &b){ return a = a*b; }
		friend modnum& operator /= (modnum &a, const modnum &b){ return a = a/b; }
	};
	
	modnum inv(modnum a)
	{
		ll x, y;
		exgcd(a.val, pmod, x, y);
		x = (x%pmod+pmod)%pmod;
		return x;
	}
	modnum qpow(modnum a, ll b)
	{
		modnum ans = 1;
		for(; b; b >>= 1, a *= a)
			if(b&1) ans *= a;
		return ans;
	}
	ll exgcd(ll a, ll b, ll &x, ll &y)
	{
		if(b == 0){ return x = 1, y = 0, a; }
		ll d = exgcd(b, a%b, x, y);
		ll z = x; x = y; y = z-(a/b)*y;
		return d;
	}
	
	
#ifdef _GLIBCXX_IOSTREAM
	std::istream& operator >> (std::istream& cin, modnum &a)
	{ cin >> a.val; a.val %= pmod; return cin; }
	std::ostream& operator << (std::ostream& cout, modnum a)
	{ cout << a.val; return cout; }
#endif
}
using namespace modnum_space;
#define z modnum
z dp[1005][1005];
z sl[1005][1005];
void solve() {
	int n,k;
	cin>>n>>k;
	string s;
	cin>>s;
	s=' '+s;
	z ans=0;
    sl[0][0]=1;
    for(int i=1;i<=n;i++){
        sl[i][0]=1;
        sl[i][1]=i;
		for(int j=1;j<=min(i-1,k-1);j++){
			sl[i][j+1]=sl[i-1][j];
            sl[i][j+1]+=sl[i-1][j+1];
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=0;j<=min(i-1,k-1);j++){
			dp[i][j+1]=dp[i-1][j]*10+(sl[i-1][j])*(s[i]-'0');
            dp[i][j+1]+=dp[i-1][j+1];
		}
	}
    cout<<dp[n][k]<<'\n';//104+52+02+22

}


signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	int t = 1;
	// cin >> t;
	while(t--){
		solve();
	}
	return 0;
}

f

概率dp,

#include<bits/stdc++.h>
using namespace std; 
const int N=1e6+6;
int mod=1e9+7;
namespace modnum_space {
	typedef long long ll;
	const ll pmod = 1e9+7;
	struct modnum;
	modnum inv(modnum a);
	ll exgcd(ll a, ll b, ll &x, ll &y);
	modnum qpow(modnum a, modnum b, modnum p);
	
	struct modnum {
		ll val;
		modnum(){ val = 0; }
		modnum(ll a) { val = (a%pmod+pmod)%pmod; }
		modnum(int a) { val = (a%pmod+pmod)%pmod; }
		friend modnum operator + (const modnum &a, const modnum &b){ return (a.val+b.val)%pmod; }
		friend modnum operator - (const modnum &a, const modnum &b){ return (a.val-b.val+pmod)%pmod; }
		friend modnum operator * (const modnum &a, const modnum &b){ return (a.val*b.val)%pmod; }
		friend modnum operator / (const modnum &a, const modnum &b){ return (a.val*inv(b.val)).val%pmod; }
		friend modnum& operator += (modnum &a, const modnum &b){ return a = a+b; }
		friend modnum& operator -= (modnum &a, const modnum &b){ return a = a-b; }
		friend modnum& operator *= (modnum &a, const modnum &b){ return a = a*b; }
		friend modnum& operator /= (modnum &a, const modnum &b){ return a = a/b; }
	};
	
	modnum inv(modnum a)
	{
		ll x, y;
		exgcd(a.val, pmod, x, y);
		x = (x%pmod+pmod)%pmod;
		return x;
	}
	modnum qpow(modnum a, ll b)
	{
		modnum ans = 1;
		for(; b; b >>= 1, a *= a)
			if(b&1) ans *= a;
		return ans;
	}
	ll exgcd(ll a, ll b, ll &x, ll &y)
	{
		if(b == 0){ return x = 1, y = 0, a; }
		ll d = exgcd(b, a%b, x, y);
		ll z = x; x = y; y = z-(a/b)*y;
		return d;
	}
	
	
#ifdef _GLIBCXX_IOSTREAM
	std::istream& operator >> (std::istream& cin, modnum &a)
	{ cin >> a.val; a.val %= pmod; return cin; }
	std::ostream& operator << (std::ostream& cout, modnum a)
	{ cout << a.val; return cout; }
#endif
}
using namespace modnum_space;
#define z modnum
z dp[100][100];
inline ll power(ll a,ll b,ll mod){
	if(b==0){
		return 1;
	}
	ll res = 1;
	while(b>0){
		if(b&1){
			res = (res*a)%mod;
		}
		a= (a*a)%mod;
		b>>=1;
	}
	return res;
}

void solve() {
	ll n;
	cin>>n;
	int x=0,y=0;
	while(n%2==0){
		x++;
		n/=2;
	}
	while(n%3==0){
		y++;
		n/=3;
	}
	if(n!=1){
		cout<<-1;
        return;
	}

	ll dm=power(2,mod-2,mod);
	for(int i=0;i<=x;i++){
		for(int j=0;j<=y;j++){
            if(i&&j)
			dp[i][j]=(3+dp[i][j-1]+dp[i-1][j])*dm;
            else if(i){
                dp[i][j]=(3+dp[i-1][j]);
            }
            else if(j)
            {
                dp[i][j]=(3+dp[i][j-1]);
            }
                
		}
	}
    //cout<<x<<' '<<y<<'\n';
	cout<<dp[x][y];
	
}


signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	int t = 1;
	// cin >> t;
	while(t--){
		solve();
	}
	return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值