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

Codeforces Round 952 (Div. 4)

时间:2024-06-17 23:53:54浏览次数:15  
标签:begin int 952 Codeforces long solve ans Div define

知识点模块

1.一个正方体x,y,z里面可以放多少个边长为a,b,c的长方体
ans=(x-a+1)*(y-b+1)*(z-c+1)

题解模块

A.Creating Words
交换两个字母的首字母即可swap实现即可

点击查看代码
#include <bits/stdc++.h>
using namespace std;
#define int long long 
typedef pair<int,int> pii;
#define all(v) v.begin(),v.end()


void solve()
{
	string a,b;
	cin>>a>>b;
	swap(a[0],b[0]);
	cout<<a<<" "<<b;
	cout<<endl;
}


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

B. Maximum Multiple Sum
要让一个数的倍数加起来总和最大,显然就是只要这个数不是3的时候,任何一个数(题给的数范围大于等于2)的2和其倍数的总和加起来最大。因为2的倍数会在这个范围里数量最多,不会有一个奇数比2的倍数多,任何偶数都是2的倍数

点击查看代码
#include <bits/stdc++.h>
using namespace std;
#define int long long 
typedef pair<int,int> pii;
#define all(v) v.begin(),v.end()


void solve()
{
	int n;
	cin>>n;
	if(n==3) cout<<3<<endl;
	else cout<<2<<endl;
}


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

C. Good Prefixes
从左往右按顺序遍历,每次算前缀和,减掉当前遍历到的这些数的最大值,如果这个数等于该最大值,说明前面这个几个数加起来就是这个最大值,符合题意

点击查看代码
#include <bits/stdc++.h>
using namespace std;
#define int long long 
typedef pair<int,int> pii;
#define all(v) v.begin(),v.end()


void solve()
{
	int n;
	cin>>n;
	vector<int>v(n);
	for(int i=0;i<n;i++) cin>>v[i];
	int sum=0,maxx=0,ans=0;
	for(int i=0;i<n;i++)
	{
		sum+=v[i];
		maxx=max(maxx,v[i]);
		if(sum-maxx==maxx) ans++;
	}
	cout<<ans<<endl;
}


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

D. Manhattan Circle
直接锁定最多#的这一行,然后记录一下最多有几个这个符号,记录一下这行的最后一个#的位置,然后就可以根据数量和最后一个位置推出他的中心

点击查看代码
#include <bits/stdc++.h>
using namespace std;
#define int long long 
typedef pair<int,int> pii;
#define all(v) v.begin(),v.end()


void solve()
{
	int n,m;
	cin>>n>>m;
	string s;
	int maxx=-1,ans=0,cc=0;
	for(int i=1;i<=n;i++)
	{
		cin>>s;
		int cnt=0,pos=0;
		for(int j=0;j<s.size();j++)
		{
			if(s[j]=='#') {
				cnt++;
				pos=j;	
			}
			maxx=max(maxx,cnt);
			if(maxx==cnt) ans=pos,cc=i;
		}
	}
	
	cout<<cc<<" "<<ans+1-maxx/2<<endl;
}


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

E. Secret Box
1.因为小方体的体积是k,所以边长一定是k的除数,那么就可以枚举a,b然后c用k%(a * b),如果不是0或者大于z退出循环
2.然后用知识点1,计算验证取最大值即可

点击查看代码
#include <bits/stdc++.h>
using namespace std;
#define int long long 
typedef pair<int,int> pii;
#define all(v) v.begin(),v.end()


void solve()
{
	int x,y,z,k;
	int ans=0;
	cin>>x>>y>>z>>k;
	for(int i=1;i<=x;i++)
	{
		for(int j=1;j<=y;j++)
		{
			if(k%(i*j)) continue;//必须是k的除数 
			int c=k/(i*j);
			if(c>z) continue;
			int tt=(x-i+1)*(y-j+1)*(z-c+1);
			ans=max(tt,ans); 
		}
	}
	cout<<ans<<endl;
}


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

F. Final Boss
1.使用set容器存放点,每个点{turn,i},就是攻击力的轮数和攻击力大小的索引,每一轮攻击完以后,删除这个点,然后存对应攻击可以使用的下一次轮数{turn+c[i],i},然后直到h<0即可
2.为什么这样可以满足最小回合呢?因为你第一轮如果没法将boss杀死以后,攻击力大的对应的使用轮数也会大,所以按照上述存放点是可以满足的

