首页 > 其他分享 >【康复训练3】2024.4.7小红书

【康复训练3】2024.4.7小红书

时间:2024-04-29 15:12:30浏览次数:26  
标签:2024.4 小红书 long st int str 康复训练 const dp

这期的题目整体比较简单,相比之前的都简单

第一题-塔子哥送粉丝周边

简单排序

#include<bits/stdc++.h>

using namespace std;

#define int long long

const int N = 2e5+100;

struct str{
	int num;
	int s;
}st[N];
bool cmp(str a,str b){
	if(a.s!=b.s){
		return a.s>b.s;
	}else{
		return a.num<b.num;
	}
}
signed main(){
	int n,k;
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		int x,y;
		cin>>x>>y;
		st[i].num=i;
		st[i].s=x+2*y;
	}
	sort(st+1,st+1+n,cmp);
	vector<int> p;
	for(int i=1;i<=k;i++){
		p.push_back(st[i].num);
	}
	sort(p.begin(),p.end());
	for(auto pi:p) cout<<pi<<" "; 
	return 0;
}

第二题-塔子哥的优秀题解

优先队列维护下,写代码必须专注,脑袋别混乱,刚开始的时候输入写错了

#include<bits/stdc++.h>

using namespace std;

#define int long long

const int N = 2e5+100;

struct str{
	int a,b;
}st[N];
bool cmp(str aa,str bb){
	return aa.b>bb.b;
}
priority_queue<int,vector<int> ,greater<int>> q;	
int n,k;
signed main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>st[i].a;
	}
	for(int i=1;i<=n;i++){
		cin>>st[i].b;
	}
	
//	for(int i=1;i<=n;i++) cout<<st[i].a<<" "<<st[i].b<<endl;
	
	sort(st+1,st+1+n,cmp);	
	
//	for(int i=1;i<=n;i++) cout<<st[i].a<<" "<<st[i].b<<endl;
	
	int sum=0,ans=0;
	for(int i=1;i<=k;i++){
		sum+=st[i].a;
		q.push(st[i].a);
	}
	ans=sum*st[k].b;
//	cout<<ans<<" "<<sum<<" "<<st[k].b<<endl;
	for(int i=k+1;i<=n;i++){
		ans=max(ans,(st[i].a+sum-q.top())*st[i].b);
		if(q.top()<st[i].a){
			sum-=q.top();
			q.pop();
			sum+=st[i].a;
			q.push(st[i].a);
		}
	}
	cout<<ans;
	return 0;
}

第三题-塔子哥的题解点赞方案

简单DP一下

#include<bits/stdc++.h>

using namespace std;

#define int long long

const int N = 2e3+100;

const int mod = 1e9+7;

int dp[N][N],sum[N];
int n,m;
char str[N];
/* 
dp[i,j]=dp[i-1,j]

*/
signed main(){
	memset(dp,0,sizeof(dp));
	cin>>n>>m>>(str+1);
	// for(int i=1;i<=n;i++) cout<<str[i]<<" ";cout<<endl;
	// dp[i,j]:表示当前已经处理到第i位,且以j为结尾的方案数 
	for(int i=1;i<=m;i++){
		dp[1][i]=1;
		sum[i]=sum[i-1]+1;
	} 
	for(int i=2;i<=n;i++){
		if(str[i-1]=='='){
			for(int j=1;j<=m;j++) dp[i][j]=dp[i-1][j];
		}else if(str[i-1]=='<'){
			for(int j=1;j<=m;j++) dp[i][j]=sum[j-1];
		}else if(str[i-1]=='>'){
			for(int j=1;j<=m;j++) dp[i][j]=(sum[m]-sum[j]+mod)%mod;
		}
		for(int j=1;j<=m;j++) sum[j]=(sum[j-1]+dp[i][j])%mod;
	}
	int ans=0;
	for(int i=1;i<=m;i++) ans=(ans+dp[n][i])%mod;
	cout<<ans;
	return 0;
}

标签:2024.4,小红书,long,st,int,str,康复训练,const,dp
From: https://www.cnblogs.com/pengge666/p/18165748

