首页 > 其他分享 >CF-959(C-E)

CF-959(C-E)

时间:2024-07-20 17:01:02浏览次数:4  
标签:959 pre 子树 int rep CF cin ans

CF-959

Problem - C - Codeforces

dp+双指针

分析

要找到满足顺序执行操作后g值大于零的区间数。我们以以i为左端点考虑,对于和小于x的区间[i,j],对答案的贡献就是区间长度j-i,而对于第一个和大于x的区间[i,j],对答案贡献则是以j+1为左端点时的合法区间的数量

操作

对于每个端点i,我们可以预处理出第一个使得区间和大于x的点j,用f[i]表示以i为左端点的合法区间数,,转移方程则是$f[i]=f[p[i]+1]+p[i]-i$,也就得到了,最后对f[i]求和即可

const int N=2e5+5;
int f[N],p[N];
void solve() {
	int n,x;cin>>n>>x;
	vector<int>a(n+2);
	rep(i,1,n) cin>>a[i];
	int ans=0,j=0,now=0; 
	rep(i,1,n){
		while(j<=n&&now<=x){
			now+=a[++j];
		} 
		p[i]=j;
		now-=a[i];
//		cout<<i<<" "<<j<<" "<<now<<endl;
	}
	f[n+1]=0,f[n+2]=0;
	per(i,n,1){
		f[i]=f[p[i]+1]+p[i]-i;
		ans+=f[i];
//		cout<<f[i]<<" \n"[i==1];
	}
	cout<<ans<<endl;
}

Problem - D - Codeforces

抽屉原理

常用于存在性的证明

n个物品放n+1个抽屉一定存在一个抽屉至少有两件物品

也包含有物品相同的情况

对于第x个操作,即以联通x条边,图中已有x+1个点,又所有数$modx$的值一定在[0,x-1]——有x种可能的值,所以x+1个点中一定存在两个点u、v满足$$u\equiv v$$(mod x),也即$x|(u-v)$

因为x是从1开始取的,所以以上的“已有”是成立的

注意只有倒着取x的值才能保证一定有解……

const int N=2e3+5;
int a[N],_,v[N];//,pre[N]
void solve() {
	int n;cin>>n;
	rep(i,1,n) cin>>a[i],v[i]=0;
	vector<pair<int,int>>ans;
	per(i,n-1,1){
//		rep(k,0,i-1) pre[k]=-1;
		vector<int>pre(i,-1);
		rep(j,1,n){
//			if(v[j]) continue;
			if(v[j]==0&&pre[a[j]%i]!=-1){
				ans.push_back({pre[a[j]%i],j});
				v[j]=1;
				break;				
			}
			pre[a[j]%i]=j;
		}
	}
	reverse(ans.begin(),ans.end());
	cout<<"YES\n";
	for(auto [x,y]:ans) cout<<x<<" "<<y<<endl;
}

Problem - E - Codeforces

最大或和

最终要把所有子树都删除,求这个过程中删除的子树大小的最大或和

对于一个大小为n的树,要得到n-1,我们可以先删1个子节点,再删除整个子树,同样,要得到n-2,可以先删两个子节点……也就是说我们可以得到[1,n]的所有值

也就是说只与每个子树的大小n有关……

设x为$[1,该子树的大小]$的任意值,于是问题转化为:求k个x值或和的最大值,显然可以对每个子树的大小拆位处理,对于第i位,如果能找到至少两个1,那么最优解是加上$2{i+1}-1$,否则若是只有一个1,显然保留该位,即加上$2i$最优

这部分可以自己手推一下……

int a[N],_;
void solve() {
	int n,k,x;cin>>k;
	int mx=0;
	rep(i,1,k){
		cin>>a[i];
		rep(j,1,a[i]-1) cin>>x;
	}
	int ans=0;
	per(i,31,0){
		int cnt=0;
		rep(j,1,k){
			if(a[j]>>i&1) cnt++;
		}
//		cout<<i<<" "<<cnt<<endl;
		if(cnt>=2){
			ans+=(1ll<<(i+1))-1;
			break;
		}
		else if(cnt==1) ans+=1ll<<i; 
	}
	cout<<ans<<endl;
}

