Codeforces Round #625解题报告

2022-08-15 12:37:39 浏览数 (1)

记录丢人点滴

虽然真的很丢人 但是看了一下大家代码发现我至少代码还是短(?

A: Contest for Robots

题目链接 题意:两种机器人对于n个问题有会和不会(1和0) 希望第一种的得分比第二种高 要如何安排问题分数分布 要求分数中最大的尽量小 算一下第一种比第二种多的1和0 除一下 可能会除零 要先判掉再除

代码语言:javascript复制
#include<bits/stdc  .h>
#define pf printf
#define sc(x) scanf("%d", &x)
#define rep(i,s,e) for(int i=s; i<e;   i)
using namespace std;
int a[105],b[105];
int main(){
    int n,c1(0),c2(0); sc(n);
    rep(i,0,n) sc(a[i]);
    rep(i,0,n){
        sc(b[i]);
        if(a[i]==b[i]) continue;
        else if(a[i]>b[i]) c1  ;
        else c2  ;
    } 
    if(!c1) return pf("-1n"),0;
    int ans=(c2 c1)/c1;
    pf("%dn",ans>0?ans:0);
}

B: Journey Planning

题目链接 题意:希望选择b的总和尽量大且满足选中的bi,bj有i-j==bi-bj 每个b去减去i 找相同的 数组存的话加上n也行 但是map就是香啊 要ll 赛时比较草率qwq

代码语言:javascript复制
#include<bits/stdc  .h>
#define pf printf
#define sc(x) scanf("%lld", &x)
#define rep(i,s,e) for(int i=s; i<e;   i)
using namespace std;
typedef long long ll;
#define int ll
typedef pair<int,int> pii;
const int maxn = 2e5   5;
int a[maxn];
map<int,int>ans;
signed main(){
    int n,mx(0); sc(n); rep(i,1,n 1){
        sc(a[i]); int t=a[i]-i; ans[t] =a[i];
    } 
    for(auto& x:ans) mx=max(mx,x.second);
    pf("%lldn",mx);
}

C: Remove Adjacent

题目链接 题意:给一个字符串 对于每个字符 如果相邻字符有ascii码刚好比自己少1的 则可以删除 问最多能删多少个 枚举z到a 每次for一遍删 O(26*n^3)

代码语言:javascript复制
#include<bits/stdc  .h>
#define rep(i,s,e) for(ll i=s; i<e;   i)
#define dep(i,e,s) for(int i=e; i>=s; --i)
using namespace std;
int main(){
    ios::sync_with_stdio(0);
    int n,cnt(0); string s; cin>>n>>s; s =' '; 
    dep(k,25,1) rep(i,0,n) if(s[i]==k 'a'){
        if(s[i 1]==s[i]-1||(i&&s[i-1]==s[i]-1)) s.erase(i,1),n--,cnt  ,i=i?i-2:-1;
    } cout<<cnt;
}

D: Navigation System

题目链接 题意:高德地图持续为您规划路线 n个点m条边的有向无权图 给k个点是必须经过的 导航每次路线会选择最短路 如果不是最短路就rebuild重新找最短路 问rebuild的最少和最多次数 无权图 bfs/dij/spfa啥的都行qwq 判是不是最短路用dis就行 mx和mn就差在有多条最短路的时候 这时候记一下就好了

代码语言:javascript复制
#include<bits/stdc  .h>
#define pf printf
#define sc(x) scanf("%d", &x)
#define scs(x) scanf("%s", x)
#define scl(x) scanf("%lld", &x)
#define mst(a,x) memset(a, x, sizeof(a))
#define rep(i,s,e) for(ll i=s; i<e;   i)
#define dep(i,e,s) for(int i=e; i>=s; --i)
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int maxn = 2e5   5;
struct node{
    int id,dt;
    bool operator < (const node a) const{
        return dt>a.dt;
    }
};
priority_queue<node>q;
int n,m,k,s,t,tot;
int dis[maxn],vis[maxn],head[maxn],cnt[maxn];
int nex[maxn<<1],to[maxn<<1],val[maxn<<1];
void addedge(int u,int v,int w){
    nex[  tot]=head[u];
    head[u]=tot; to[tot]=v; val[tot]=w;
}
void dij(int s){
    rep(i,1,n 1) dis[i]=1e9; dis[s]=0;
    q.push({s,0}); while(!q.empty()){
        int fr=q.top().id; q.pop();
        if(vis[fr]) continue; vis[fr]  ;
        for(int j=head[fr];j;j=nex[j])
            if(dis[to[j]]>val[j] dis[fr]&&!vis[to[j]]){
                dis[to[j]]=val[j] dis[fr];
                q.push({to[j],dis[to[j]]});
            }
            else if(dis[to[j]]==val[j] dis[fr])
                cnt[to[j]]=1;
    }
} // 板子闭着眼一套
int p[maxn];
int main(){
    int mn(0),mx(0); sc(n); sc(m); while(m--){
        int u,v; sc(u); sc(v); addedge(v,u,1);
    } sc(k); rep(i,1,k 1) sc(p[i]);
    dij(p[k]); rep(i,1,k 1){
        if(i!=k&&dis[p[i]]!=dis[p[i 1]] 1) mn  ;
        else mx =cnt[p[i]];
    } pf("%d %dn",mn,mn mx);
}

E: World of Darkraft: Battle for Azathoth

题目链接 补了加qwq

0 人点赞