首页 > 其他分享 >Living-Dream 系列笔记 第23期

Living-Dream 系列笔记 第23期

时间:2024-03-03 18:46:40浏览次数:17  
标签:sort Living cnt min int 23 Dream id row

Problem

T1

/*
思路:
我们可以忽略两人碰到后转向的过程,直接视为两人彼此穿过了对方,
这样算距离是不变的,时间也是不变的,所以合法。
通过上述分析,
那么最小时间即为对于每一个士兵往左/右走的时间取min再取max,
最大时间反之亦然。
*/
#include<bits/stdc++.h>
using namespace std;

int l,n,a[5031];
int maxt=-1e9,mint=-1e9;

int main(){
    cin>>l>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    if(n==0){
        cout<<0<<' '<<0;
        return 0;
    }
    for(int i=1;i<=n;i++)
        mint=max(mint,min(a[i],l+1-a[i])),
        maxt=max(maxt,max(a[i],l+1-a[i]));
    cout<<mint<<' '<<maxt;
    return 0;
}

T2

/*
思路:
因为值域很小,所以考虑采用桶排序。
每读入一个人的分数,就将其的出现次数累加1,
并算出即时的计划获奖人数,
再将分数从大到小扫描一遍,
不断累加分数出现的次数,直到>=计划获奖人数,
此时的分数即为最低分数线。
*/
#include<bits/stdc++.h>
#define int long long
using namespace std;

int n,w;
int x,mp[631];

signed main(){
	cin>>n>>w;
	for(int i=1;i<=n;i++){
		cin>>x,mp[x]++;
		int p=max(1ll,(int)floor(i*w/100.0)),r=0;
		for(int j=600;j>=0;j--){
			r+=mp[j];
			if(r>=p){ cout<<j<<' '; break; }
		}
	}
	return 0;
}

T3

/*
思路:
首先扫描一遍所有交头接耳的同学,
若他们同行则需要在他们中间那一列分隔,
否则需要在他们中间那一行分隔,
对于所有行按照能分隔开的同学对数排序,在对前k个按编号排序,
对列也进行如此操作即可。
*/
#include<bits/stdc++.h>
using namespace std;

int m,n,k,l,d;
struct row{
	int cnt,id;
}r[2031];
struct col{
	int cnt,id;
}c[2031];

bool cmp1(row a,row b){ return a.cnt>b.cnt; }
bool cmp2(col a,col b){ return a.cnt>b.cnt; }
bool cmp3(row a,row b){ return a.id<b.id; }
bool cmp4(col a,col b){ return a.id<b.id; }

int main(){
	cin>>m>>n>>k>>l>>d;
	for(int i=1,x,y,p,q;i<=d;i++){
		cin>>x>>y>>p>>q;
		if(y==q) 
			r[min(x,p)].cnt++,
			r[min(x,p)].id=min(x,p);
		if(x==p)
			c[min(y,q)].cnt++,
			c[min(y,q)].id=min(y,q);
	}
	
	sort(r+1,r+m+1,cmp1);
	sort(c+1,c+n+1,cmp2);
	sort(r+1,r+k+1,cmp3);
	sort(c+1,c+l+1,cmp4);
	
	for(int i=1;i<=k;i++) cout<<r[i].id<<' ';
	cout<<'\n';
	for(int i=1;i<=l;i++) cout<<c[i].id<<' ';
	return 0;
} 

T4

见题解。

标签:sort,Living,cnt,min,int,23,Dream,id,row
From: https://www.cnblogs.com/XOF-0-0/p/18050460

相关文章

  • Living-Dream 系列笔记 第24期
    ProblemT1/*思路:暴力枚举所有的和,用桶标记每个和出现的次数,找最大值且编号最小即可。*/#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;ints1,s2,s3;intsum=-1e9,ans;intmp[131];signedmain(){ ios::sync_with_stdio(0); cin>>s1>>s2>>s3;......
  • Living-Dream 系列笔记 第21期
    ProblemT1/*思路:枚举二元组(i,j),依次检验k次训练课,若i的位置总是>j或<j,则将答案累加。*/#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;intk,n,ans;inta[31][31];signedmain(){ ios::sync_with_stdio(0); cin>>k>>n; for(inti=1;i<=......
  • Living-Dream 系列笔记 第22期
    ProblemT1/*思路:因为题目要求最大水量,所以K次操作需要都用上,并且由于每次都是将x倒入x+1中,所以K次操作之后的最大水量应当是x~x+k+1之和;于是问题就转变成了求一段长度为k+1的连续子段的和的最大值,因此维护一个前缀和即可。*/#include<bits/stdc++.h>usingnamespacestd......
  • Living-Dream 系列笔记 第19期
    ProblemT1/*思路:对于每一对L,R,标记[L,R)(注意左闭右开!),并且求出最小的L(minl)和最大的R-1(maxr);循环maxl~maxr,若被标记则最长连续挤奶时间+1,最长无人挤奶时间=0;否则最长连续挤奶时间=0,最长无人挤奶时间+1,同时更新最大值。*/#include<bits/stdc++.h>usingnamespacestd;intn......
  • P9185 [USACO23OPEN] Rotate and Shift B 题解
    首先,我们很容易就能得出一个显而易见的结论:若令原数组为\(order\),\(K\)个活跃位置分别为\(A_1,A_2,...,A_K\),则\[order_{A_1}\toorder_{A_2},order_{A_2}\toorder_{A_3},...,order_{A_K}\toorder_{A_1}\]的操作就等价于将\(order\)数组顺时针旋转\(x\)次,即\[orde......
  • Living-Dream 系列笔记 第18期
    ProblemT1/*思路:令N个整数以字符串形式读入,判断其末尾是否为0、2、4、6、8,若是则为偶数,不是则为奇数。*/#include<bits/stdc++.h>usingnamespacestd;intn;stringx;//以字符串形式读入intmain(){ cin>>n; while(n--){ cin>>x; if(x[x.size()-1]=='0'||x[x.......
  • Living-Dream 系列笔记 第20期
    ProblemT1/*思路:统计每个人成绩的出现人次,然后贪心地按分数值域从大到小扫描一遍,每次令答案累加上当前分数出现的人次,若答案>=k就停止扫描并输出即可。*/#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;intn,k,a[2031];intcnt,ans;intmp[131......
  • 我这不波全折的2023出题生涯。
    算出题回忆录吧。其实只会出题不会做题,挺多难题的数据都是别人出的。今年出的最难的题应该是这道fcyqwq了,当时@ZettaByte要拉我进HFZOI,然后入团考交了这道题,当时团长直接给我orz了一个。本来今年想要搞一个CVOIR1的,想要彻底洗去MLOI/ASOI的烂题标签,搞了原神题,但是题......
  • 2023年终回顾:一切都来得及
    前言2023年是充满机遇与挑战的一年,也是个人成长最多的一年。这一年发生了很多事情,经历了挑战,大开了眼界,有勇气去喊停,没有结局也可即兴。2023年回顾忙碌的工作->裸辞续任微软最有价值专家生财有术->郑子铭的月度思考旅行格局面授就业热辣滚烫猫猫狗狗忙碌的工作-......
  • ubuntu22.04升级到23.04
    ubuntu22.04升级到23.04ubuntu一、更新22.04先对现有的22.04的系统进行更新,得到最新的22.04版。1.设置软件更新打开“软件和更新”,转到“更新”选项卡。选择“有新版本时通知我”并将其更改为“适用任何新版本”.这将告诉包管理器查找Ubuntu23.04发布详细信息。......