标签:959,pre,子树,int,rep,CF,cin,ans
From: https://www.cnblogs.com/mono-4/p/18313328

相关文章

  • CF906C Party题解
    今天来水一波题解……理解题意由于题目意思讲得很清楚,就因为懒惰直接复制了……给你一堆一对对的关系,然后每一个关系对代表两个人认识。然后你每次可以选择一个人i,让i认识的所有人都相互认识,即i把介绍自己所有的朋友给其他人。然后现在问你最少需要选择多少个这样的i,使得所有的......
  • CF1364D Ehab's Last Corollary 题解 (构造/独立集/找最小环)
    题意给出一张n个点的无向连通图和一个常数k。你需要解决以下两个问题的任何一个:找出一个大小为\(\lceil\frack2\rceil\)的独立集。找出一个大小不超过k的环。独立集是一个点的集合,满足其中任意两点之间在原图上没有边直接相连。可以证明这两个问题必然有一个可以......
  • CFO和财务VP的OKR案例,打造并领导世界一流的金融团队
    CFO可以成为创始人、企业主和CEO的最大盟友,在一天结束的时候,所有的商业决策都是基于可用的资本和时间而做出的。OKR框架告诉我们要创建一个单一的目标,然后是一组3-5个相关的关键结果。例如,你的目标是使收入增长25%。同时,你通过你的关键结果来达到这个目标。三个关键结果可能是提......
  • CF1698 F
    CF1698F不错的题目。考虑必要条件,也就是不变量,发现操作不改变相邻二元组集合,且不能改变\(a_1,a_n\)。那么必要条件就是\(a,b\)相邻二元组集合相等和\(a_1=b_1,a_n=b_n\)。通过构造证明充分性。对于此类从\(a\)操作到\(b\)的问题,且操作可逆,不妨考虑中间状态\(c\),考虑......
  • Codeforces Round 959 sponsored by NEAR (Div. 1 + Div. 2)
    A.给定n*m的矩阵a,构造一个同样大小的矩阵b使得[1,n*m]都出现一次,且b和a在任意位置上都不相等。特判完无解后循环移位即可。#include<bits/stdc++.h>usingnamespacestd;inta[12][12];voidsolve(){ intn,m; cin>>n>>m; for(inti=1;i<=n;i++) for(intj=1;j<=m;j++)......
  • CodeForces Round #959 sponsored by NEAR (Div. 1 + Div. 2) 补题记录(A~E)
    简单场.pngA若\(n\timesm=1\)则显然无解。否则因为\(a\)矩阵是一个\(n\timesm\)的排列,所以说只需要让其循环右移一位即可。时间复杂度\(O(nm)\)。#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=500100;inta[233][233];sign......
  • codeforce959
    CodeforcesRound959sponsoredbyNEAR(Div.1+Div.2)A.DiverseGametimelimitpertest:1secondmemorylimitpertest:256megabytesinput:standardinputoutput:standardoutputPetr,watchingSergey'sstream,cameupwithamatrix\(a\),c......
  • 7.18 史也分好坏,R959 是好史。
    CFR959(Div.1+2)Solve:A~E(5/8)Rank:777Rating:\(2117-1=2116\)发挥评价:Bad唉,天天喂这种比赛。然后我自己在简单题上唐完了,被卡住了,而且还被cf的波特验证控住了。以后少慌,加快速度,提前截好图。(其实最后已经会G了写完就上大分,但是来不及咯)争取下次上分吧。......
  • CF466E Information Graph 题解
    题目链接LuoguCodeforces题意简述某公司中有\(n\)名员工。为方便起见,将这些员工从1至\(n\)编号。起初,员工之间相互独立。接下来,会有以下\(m\)次操作:员工\(y\)成为员工\(x\)的上司。保证此前\(x\)没有上司。员工\(x\)拿到一份文件并签字,随后交给他的上司......
  • G69 前缀线性基+贪心法 CF1100F Ivan and Burgers
    视频链接:G69前缀线性基+贪心法CF1100FIvanandBurgers_哔哩哔哩_bilibili   IvanandBurgers-洛谷|计算机科学教育新生态(luogu.com.cn)//前缀线性基+贪心法O(30*n)#include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;......