首页 > 其他分享 >Codeforces 1857D:Strong Vertices 与图论无关的出度最大统计

Codeforces 1857D:Strong Vertices 与图论无关的出度最大统计

时间:2023-08-08 12:36:10浏览次数:51  
标签:1857D int max 出度 Codeforces leq vector Strong

1857D.Strong Vertices


Description:

  • 给定两个长度均为 \(n\) 的数组 \(a\) 和 \(b\) (编号\(1\)~\(n\)),如果 \(a_u-a_v \geq b_u-b_v\) \((u \neq v)\),那么从 \(u\) 到 \(v\) 建立一条有向边。"Strong"定义为:一个点 \(V\) 可以经过有向图中合法的通路到达其他所有的点。请求解出"Strong"点的数量和对应的编号(升序输出)。

image


Constraints:

  • \(2 \leq n \leq 2·10^5\)
  • \(-10^9 \leq a_i,b_i \leq 10^9\)

Analysis:

  • 显然,数字这么大无法存图,那就从数字比较角度考虑。
  • 对题目中的关系移项可得,\(a_u-b_u \geq a_v-b_v\),出度最大的点是"Strong",那肯定差值越大越可能,统计最大值出现的次数和对应下标即可
    (注意代码的写法细节以及 \(^*max\_element\)函数 对于普通数组 \(a[]\) 和\(vector\) 的差别)

Solution:

void solve() {
	int n; cin >> n;
	vector<int> a(n+1),b(n+1);
	for(int i=1;i<=n;i++) cin >> a[i];
	for(int i=1;i<=n;i++) {
		cin >> b[i];
		a[i] -= b[i]; // a[i]-b[i]数组
	}
	// 如果是普通数组,maxx = *max_element(a+1,a+1+n);
	int maxx = *max_element(a.begin()+1,a.begin()+1+n);
	vector<int> ans;
	for(int i=1;i<=n;i++) {
		if(a[i] == maxx) ans.push_back(i);
	}
	cout << ans.size() << endl;
	for(auto t : ans) cout << t << " ";
	cout << "\n";
}

标签:1857D,int,max,出度,Codeforces,leq,vector,Strong
From: https://www.cnblogs.com/Trilliverse/p/17613812.html

相关文章

  • Codeforces Round 891 (Div. 3)
    A.ArrayColoring题意给你\(n(2\len\le50)\)个数,你可以把每个数染成红或蓝,求是否有方案满足每个颜色都有数而且两种颜色每个颜色内所有数之和的奇偶性相同。多组数据\((t\le1000)\)。例如:\([1,2,4,3,2,3,5,4]\)染成\([\color{blue}1,\color{blue}2,\color{red}4,\color{......
  • Codeforces Round 890 (Div. 2) supported by Constructor Institute A-E1
    An=50非常小所以直接暴力枚举枚举每次把某个数以下的全部减完然后看一下是否上升就行 https://codeforces.com/contest/1856/submission/217275334  B题直接贪心前面优先放最小的最后一个放最大的 然后如果重复了就到前面去看能不能调整一下 https://codeforces.......
  • Codeforces Round 890 (Div. 2)
    A.TalesofaSort题目大意Alphenhasanarrayofpositiveintegers\(a\)oflengthn.Alphencanperformthefollowingoperation:Forall\(i\)from1ton,replace\(a_i\)with\(\max(0,a_i−1)\).Alphenwillperformtheaboveoperationuntil\(......
  • Codeforces Round #890 Div.2
    link题号:1856A~E2A题面:给定一个正整数\(n\)和一个长度为\(n\)的序列\(a\),重复执行以下操作直至\(a\)序列单调不减:\(\forall1\lei\len\),\(a_i=\max(a_i-1,0)\)。求一共需要执行多少次操作。多测,共\(t\)组数据。对于所有数据,保证\(1\let\le500\)......
  • Codeforces Round 890 (Div. 2) A-E1
    A.TalesofaSort题意:给出一个长为n的数组a,每次操作可以使得所有的数-1,最小不会小于0,问至少需要多少次操作才能使得a变得有序。Solution把数组a排序,从大到小遍历,如果当前的\(a[i]\)不是原来的话,那么要想让它有序,必须进行当前的\(a[i]\)次操作,这样才能使得它有序voidsolve()......
  • Codeforces Round 890 (Div. 2) supported by Constructor Institute
    Preface现在开始严格按照双号上分法来打CF了,大致就是每次比赛都拿两个号中分较少的那个打,这样可以保证两个号的最高分不降然后昨天打完就后悔了,没有拿hl666那个号打导致没抓住难得的上分机会,本来可以打到橙名渡劫局的但分全加在Kusanagi_Misuzu那个号上了不过昨天这场其实可以......
  • 【题解】Codeforces Round 890(CF1856)
    赛时过了A-E1,rk195可惜是E2傻逼了不会背包优化了,直接连普及组水平都不到了。A.TalesofaSort题目描述:给定长度为\(n\)的序列\(a\),每次操作为对于所有\(i\)将\(a_i\)变为\(\max(a_i-1,0)\),询问最少多少次操作之后可以让序列\(a\)单调不降。题目分析:唯一能改变......
  • CodeForces 数学类题目 做题汇总
    写一下\(3\)月\(28\)日起开始做的题目感受:1.CF1793BFedyaandArray:普及-*1100Luogu链接CF链接一道比较正宗的组合清新小题,可以对本题进行数学上的加强。ACCode2.CF1774BColoring:普及/提高-*1500Luogu链接CF链接一道需要考虑全面的贪心小题目ACCode......
  • Codeforces Round 890 (Div. 2)
    TalesofaSort题解找到最大的能够产生逆序对的数即可暴力\(O(n^2)\)枚举即可constintN=2e5+10,M=4e5+10;intn;inta[N];voidsolve(){cin>>n;intans=0;for(inti=1;i<=n;++i){cin>>a[i];}fo......
  • Codeforces Round 690 (Div. 3)
    CodeforcesRound690(Div.3)https://codeforces.com/contest/1462A.FavoriteSequence按题意输出#include<bits/stdc++.h>usingnamespacestd;constintN=1e5+5;inta[N],n;voidsolve(){cin>>n;for(inti=1;i<=n;i++)......