首页 > 其他分享 >3.11-3.17周报

3.11-3.17周报

时间:2024-03-12 23:23:37浏览次数:36  
标签:cout int 3.11 s1 dfs 3.17 fa s2 周报

寒假训练营2

D

这道题的题意很简单,有k张技能牌,每张技能牌可以把前\(a_i\)张牌放到最下边,消耗\(b_i\)的花费,现在我们需要的牌在从下往上的第k张,要变到第一张,花费最小的方式。建图的思路就有了,边权就是花费,也就是最短路问题,但是边很灵活,每个点都能建出m条边。

点击查看代码
void solve(long long kk) {
    priority_queue<PII,vector<PII>,greater<PII>>q;
    int n,m,k;
    cin>>n>>m>>k;
    for(int i=1;i<=m;i++){
        cin>>a[i]>>b[i];
    }
    for(int i=1;i<=n;i++){
        dist[i]=LLONG_MAX;
    }
    dist[k]=0;
    q.push({0,k});
    while(q.size()){
        auto [dis,dian]=q.top();
        q.pop();
        if(dist[dian]<dis)
            continue;
        for(int i=1;i<=m;i++){
            int jl=a[i],hf=b[i];
            jl+=dian;
            jl%=n;
            if(jl==0)
                jl=n;
            if(dist[jl]>hf+dis){
                dist[jl]=hf+dis;
                q.push({dist[jl],jl});
            }
        }
    }

    if(dist[n]==LLONG_MAX)
        cout<<-1<<endl;
    else
        cout<<dist[n]<<endl;
    return ;
}

codeforces 933 (Div.3)

E

F

天梯1

7-6

这题巨简单,但是问题出在了vector的size函数,这个函数的返回值不是int类型,所以要注意可能会出现x<ve.size()-1和x<=ve.size()两个公式不等价的情况。

7-11

这道题大一就做过,当时就没认真补题,现在遇到还是没思路,其实很简单,根据题意可知,这一定是树,也就是跑完树上的几个点之后不用返回起点,那想要最短路就是遍历所有路径之后减去最长的那条路。找最深的结点就是个dfs,那怎么计算出跑完所有点的路径和呢,那就是返回到当前点回到根节点的路径还有多少路径是没有走过的(因为之前的点可能被其他的点走过了,那就不用重复走了)。

点击查看代码
int fa[100010];
int vis[100010];
vector<int>g[100010];
int dp[100010];
void dfs(int x){
    for(auto e:g[x]){
        dp[e]=dp[x]+1;
        dfs(e);
    }
}
void solve(long long kk) {
    int n,m;
    cin>>n>>m;
    int root;
    for(int i=1;i<=n;i++){
        cin>>fa[i];
        if(fa[i]==-1){
            root=i;
        }
        else
            g[fa[i]].push_back(i);
    }
    dp[root]=0;
    dfs(root);
    int max1=0;
    int sum=0;
    for(int i=1;i<=m;i++){
        int x;
        cin>>x;
        max1=max(max1,dp[x]);
        while(vis[x]==0&&x!=root){
            vis[x]=1;
            sum+=2;
            x=fa[x];
        }
        cout<<sum-max1<<endl;
    }
    return ;
}


7-12

这个题其实不难,就是一直不停的套map,因为这个明显也是树,但是可以优化的点是那些老人一定为叶子结点,那我们直接将一个管理机构下的老人数记作这个点的权值,在老人更换机构时就不用考虑边的问题了,直接更换双方的权值即可,求一个管理机构下的老人总数,就是以它为根节点的dfs搜索,权值求和就好,但是有一个段错误,不太懂问题在哪。

点击查看代码

