第十三届山东省ICPC大学生程序设计竞赛

A - Orders

statements
#include <bits/stdc++.h>
#define int long long
#define fi first
#define se second
using namespace std;
pair<int,int> p[110];
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin>>t;
    while(t--){
        int n,k;
        cin>>n>>k;
        for(int i=1;i<=n;i++)
            cin>>p[i].fi>>p[i].se;
        sort(p+1,p+n+1);
        int now=0;
        bool flag=1;
        for(int i=1;i<=n;i++){
            now+=(p[i].fi-p[i-1].fi)*k;
            now-=p[i].se;
            if(now<0){
                cout<<"No\n";
                flag=0;
                break;
            }
        }
        if(flag) cout<<"Yes\n";
    }
    return 0;
}

I - Three Dice

statements
#include <bits/stdc++.h>
#define int long long
using namespace std;
bool check(int x){
    if(x==1||x==4) return 1;
    return 0;
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    int a,b;
    cin>>a>>b;
    map<pair<int,int>,int> mp;
    for(int i=1;i<=6;i++){
        for(int j=1;j<=6;j++){
            for(int k=1;k<=6;k++){
                int xa=0,xb=0;
                if(check(i)) xa+=i;
                else xb+=i;
                if(check(j)) xa+=j;
                else xb+=j;
                if(check(k)) xa+=k;
                else xb+=k;
                mp[make_pair(xa,xb)]=1;
            }
        }
    }
    if(mp.count({a,b})==0) cout<<"No\n";
    else cout<<"Yes\n";
    return 0;
}

G - Matching

statements
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10;
int a[N];
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin>>t;
    while(t--){
        int n;
        cin>>n;
        unordered_map<int,vector<int>> mp;
        for(int i=1;i<=n;i++){
            cin>>a[i];
            mp[a[i]-i].push_back(a[i]);
        }
        int ans=0;
        for(auto p:mp){
            vector<int> vec=p.second;
            sort(vec.begin(),vec.end(),greater<int>());
            int m=vec.size();
            for(int i=0;i+1<m;i+=2){
                if(vec[i]+vec[i+1]<0) break;
                ans+=vec[i]+vec[i+1];
            }
        }
        cout<<ans<<'\n';
    }
    return 0;
}

D - Fast and Fat

statements
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10;
int v[N],w[N];
int n;
bool check(int x){
    vector<int> P,Q;
    for(int i=1;i<=n;i++){
        if(v[i]>=x) P.push_back(v[i]+w[i]-x); 
        else Q.push_back(w[i]);
    }
    sort(P.begin(),P.end(),greater<int>());
    sort(Q.begin(),Q.end(),greater<int>());
    int siz_p=P.size();
    int siz_q=Q.size();
    if(siz_p<siz_q) return 0;
    else{
        for(int i=0;i<siz_q;i++)
            if(P[i]<Q[i]) return 0;
        return 1;
    }
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin>>t;
    while(t--){
        cin>>n;
        for(int i=1;i<=n;i++) cin>>v[i]>>w[i];
        int r=*max_element(v+1,v+n+1),l=0;
        int ans=0;
        while(l<=r){
            int mid=(l+r)>>1;
            if(check(mid)) ans=mid,l=mid+1;
            else r=mid-1;
        }
        cout<<ans<<'\n';
    }
    return 0;
}

L - Puzzle: Sashigane

statements
solutions
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n,i,j;
    cin>>n>>i>>j;
    int U=i,D=i;
    int L=j,R=j;
    cout<<"Yes\n"<<n-1<<'\n';
    for(int k=0;k<n;k++){
        if(L>1&&U>1){
            L--,U--;
            cout<<U<<' '<<L<<' '<<D-U<<' '<<R-L<<'\n';
        }
        else if(L>1&&D<n){
            L--,D++;
            cout<<D<<' '<<L<<' '<<U-D<<' '<<R-L<<'\n';
        }
        else if(R<n&&U>1){
            R++,U--;
            cout<<U<<' '<<R<<' '<<D-U<<' '<<L-R<<'\n';
        }
        else if(R<n&&D<n){
            R++,D++;
            cout<<D<<' '<<R<<' '<<U-D<<' '<<L-R<<'\n';
        }
    }
    return 0;
}
statements
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容