首页 > 其他分享 >第四次比赛

第四次比赛

时间:2024-02-03 13:12:39浏览次数:15  
标签:比赛 int add lu 第四次 include id 1000

D.网络寻路(dfs,但是可以简便方法)

#include<bits/stdc++.h>
using namespace std;
int s[100000],a[100010],b[100010];
int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=0;i<m;i++)
    {
        cin>>a[i]>>b[i];
        s[a[i]]++;
        s[b[i]]++;
    }
    int t=0;
    for(int i=0;i<m;i++)
    {
        if(s[a[i]]>1&&s[b[i]]>1)
            t+=(s[a[i]]-1)*(s[b[i]]-1)*2;
    }
    cout<<t<<endl;
    return 0;
}

E.全球变暖(bfs)

#include<bits/stdc++.h>
using namespace std;
char c[1000][1000],d[1000][1000];
int ans,xx[]={1,-1,0,0},yy[]={0,0,1,-1};
int v=1,vv[1000][1000];
int lu(int x,int y)//判断是否为陆地
{
    if(c[x][y]=='#')return 1;
    else return 0;
}
int dfs(int x,int y)
{
    vv[x][y]=1;//标记,代表已经搜索过
    if(lu(x-1,y)&&lu(x+1,y)&&lu(x,y+1)&&lu(x,y-1))v=0;//不会沉没,记为0
    for(int i=0;i<4;i++)
    {
        int x1=x+xx[i],y1=y+yy[i];//扩张
        if(lu(x1,y1)&&vv[x1][y1]==0)
            dfs(x1,y1);
    }
    c[x][y]='.';
    return v;
}
int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            cin>>c[i][j],d[i][j]=c[i][j];
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
        if(lu(i,j))v=1,ans+=dfs(i,j);
    cout<<ans<<endl;
    return 0;
}

F.出差(dijkstra)

#include<bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
const int N=1e5+5,inf=0x3f3f3f3f;
int n,m,add[N],dis[N];
bool vis[N]={0};
vector<pii> G[N];
void dijkstra()//Dijkstra
{
    for(int i=1;i<=n;i++) dis[i]=inf,vis[i]=0;
    dis[1]=0;
    priority_queue<pii,vector<pii>,greater<pii> >p;//堆优化
    p.push({0,1});
    while(!p.empty())
    {
        int u=p.top().second;
        p.pop();
        if(vis[u]) continue;
        vis[u]=1;
        for(int i=0;i<G[u].size();i++)
        {
            int cost=G[u][i].second,v=G[u][i].first;
            if(dis[v]>dis[u]+cost)
            {
                dis[v]=dis[u]+cost;
                p.push({dis[v],v});
            }
        }
    }
}
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++) cin>>add[i];
    for(int i=1;i<=m;i++)
    {
        int a,b,len;
        cin>>a>>b>>len;
        G[a].push_back({b,len+add[b]});
        G[b].push_back({a,len+add[a]});
        //vector存图,加上目的地点权
    }
    dijkstra();
    cout<<dis[n]-add[n];//终点不用隔离
}

G.搬砖(01背包,但是需要排序,vi​−wj​>vj​−wi​=vi​+wi​>vj​+wj​ 第 i 个箱子放在第 j 个箱子下面就显然更优)

#include<bits/stdc++.h>
#include<iostream>
#include<algorithm>
using namespace std;
int w[10000],v[10000],id[10000];
int f[20010];
bool cmp(int x,int y)//这个排序还挺好用的,学费了
{
    return w[x]+v[x]<w[y]+v[y];
}
int main()
{
    int n;
    cin>>n;
    int ans=0;
    for(int i=1;i<=n;i++)
    {
        cin>>w[i]>>v[i];
        id[i]=i;
    }
    sort(id+1,id+n+1,cmp);
    for(int i=1;i<=n;i++)
        for(int j=w[id[i]]+v[id[i]];j>=w[id[i]];j--)
        {
            f[j]=max(f[j],f[j-w[id[i]]]+v[id[i]]);
            ans=max(ans,f[j]);
        }
    cout<<ans<<endl;
    return 0;
}

  

 

标签:比赛,int,add,lu,第四次,include,id,1000
From: https://www.cnblogs.com/violet-hty/p/18004562