map<pair<string,string>,int>d;
map<string,string>fa;
map<string,vector<string>>ve;
map<string ,int>xx;
int dfs(string s){
    int ans=xx[s];
    for(auto e:ve[s]){
        ans+=dfs(e);
        //cout<<e<<" "<<s<<" "<<ans<<endl;
    }
    return ans;
}
void solve(long long kk) {
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        string s1,s2;
        cin>>s1>>s2;
        fa[s1]=s2;
        ve[s2].push_back(s1);
        if(s1[0]>='0'&&s1[0]<='9')
            xx[s2]++;
//        cout<<i<<" "<<s2<<" "<<xx[s2]<<endl;
//        for(auto e:ve[s2]){
//            cout<<e<<" ";
//        }
//        cout<<"-----\n";
        //fa[s1]=s2;
    }
    while(1){
        string s1;
        cin>>s1;
        if(s1=="E"){
            break;
        }
        if(s1=="T"){
            string s2,s3;
            cin>>s2>>s3;
            string ss=fa[s2];
            xx[ss]--;
            //cout<<ss<<" "<<s2<<" "<<s3<<endl;
            ve[s3].push_back(s2);
            fa[s2]=s3;
            xx[s3]++;
        }
        else if(s1=="Q"){
            string s2;
            cin>>s2;
            int ans=0;
            ans=dfs(s2);
            cout<<ans<<endl;
        }

    }
    return ;
}

标签:cout,int,3.11,s1,dfs,3.17,fa,s2,周报
From: https://www.cnblogs.com/zyzzzz/p/18069608

相关文章

  • 3.11-3.17
    天梯赛选拔第二场:L2-1:队列模拟voidsolve(){intn,k;cin>>n>>k;stack<int>q,box;for(inti=1;i<=n;i++){intx;cin>>x;q.push(x);}stack<int>res;vector<int>ans......
  • 2024.3.11 软工日报
    今天学习了安卓开发连接数据库的内容,学习时间2小时代码量150  packagecom.example.myapplication;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;publicclassmysqlhelp{publicstaticintgetUserSize(){......
  • cmd 的图论练习题(近期总结 2024.3.11)
    AGC010ERearranginglink题意:一个序列\(a_{1...n}\),两个人游戏。先手打乱这个序列,然后后手可以多次选择一对相邻的互质的数交换。先手希望最终序列字典序尽量小,后手则相反。两人都绝顶聪明,求最终序列。\(1\len\le2000,\space1\lea_i\le10^8\)考虑不互质的两个数\(a_i,a......
  • 软甲工程日报3.11
    DBpackagecom.example.myapplication;importandroid.annotation.SuppressLint;importandroid.content.ContentValues;importandroid.content.Context;importandroid.database.Cursor;importandroid.database.sqlite.SQLiteDatabase;importandroid.database.sqlite.SQ......
  • 3.11
    今天是学习开发Androidstudio 的第一天  随说明天就要验收接入数据库什么玩意的 视图层次:由View和ViewGroup组成。在创建UI时,开发人员不会真正去创建View或者ViewGroup,而是直接使用Android所提供的具有不同功能的控件,因此通常是看不到View或ViewGroup。View是Android......
  • 3.11每日总结
    净现值计算 #include<iostream>#include<iomanip>#include<cmath>constintPROJECTS=6;constintYEARS=4;intmain(){//创建二维数组储存每个项目每年利润intmoney[PROJECTS][YEARS]={{-100000,-1000000,-100000,-120000},{10000,......
  • 3.11
    今天实现通过安卓连接web后端最后在mysql数据库添加数据库的操作在安卓项目中首先在AndroidMainfest.xml中添加链接网络权限,同时允许安卓明文传输所要连接的IP地址<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/apk/res/andro......
  • 软件工程日报5 2024.03.11
     第一天第二天第三天第四天第五天所花时间(包括上课)6小时5小时4小时4小时 六小时代码量(行)300350200300 50博客量(篇)1111 1所学知识了解安卓相关数据库的知识,下载安装了matlab学习了相关安卓的布局展示了解activity之间的相互跳转以注册了......
  • 3.8~3.11闲话
    3.8因为教师资格证考试所以放假......
  • 鲜花 3.11
    这是一篇鲜花。我认为鲜花是相当好的,因为可以乐乐乐。最近精神状态一直不大好,连续n天没有写题了,鉴定为不打隔膜导致的/cf/cf/cf上周把WA2coda推完了,可能还有一个后日谈,这周回去推。怎么还有巨大的任务计划,破防了。看到hanghang的鲜花,感觉神秘敬酒环节有点可怕的,还好我......