相关文章

  • 2024.4 ~ 若眨眼一瞬 定能像星辰般飞向宇宙
    2024.4.3\(40+100+40=180\)。今天过了一题/开心草了,T2空间开大MLE了,实际上只过了\(0\)题,如果不算这个就登顶了fibonacci首先答案一定可以在\(S_{31}\)中找到。具体地,找到最大的\(i\)使得\(S_{i-4}<3|t|\),取\(S_i\)即可。这是因为首先任意三个相邻位置都至少有一......
  • 2024.4.28 近期练习
    P6619[省选联考2020A/B卷]冰火战士对于一次战斗,冰火两方能量较少的那方会耗尽,答案为这个能量的两倍。我们就是要找一个中间值,左边的冰战士能量值之和与右边火战士能量值之和最小值最大。离散化,我们可以二分找到第一个冰的前缀和大于火的后缀和的位置\(p\),答案为\(p-1\)......
  • 【康复训练1】2.24.4.13美团春招
    前言写在前面,由于很长一段时间没有敲代码了,上周写了华为的题目,debug半天也没有debug出一道来,属实狠狠的打击到我了,因此特开此专栏,以便开启老年选手康复之路!!!第一题-塔子哥的好子矩阵前3题,手速题水题#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongcon......
  • 2024.4
    感觉本地编辑器有点卡了就先放到博客园上1.ccpc2023深圳M3Sum先取模,就是第\(x\)位加给\(x\bmodK\)位,\(\mathcal{O}(len)\)复杂度。然后就只有相加为\(0,M,2M\)这三种情况,找几个模数进行check就行。2.ccpc2023深圳ETwoinOne考虑俩颜色咋做。先想想答案......
  • #21 2024.4.22
    796.loj4130「PA2024」Splatanieciągów假装\(f(A,B)\)怎么求大家都知道。怎么数数呢?怎么数数呢?怎么数数呢?怎么数数呢?怎么数数呢?先把串变形成一堆连续的<>序列,我们只关心连续段大小。计算\(|A|\geq|B|\)的贡献。考虑枚举\(f(A,B)\leqx\),套一层分治,计算跨过\((m......
  • 2024.4.22(周一)构建之法阅读笔记3
    第六章敏捷流程敏捷开发的原则是:1.尽早并持续地交付有价值的软件以满足顾客需求  2.敏捷流程欢迎需求的变化  3.经常发布可用的软件,发布间隔可以从几周到几个月,能短则短 4.业务人员和开发人员在项目开发过程中应该每天共同工作 5.以有进取心的人为项目核心,充分支持信......
  • 2024.4.18(周四)构建之法阅读笔记1
    第一章概论软件=程序+软件工程  软件企业=软件+商业模式  一个复杂的软件不但要有合理的软件架构、软件设计与实现,还要有各种文件和数据来描述各个程序文件之间的依赖关系、编译参数等等,这些都是软件构建的过程。软件开发的不同阶段:1.玩具阶段 2.业余爱好阶段 3.探索......
  • 2024.4.19(周五)构建之法阅读笔记2
    第四章两人合作在代码规范方面,可以分为两个部分:代码风格规范和代码设计规范。代码风格规范主要是缩进、行宽、括号、断行与空白的{}行、分行、命名、下划线、大小写、注释等;建民老师上课主要强调的是缩进、命名和注释。在代码设计规范方面,主要是函数、goto错误处理、类处理等。......
  • 2024.4.21 模拟赛
    Aperm首先若\((i+j)\)为奇数则需要满足其中一个是奇数,另一个必须是偶数。若\(k=0\),那么要求\(A_i\)和\(A_j\)同号,也就是所有数必须都是同一奇偶性。若满足则答案为\(n!\),否则为\(0\)。若\(k=1\),那么要求\(A_i\)和\(A_j\)异号。奇下标位置为\(\lceil\frac{n......
  • 2024.4.23 近期练习
    CF1924D先考虑一个串的最长合法序列,维护一个栈,答案就是右括号加入时栈非空的次数。我们看成从\((0,0)\)走到\((n,m)\),发现没被匹配的右括号个数就是\(x-y\)的最大值。要想只有\(k\)个匹配,那么要和\(x-y=m-k\)“相切”。若\(f(k)\)表示穿过直线的方案数,答案是\(f(k......