题目链接

A.Sheep and Wolves

题意:

题解:

AC代码

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int mod=1e9+7;
//const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=1e6+10;
const ll inf=0x3f3f3f3f;
const int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};


int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    int s,w;
    cin>>s>>w;
    if(w>=s)cout<<"unsafe";
    else cout<<"safe";

    return 0;
}


B. Battle

题意:




题解:


AC代码

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int mod=1e9+7;
//const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=1e6+10;
const ll inf=0x3f3f3f3f;
const int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};


int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    int a,b,c,d;
    cin>>a>>b>>c>>d;
    int cnt=1;
    while(a>0&&c>0){
        if(cnt&1)c-=b;
        else a-=d;
        cnt^=1;
    }
    if(a<=0)cout<<"No";
    else cout<<"Yes";
    return 0;
}


C.gacha

题意:

题解:

AC代码

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int mod=1e9+7;
//const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=1e6+10;
const ll inf=0x3f3f3f3f;
const int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};


int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    set<string> s;
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        string x;
        cin>>x;
        s.insert(x);
    }
    cout<<s.size();
    return 0;
}


D. Multiple of 2019

题意:



题解:





AC代码

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int mod=1e9+7;
//const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=1e6+10;
const ll inf=0x3f3f3f3f;
const int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};


int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    string s;
    cin>>s;
    int p=2019;
    map<int,ll> m;
    m[0]++;
    ll ans=0,sum=0,d=1;
    for(int i=s.length()-1;i>=0;i--){
        sum=(sum+d*(s[i]-'0')%p)%p;
        ans+=m[sum];
        m[sum]++;
        d=(d*10)%p;
    }
    cout<<ans;
    return 0;
}


E.Two Currencies

题意:




题解:











AC代码

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int mod=1e9+7;
//const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=1e6+10;
const ll inf=0x3f3f3f3f;
const int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};

struct edge{
    int v,nx;
    ll a,b;
}e[210];
int head[60],cnt;
ll c[60],d[60];
ll dis[60][3000];
void add(int u,int v,ll a,ll b){
    e[++cnt].v=v;
    e[cnt].a=a;
    e[cnt].b=b;
    e[cnt].nx=head[u];
    head[u]=cnt;
}
struct node{
    int u;
    ll s,t;
    bool operator <(const node &x)const{
        return t>x.t;
    }
};
ll dis1[100];
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    int n,m;
    ll s;
    cin>>n>>m>>s;
    for(int i=1;i<=m;i++){
        int u,v;
        ll a,b;
        cin>>u>>v>>a>>b;
        add(u,v,a,b);
        add(v,u,a,b);
    }
    for(int i=1;i<=n;i++)cin>>c[i]>>d[i];
    if(s>2500){
        for(int i=1;i<=n;i++)dis1[i]=inf*inf;
        dis1[1]=0;
        priority_queue<pii,vector<pii>,greater<pii> > q;
        q.push(mp(0,1));
        while(!q.empty()){
            pii p=q.top();
            q.pop();
            int u=p.se;
            if(dis1[u]<p.fi)continue;
            for(int i=head[u];i;i=e[i].nx){
                int v=e[i].v;
                if(dis1[v]>dis1[u]+e[i].b){
                    dis1[v]=dis1[u]+e[i].b;
                    q.push(mp(dis1[v],v));
                }
            }
        }
        for(int i=2;i<=n;i++)
            cout<<dis1[i]<<endl;
        return 0;
    }
    priority_queue<node> q;
    for(int i=1;i<=n;i++)
        for(int j=0;j<=50*n;j++)
            dis[i][j]=1e18;
    dis[1][s]=0;
    q.push((node){1,s,0});
    while(!q.empty()){
        node p=q.top();
        q.pop();
        int u=p.u;
        if(p.t>dis[u][p.s])continue;
        for(int i=head[u];i;i=e[i].nx){
            int v=e[i].v;
            if(p.s>=e[i].a&&dis[v][p.s-e[i].a]>dis[u][p.s]+e[i].b){
                dis[v][p.s-e[i].a]=dis[u][p.s]+e[i].b;
                q.push((node){v,p.s-e[i].a,dis[u][p.s]+e[i].b});
            }
        }
        ll ts=min(p.s+c[u],50ll*n);
        if(dis[u][ts]>dis[u][p.s]+d[u]){
            dis[u][ts]=dis[u][p.s]+d[u];
            q.push((node){u,ts,dis[u][p.s]+d[u]});
        }
    }
    for(int i=2;i<=n;i++){
        ll ans=1e18;
        for(int j=0;j<=50*n;j++)
            ans=min(ans,dis[i][j]);
        cout<<ans<<endl;
    }
    return 0;
}