首页 > 其他分享 >Codeforces Round 926 (Div. 2)

Codeforces Round 926 (Div. 2)

时间:2024-02-25 17:01:51浏览次数:26  
标签:int Codeforces long solve 926 Div now dp define

A.

升序排列再求和

#include <bits/stdc++.h>
using namespace std;

#define int long long
const int N=1e5+10;
#define inf 0x3f3f3f3f

void solve() {
    int n;cin>>n;
    vector<int>a(n+1);
    for(int i=1;i<=n;i++)cin>>a[i];
    sort(a.begin()+1,a.end());
    int sum=0;
    for(int i=2;i<=n;i++){
        sum+=a[i]-a[i-1];
    }
    cout<<sum<<'\n';
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int left=1;
    cin>>left;
    while(left--){
        solve();
    }
}

B.

样例已经给出了做法
2*n-2个方格是2的贡献,2个方格是1的贡献

#include <bits/stdc++.h>
using namespace std;

#define int long long
const int N=1e5+10;
#define inf 0x3f3f3f3f

void solve() {
    int n,k;cin>>n>>k;
    if((2*n-2)*2>=k)cout<<(k+1)/2<<'\n';
    else cout<<(2*n-2+(k-(2*n-2)*2))<<'\n';
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int left=1;
    cin>>left;
    while(left--){
        solve();
    }
}

D.

任意两点的简单路径,要找两点的公共祖先
设两点a,b,若a、b各自到公共祖先的路径上的危险节点小等于1,那么这条简单路径一定合法
处理出所有节点作为公共祖先节点所能作出的贡献
dp[i][j],表示以i为公共祖先节点,在以i为根的子树中危险节点为j的方案数

#include <bits/stdc++.h>
using namespace std;

#define int long long
const int N=3e5+10;
#define inf 0x3f3f3f3f

const int mod=998244353;
vector<int>e[N];
int n,dp[N][3];
void dfs(int now,int fa){
    for(auto it:e[now]){
        if(it==fa)continue;
        dfs(it,now);
        dp[now][0]=1;
        dp[now][1]=(dp[now][1]*(dp[it][0]+dp[it][1]))%mod;
        dp[now][2]=(dp[now][2]+dp[it][1]+dp[it][2])%mod;
    }
}
void solve() {
    cin>>n;
    for(int i=1;i<=n;i++){
        e[i].clear();dp[i][0]=dp[i][1]=1;dp[i][2]=0;
    }
    for(int i=1;i<n;i++){
        int u,v;cin>>u>>v;
        e[u].push_back(v);
        e[v].push_back(u);
    }
    dfs(1,-1);
    cout<<(dp[1][0]+dp[1][1]+dp[1][2])%mod<<'\n';
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int left=1;
    cin>>left;
    while(left--){
        solve();
    }
}

标签:int,Codeforces,long,solve,926,Div,now,dp,define
From: https://www.cnblogs.com/wwww-/p/18023023

相关文章

  • Educational Codeforces Round 162 (Rated for Div. 2)
    EducationalCodeforcesRound162(RatedforDiv.2)A-MovingChips解题思路:模拟一下,不难发现是\(1\)之间\(0\)的个数。代码:#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;usingpii=pair<ll,ll>;#definefifirst#definesesecondusin......
  • Codeforces 1025F Disjoint Triangles
    结论:如果两个三角形不相交,那么一定存在两条内公切线。于是可以考虑枚举这条内公切线的端点\(x,y\)。那么一个三角形的两个端点就会在\(x\toy\)这条线的同一侧,另外一个三角形的两个端点会在这条线的另一侧。同时这条线的一侧与其配对的端点可能是\(x\)也可能是\(y\)。......
  • Codeforces 486E LIS of Sequence
    考虑一个暴力的做法:建立一个超级起点\(a_0=0\)超级终点\(a_{n+1}=\inf\)。求出\(f_i\)代表\(1\simi\)且以\(i\)结尾的\(\text{LIS}\)长度。考虑\(f_i=\max\{f_j+1\}(j<i\landa_j<a_i)\)这个转移的式子,如果\(f_i=f_j+1(j<i\landa_j<a_i......
  • codeforces 1575M Managing Telephone Poles
    假设固定了\((x,y)\),考虑其和\((x',y')\)的距离\((x-x')^2+(y-y')^2=x^2-2xx'+x'^2+y^2-2yy'+y'^2=(x^2+y^2)+(-2xx'+x'^2)+(-2yy'+y'^2)\)。第一个括号内的式子是个定值,不用管;第二三个式子都是一次函数的形式......
  • Educational Codeforces Round 162 (Rated for Div. 2)
    不会F的场。A答案是最左的\(1\)和最右的\(1\)之间的\(0\)的个数。Code#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;intmain(){ ios::sync_with_stdio(false); cin.tie(0); intt; cin>>t; while(t--){ intn; cin>>n......
  • Educational Codeforces Round 162 [Rated for Div. 2]
    第二次,三道题,剩下的回学校再补,总结:还是需要多练习A:让数列里所有的1都挨在一起,可以看出,相邻1之间有多少个0就需要操作几次,特判:当只有一个1或者原本全是1就输出0;voidsolve(){cin>>n;inttop1=0,top2=0,cnt=0;memset(a,0,sizeof(a));memset(b,0,siz......
  • [AGC009C] Division into Two
    先假定\(A\leB\),然后先判断无解,如果\(a_{i+2}-a_i<B\),无论怎么分配都是不合法的,直接判掉。然后考虑dp,\(f_i\)表示选了前\(i\)个数,其中第\(i\)个数是归为\(A\)集合的方案数。其中不难发现可转移的状态是一段区间,状态\(f_j\)可以转移仅当\(a_i-a_j\geA\)且\(a_......
  • Codeforces 799E Aquarium decoration
    考虑去枚举能满足\(1,2\)的个数\(l\),那自然只能满足\(1\)或\(2\)的个数为\(\max\{k-l,0\}\)。对于还剩下的,可以从只能满足\(1,2\)和不能满足任意一个的选出来。显然如果要选就是选最小的。考虑用个数据结构优化这个过程。查询前\(k\)大的和,插入一个数,可以想......
  • Codeforces 图论题
    CF243BHydra枚举点\(u,v\),或者说枚举边。然后找出\(u,v\)分别所连的点。有数组\(st\),结点\(x\)仅与\(u\)相邻则\(st[x]=1\),仅与\(v\)相邻则\(st[x]=2\),与两个点都相邻则\(st[x]=3\)。用数组\(rest\)记录\(st[x]=3\)的所有\(x\)。先优先选走至多\(h\)个\(......
  • Codeforces 869D The Overdosing Ubiquity
    考虑树的\(\text{dfs}\)(根据当前节点\(u\)找到\(v\)满足存在\((u,v)\),然后走向\(v\)进入更深的搜索)为和能做到\(O(n)\)的复杂度。原因是没有环的情况,到每个点只有一条路径。回到这个题,有\(m\)条边导致到每个点可能有多条路径了。能发现其实还是能\(\text{dfs}\)......