首页 > 其他分享 >Codeforces Round 971 (Div. 4)

Codeforces Round 971 (Div. 4)

时间:2024-09-11 21:35:27浏览次数:1  
标签:pre 971 int Codeforces long -- solve ans Div

C. The Legend of Freya the Frog
因为是从x开始跳,贪心的取肯定是直接用max(a,b)/d向上取整然后再乘2,但是要注意,如果再x到达之前,y已经是到达了,也就是某次以后,y都取0,那么最终次数就要-1,因为最后不用再跳y方向的

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define mod 1000000007


void solve()
{
    int x,y,d;
    cin>>x>>y>>d;
    int ans=max((x+d-1)/d,(y+d-1)/d);
    ans*=2;
    if((x+d-1)/d>(y+d-1)/d) ans--;
    cout<<ans<<endl;
}

signed main()
{
    int t=1; cin>>t;
    while(t--) solve();
    
}

D. Satyam and Counting
分为两种情况
1.(x,0) (x,1),( )这里可以任意一点,所以这一种每一次可以贡献n-2
2.(x,0) (x+2,0),(x+1,1)和(x,1)(x+2,1) (x+1,0)

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

void solve()
{
	int n;
	cin>>n;
	set<pair<int,int> >se;
	for(int i=0;i<n;i++)
	{
		int x,y;
		cin>>x>>y;
		se.insert({x,y});
	}
	
	int ans=0;
	for(auto [x,y]:se)
	{
		if(se.count({x+2,y}) &&se.count({x+1,y^1}))  ans++;
		if(y==0&&se.count({x,1}) ) ans+=n-2;
		
	}
	cout<<ans<<endl;
	
	
}

signed main()
{
	int t=1;
	cin>>t;
	while(t--) solve();
	
}

E. Klee's SUPER DUPER LARGE Array!!!
直接二分答案,当cal(mid)> cal(mid+1)更新,对于绝对值里面的元素和,直接使用等差求和公式计算

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



void solve()
{
	int n,k;
	cin>>n>>k;
	auto cal=[&](int x)
	{
		int res=0;
		res+=(2*k+x-1)*x/2;
		res-=(2*k+x+n-1)*(n-x)/2;
		return abs(res);
	};
	
	int l=1,r=n;
	while(l<=r)
	{
		int mid=(l+r)>>1;
		if(cal(mid)>cal(mid+1)) l=mid+1;
		else r=mid-1;
	}
	cout<<cal(l)<<endl;

	
}

signed main()
{
	int t=1;
	cin>>t;
	while(t--) solve();
	
}

F. Firefly's Queries
基于官方题解我举样例方便读者理解
比如4 8 3 2 4 4 8 3 2 4,我们会发现这样接上去以后,从下标1-5开始每个数往后延4个数,便是翻转后的结果,比如从第二个数开始时8 3 2 4 4第三个数开始是3 2 4 4 8。
然后举l=2,r=13,(从0开始)|4 8 【3 2 4| 8 3 2 4 4| 3 2 4 4】 8|,那么答案就是pre【n】*3-左边那段翻转的对应位置的前缀和-右边那段翻转的对应位置后缀和

#include <bits/stdc++.h>
using namespace std;
#define int long long
void solve()
{
	int n,k;
	cin>>n>>k;
	vector<int>pre(1),ve(n);
	for(auto &t:ve) {
		cin>>t;
		pre.push_back(pre.back()+t);
	}
	//按1 2 3 1 2 3这样排,前三个数字就是翻转的起点
	for(auto t:ve)
	{
		pre.push_back(pre.back()+t);
	}
	
//	for(auto t:pre) cout<<t<<" ";
	while(k--){
		int l,r;
		cin>>l>>r;
		l--,r--;
		int i,j;//i为翻转的起点,j同理
		i=l/n, j=r/n;
		l%=n,r%=n;//此时l,r分别为各自计算前缀和后缀的位置
		cout<<pre[n]*(j-i+1)-(pre[i+l]-pre[i])-(pre[j+n]-pre[j+r+1])<<endl;	
		//pre[i+l]-pre[i]理解为计算前缀和
		//pre[j+n]-pre[j+r+1]理解为计算后缀和
	}
	
	
}


signed main() {
	int t;
	cin >> t;
	while (t--) {
		solve();
	}
}