点击查看代码
#include <bits/stdc++.h>
using namespace std;
#define int long long 
typedef pair<int,int> pii;
#define all(v) v.begin(),v.end()


void solve()
{
	 int h,n;
	 cin>>h>>n;
	 vector<int>a(n),c(n);
	 for(int i=0;i<n;i++) cin>>a[i];
	 for(int i=0;i<n;i++) cin>>c[i];
	 set<pii>se;
	 for(int i=0;i<n;i++) se.insert({1,i});
	 int ans=1;
	 while(h>0)
	 {
	 	auto [turn,i]=*se.begin();
	 	se.erase(se.begin());
	 	h-=a[i];
	 	ans=turn;
	 	se.insert({turn+c[i],i});
	 }
	 cout<<ans<<endl;
	 
}


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

G. D-Function
等我补补

标签:begin,int,952,Codeforces,long,solve,ans,Div,define
From: https://www.cnblogs.com/swjswjswj/p/18253479

相关文章

  • CF 1980 F1 Field Division (easy version) (*1900)
    CF1980F1FieldDivision(easyversion)(*1900)题目链接题意:有一个大小为\(n\timesm\)($2\len,m\le10^9$)的矩形。其中有\(k\)个喷泉,你现在可以从左侧或者上侧任意一个不是喷泉的单元格出发,每次只能移向相邻的下或者右的单元格。直到走到矩阵的右侧或者底侧结束。......
  • Codeforces Round 953 (Div. 2) A - F
    A编号为\(n\)的一定选,第二叠书在\(1\simn-1\)选最大的。voidsolve(){ cin>>n; for(inti=1;i<=n;++i){ cin>>a[i]; } intans=a[n]; intx=0; for(inti=1;i<n;++i){ x=max(x,a[i]); } cout<<ans+x<&......
  • Codeforces Round 953 Div.2 F 题解
    连通块计数的一种常见思路是钦定代表元,但发现这题的连边方式并不好指定一个代表元,那么只能尝试优化建图。我们尝试观察一下连边的情况,通过手玩样例获得一些几何直观的感受:345534453这个样例也许比较小,不过你真的把边画出来就会发现:连边形如\(2n-1\)条完整的斜线,中间......
  • Codeforces Round 953 (Div. 2)(A~D题解)
    这次比赛是我最顺利的一次比赛,也是成功在中途打进前1500,写完第三道题的时候也是保持在1600左右,但是后面就啥都不会了,还吃了点罚时,虽说如此也算是看到进步了,D题学长说很简单,但是我当时分析错了,出了一点小问题,不然最后也能定格在2000左右,下次加油。A.AliceandBooks 题意:......
  • Codeforces Round 952 (Div. 4) G. D-Function(思维)
    Problem-G-Codeforces思维题,推出公式用等比数列求和做一下。1#defineIOstd::ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)2#definebug2(x,y)cout<<#x<<"is"<<x<<""<<#y<<"is"<<y<<end......
  • CodeForces 1935A
    题目链接:EntertainmentinMAC思路代码#include<bits/stdc++.h>usingnamespacestd;#definelllonglongconstintN=1e5+10;voidsolve(){lln;strings;cin>>n>>s;intl=0,len=s.size();while(s[l]==s[......
  • Codeforces Round 952 (Div. 4)
    A.CreatingWordstimelimitpertest:1secondmemorylimitpertest:256megabytesinput:standardinputoutput:standardoutputMatthewisgiventwostringsa......
  • Codeforces Round 947 (Div. 1 + Div. 2)
    发现今天做不了一点题,遂来补以前的比赛。B.378QAQandMocha'sArray秒了。排序,取最小的数记为\(x\),再取最小的无法被\(x\)整除的数记为\(y\),如果仍然存在无法被\(y\)整除的数,则无解。C.ChamoandMocha'sArray容易想到一个结论:如果一个数比它左边或右边的数小,那么......
  • Codeforces Round 836题解(A、B、C)
    A.SSeeeeiinnggDDoouubbllee直接将原字符串翻转一下拼到原字符串的后面就构成了回文串。strings;voidsolve(){cin>>s;cout<<s;reverse(s.begin(),s.end());cout<<s<<'\n';}B.XOR=Average分\(n\)的奇偶性考虑,若\(n\)为奇数,我们可以......
  • div+css布局实现个人网页设计(HTML期末作业)
    ......