首页 > 其他分享 >Acwing.第 129 场周赛

Acwing.第 129 场周赛

时间:2023-11-12 16:12:49浏览次数:32  
标签:周赛 int sum cin long heap 129 LL Acwing

Acwing.第 129 场周赛

比赛地址

A.字符串

题目

思路:

只需要用到reverse()反转函数就可以

代码:

#include<bits/stdc++.h>
using namespace std;
void solve(){
	string s;
	cin>>s;
	reverse(s.begin(),s.end());
	cout<<s<<endl;
	
}
int main(){
	int t=1;
	while(t--){
		solve();
	}
	return 0;
}

B.奶牛做题

题目链接

思路:

因为做整套试卷会有额外的加分,所有我们可以先枚举能做多少张试卷(0-n),我们可以先做用时比较少的,再做用时比较大的,因为分数是相同的

代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=50;
int a[N];
signed main(){
	int n,k,m;
	cin>>n>>k>>m;

	int ans=0;
	for(int i=1;i<=k;i++){
		cin>>a[i];
		ans+=a[i];
	}

	sort(a+1,a+k+1);

	int res=0;
	
	for(int i=0;i<=n;i++){
		int time=m-i*ans;
		if(time<0){
			break;
		}

		int ans1=i*(k+1);
		
		bool flag=false;
		
		for(int j=1;j<=k;j++){
			for(int l=1;l<=n-i;l++){
				time-=a[j];
				if(time<0){
					flag=true;
					break;
				}
				ans1++;
			}
			if(flag){
				break;

			}
		}
		// cout<<ans1<<endl;
		
		res=max(res,ans1);
	}
	cout<<res<<endl;
	return 0;
}

重新分装

题目

思路:

根据题意,我们知道每个箱子都是相同的,所以分螺丝的过程中螺丝的位置不重要,只需要将总数为a的螺丝分成n堆,每堆为ai个就可以了,每次可以把一堆分成三堆或者两堆。
事实上我们可以反向思考一下,每次分成两堆或者三堆不就是可以理解成每次将两堆或三堆合成一堆吗?
这不就是经典的哈夫曼树吗?

代码:

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

const int N=2e5+10;
typedef pair<LL,int> PLI;

int a[N];
void solve(){
    int n, m = 3;
    cin >> n;

    priority_queue<PLI, vector<PLI>, greater<PLI> > heap;
    for (int i = 0; i < n; i ++ )
    {
        LL w;
        cin >> w;
        heap.push({w, 0});
    }

    while ((n - 1) % (m - 1))
    {
        heap.push({0ll, 0});
        n ++ ;
    }

    LL res = 0;
    while (heap.size() > 1)
    {
        LL sum = 0;
        int depth = 0;
        for (int i = 0; i < m; i ++ )
        {
            sum += heap.top().first;
            depth = max(depth, heap.top().second);
            heap.pop();
        }
        res += sum;
        heap.push({sum, depth + 1});
    }

    cout << res << endl;

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

}

标签:周赛,int,sum,cin,long,heap,129,LL,Acwing
From: https://www.cnblogs.com/du463/p/17827306.html

相关文章

  • AcWing785
    AcWing785.快速排序一、题目描述给定你一个长度为n的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数n。第二行包含n个整数(所有整数均在1∼1091∼109范围内),表示整个数列。输出格式输出......
  • AcWing785
    AcWing785.快速排序一、题目描述给定你一个长度为n的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数n。第二行包含n个整数(所有整数均在1∼1091∼109范围内),表示整个数列。输出格式输......
  • 【LC周赛-371】 D. Trie树求最大异或对
    【LC周赛-371】D.Trie树求最大异或对题意给一个数组,求两个数满足|x-y|<=min(x,y)的异或最大值。题解从|x-y|<=min(x,y)知道,每个y可以考虑的x范围是y/2<=x<y;然后Trie树实现更优复杂度内,从窗口获得最大异或值思路就是高位依次取值,具体看代码吧代码constint......
  • 第371场周赛
    至少在态度上有进步昨天参加了今天也参加了  跟昨晚的类似第一题和第四题都是一样的但是plus版要求时间复杂度给你一个下标从 0 开始的整数数组 nums 。如果一对整数 x 和 y 满足以下条件,则称其为 强数对 :|x-y|<=min(x,y)你需要从 nums 中选出两个......
  • 第117场双周赛-3min签到题,然后做不了一点
     给你两个正整数 n 和 limit 。请你将 n 颗糖果分给 3 位小朋友,确保没有任何小朋友得到超过 limit 颗糖果,请你返回满足此条件下的 总方案数 。 示例1:输入:n=5,limit=2输出:3解释:总共有3种方法分配5颗糖果,且每位小朋友的糖果数不超过2:(1,2,2),(2......
  • 纪念上绿名,acwing基础课完结!
    唉,终于磨磨唧唧突破灰名了感谢cf902div2同样是昨天,acwing基础课也终于听完了,完结撒花!......
  • 快速排序——acwing算法基础课笔记
    课堂内容+个人思考,个人笔记,但是欢迎补充、批评、指正。快速排序基于分治的思想平均时间复杂度O(nlogn)已知数组q[] 步骤:1、确定分界点(x): (1)首元素q[l];(2)尾元素q[r];(3)中值q[(l+r)/2];(4)随机;2、调整区间将区间通过x值划分为两部分(长度不一定相等),使得第......
  • 文心一言 VS 讯飞星火 VS chatgpt (129)-- 算法导论11.1 4题
    四、用go语言,我们希望在一个非常大的数组上,通过利用直接寻址的方式来实现一个字典。开始时该数组中可能包含一些无用信息,但要对整个数组进行初始化是不太实际的,因为该数组的规模太大。请给出在大数组上实现直接寻址字典的方案。每个存储对象占用O(1)空间;SEARCH、INSERT和DELETE操......
  • 文心一言 VS 讯飞星火 VS chatgpt (129)-- 算法导论11.1 4题
    四、用go语言,我们希望在一个非常大的数组上,通过利用直接寻址的方式来实现一个字典。开始时该数组中可能包含一些无用信息,但要对整个数组进行初始化是不太实际的,因为该数组的规模太大。请给出在大数组上实现直接寻址字典的方案。每个存储对象占用O(1)空间;SEARCH、INSERT和DELETE操......
  • Acwing.第128场周赛
    Acwing.第128场周赛比赛地址A长方体题目思路:知道长方体的体积计算公式即可,就是一个比较简单的模拟代码:#include<bits/stdc++.h>usingnamespacestd;voidsolve(){ inta,b,c; cin>>a>>b>>c; cout<<a*b*c<<endl; return; }intmain(){ intt=1; while(t--){ ......