相关文章

  • 第三次比赛E题.砝码
    //01背包变形(三类情况,不增不减,增砝码,减砝码)include<bits/stdc++.h>usingnamespacestd;constintN=110,M=200010,b=M/2;intv[N],f[N][M];intmain(){intn,sum;cin>>n;for(inti=1;i<=n;i++)scanf("%d",&v[i]),sum+=v[i];f[0][b]=true;for(int......
  • 第一次比赛C题.日期
    include<bits/stdc++.h>usingnamespacestd;vectorv;//vectormap的应用//先将所有情况用vector存入,再利用map容器的特性输出intd[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};intrun(inta,intb){if((a%40&&a%100!=0)||(a%4000)){if(b==2)return1;return0;}......
  • 比赛
     第3题    比赛查看测评数据信息N头奶牛,编号1∼N,一起参加比赛。奶牛的战斗力两两不同。这些奶牛之间已经进行了M轮两两对决。在对决中,战斗力高的奶牛一定会战胜战斗力低的奶牛。请问,通过上述M轮对决的结果,可以确定多少头奶牛的具体战斗力排名。1≤N≤100,1≤M≤4500,......
  • P5738 【深基7.例4】歌唱比赛
    1.题目介绍【深基7.例4】歌唱比赛题目描述\(n(n\le100)\)名同学参加歌唱比赛,并接受\(m(m\le20)\)名评委的评分,评分范围是\(0\)到\(10\)分。这名同学的得分就是这些评委给分中去掉一个最高分,去掉一个最低分,剩下\(m-2\)个评分的平均数。请问得分最高的同学分数是多少?......
  • 搜索推荐DeepFM算法详解:算法原理、代码实现、比赛实战
    搜索推荐DeepFM算法详解:算法原理、代码实现、比赛实战可以说,DeepFM是目前最受欢迎的CTR预估模型之一,不仅是在交流群中被大家提及最多的,同时也是在面试中最多被提及的:1、Deepfm的原理,DeepFM是一个模型还是代表了一类模型,DeepFM对FM做了什么样的改进,FM的公式如何化简并求......
  • UofTCTF 2024 比赛记录
    这次的题目挺有意思,难度适中,*开头的代表未做出,简单记录一下解题笔记。IntroductionGeneralInformation题目TheflagformatforallchallengesisUofTCTF{...},caseinsensitive.Ifyouareexperiencingtechnicaldifficultieswithchallenges,supportisonour......
  • 新开的信使——比赛总结
    7.7线上组队赛,队友:luomiao,305/400pts,rnk4/6。A题枚举保留的矩阵,坑点是\(k=0\)时可以不保留矩阵。B题简单构造,坑点是\(n=1,m=1\)。C题由于最小一半,可以用随机化,可以枚举模数再随机化判断,也可以随机两个数判断差的模数;也可以利用数量的限制优化枚举,如果模数是\(m\),则......
  • 开始新的新——比赛总结
    8.17小线下赛(小l到小n)T1:数据结构优化DP、最短路都可过,最短路可以用“前(后)缀优化建图的方式”。T2:哈夫曼树。T3:可以发现,对于两个弓箭手\(i,j\),如果\(r_i\leqr_j\),只要\(x_i-r_i\leqx_j\leqxi+r_i\),则这两个弓箭手能互相在对方的攻击范围,所以\(i,j\)能互相掩护的条......
  • 9.2 比赛总结
    E到H。T2简单树上DP。T4原题。首先将一个操作拆成两个操作,每个操作加入\((x,y,z),(x+1,y+1,z+2)\dots\)。用堆(队列也行)模拟kruskal的过程,讨论一条边之后,将它的后继加入堆。可以发现,如果一条边无法使用,则可以不加入它的后继,因为树上连接这两个点的路径上的边的边权都......
  • 9.18 比赛总结
    题目。A,B水,D随便一种算法找环,然后随便一种数据结构维护。C:两个点等价,当且仅当以两个点为根的树同构。如果存在一个点不与其它点等价,则以这个点作为根,否则一定有两个连有边的点等价,断开这条边形成两棵同构的子树。经过这步处理之后,等价的点一定在相同深度。状态采用一般的树......