标签:pre,971,int,Codeforces,long,--,solve,ans,Div
From: https://www.cnblogs.com/swjswjswj/p/18404330

相关文章

  • Codeforces Round 944 (Div. 4) G(思维 + 位运算性质)
    题意给定一个由\(n\)个非负整数组成的数组\(a\)。如果\(a_i\oplusa_j<4\),那么你就可以交换\(a_i、a_j\),其中,\(\oplus\)是按位异或。求出操作若干次后,字典序最小的序列。数据范围:\(1\len\le2\times10^5\),\(0\lea_i\le10^9\)。题解性质:$a_i\oplusa_j......
  • Codeforces Round 933 (Div. 3) (C-G)
    这场比赛由于急躁心态不稳导致abc三题接连wa,这时候心态几乎爆炸。而d题思路其实很清晰,但是因为set使用不熟练卡住。最后没用set十分钟就写完过了。这时候只剩下十多分钟来不及写别的了。结束收获主要就是:还是要注意边界的细节(ab题就不放了。。C-RudolfandtheUglyString......
  • CF div2 round 960
    C.MadMADSum手玩规律题,预处理两次就能得到一个规律的答案。#include<bits/stdc++.h>usingnamespacestd;#definels(x)(x<<1)#definers(x)((x<<1)+1)intread(){ intret=0;charc=getchar(); while(c<'0'||c>'9')c=getc......
  • YOLOv8改进系列,YOLOv8添加DiverseBranchBlock(多样分支块),并在C2f结构引入
    原论文摘要一种卷积神经网络(ConvNet)的通用构建模块,以在不增加推理时间成本的情况下提高性能。该模块被命名为多样分支块(DiverseBranchBlock,DBB),通过结合不同尺度和复杂度的多样分支来丰富特征空间,包括卷积序列、多尺度卷积和平均池化,从而增强单个卷积的表示能力。在训练......
  • Divide and Conquer:ZK除法中隐藏的漏洞
    ZK的崛起与演变曾几何时,零知识证明(以下简称ZK)仍然被认为是密码学教科书中的理论概念,至少在传统安全研究中很少被主流社群深入探索。然而在Web3.0领域,区块链技术的迅速发展,用短短几年时间实现了ZK从理论到实践的跨越式进展,一路蓬勃,高歌猛进。1985年诞生,2014年ZCash才用SNAR......
  • Codeforces Round 942 (Div. 1) VP 记录
    CodeforcesRound942(Div.1)VP记录我没实力打Div1/kk事实上我唯一rated的那场Div1切三题是不是运气好啊/kk/kkA考虑\(k=0\)的时候怎么做。设最小值为\(x\),答案显然是\(\sum[a_i=x\veea_i=x+1]a_i\)。都与最小值相关了,都最小值最大了,直接二分答......
  • CodeForces Round #621 ABC (1307A+1307B+1307C) 题解
    A.CowandHaybales题面TheUSAConstructionOperation(USACO)recentlyorderedFarmerJohntoarrangearowofnhaybalepilesonthefarm.The\(i\)-thpilecontains\(a_i\)haybales.However,FarmerJohnhasjustleftforvacation,leavingBessieal......
  • Codeforces Round 970 (Div. 3)
    A.Sakurako'sExam分类讨论即可,当a为奇数,无法消去1,或者a==0且b为奇数时,无法消去2#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongtypedefpair<int,int>pii;voidsolve(){ inta,b; intflag=1; cin>>a>>b; if(a&1)flag=0;......
  • Codeforces Round 941 (Div. 1) VP记录
    CodeforcesRound941(Div.1)VP记录我了个掉分场啊。没场切C导致看起来会-50。A排序后差分。它毕竟还是个公平组合游戏,所以如果Alice在一次操作中能够控制能把后手扔给自己还是对面就赢了。然后我们发现如果一个差分值\(x\ge2\)就是必胜的吧。先手可以自己取完......
  • Codeforces Round 621 (Div. 1 + Div. 2)
    USACO入侵CFA.CowandHaybales题意:一行\(n\)个数,每次可以将1从一个数移动到相邻的数,求\(d\)次内\(a_1\)最大值。思路:显然先移动\(a_2\),然后依次类推。提交记录B.CowandFriend题意:在二维平面上,一次只能走恰好\(a_1\sima_n\)中的一个数,求从原点走到\((x......