这是今天在洛谷上的一次模拟赛的第一题。
题意大概是这样的:
题目背景
kkk在赛车~
题目描述
现在有N辆赛车行驶在一条直线跑道(你可以认为跑道无限长)上。它们各自以某种速度匀速前进,如果有两辆车A车和B车,A车在B车的后面,且A车的速度大于B车的速度,那么经过一定的时间后,A车必定会超过B车,这称为一次超车。求超车总数。道路起点的位置为0,没有两辆车的初始位置相同。
这一看就是大水题嘛~~
于是代码一口气就出来了:
#include<iostream> #include<iomanip> #include<cstring> using namespace std; int n,x[300001],s[300001],c=0; int main() { memset(x,0,sizeof(x)); memset(s,0,sizeof(s)); cin>>n; for(int i=0;i<n;i++) { cin>>x[i]>>s[i]; } for(int i=0;i<n;i++) for(int j=0;j<n;j++) { if(x[i]<=x[j]&&s[i]>s[j]) c++; } cout<<c<<endl; }
于是愉快的提交了~~
可是
只有50分
好嘛
我知道暴搜肯定过不了的
我改~~
#include<iostream> #include<iomanip> #include<cstring> using namespace std; int n,x[300001],s[300001],c=0; int main() { memset(x,0,sizeof(x)); memset(s,0,sizeof(s)); cin>>n; for(int i=0;i<n;i++) { cin>>x[i]>>s[i]; } for(int i=0;i<n-1;i++) for(int j=i+1;j<n;j++) { if(x[i]<=x[j]&&s[i]>s[j]) c++; else if(x[i]>=x[j]&&s[i]<s[j]) c++; } cout<<c<<endl; }
这……
居然TLE了一半的节点??WTF???
好吧这题怎么写都是50分。这次模拟赛是乐高赛制(提交一次分数打95%),眼看着分就没了,还是不写了……
接着……
洛谷U5874
题目背景
上次老师挑出来的(N-K)位同学很不高兴,于是他们准备自己组建合唱队形。他们请了kkk来帮忙。
题目描述
他们安排了一个动作——手拉着手唱一首歌(就是他们围成一个圈)。如果有两个相邻的同学的身高差非常大(比如姚明和一个1.5米高的人站在一起)的话,评委会感觉非常不爽。于是kkk需要帮助他们求出一种排队方案,使他们身高差距最大值最小,并输出这个最小值和这个方案。
输入输出格式
输入格式:
第一行一个整数N表示有N个人(排成一个圈)
第二行N个整数表示每个人的身高
输出格式:
第一行一个整数表示最小的身高差距最大值
第二行N个整数表示这个最优方案,如果多解输出字典序最小
恩这题也是水题嘛(吧)
一般的思路就是把数据排序,然后从中间散开。
但是可能会受到人数是奇数和偶数的影响,所以多个判断~~
#include<cstdio> #include<algorithm> #include<cmath> using namespace std; int n,arr[6001],m[6001],maxn=0; int main() { scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&arr[i]); sort(arr,arr+n); if(n%2!=0) { int half=n/2; int a=n-1; for(int i=0;i<=n;i++) { m[half]=arr[a-i]; if(i%2==0){half+=i+1;} else half-=i+1; } } if(n%2==0) //人数根据奇偶不同处理 { int half=n/2; int a=n-1; for(int i=0;i<n;i++) { m[half]=arr[a-i]; if(i%2==0){half+=i+1;} else half-=i+1; if(half==0) { m[0]=arr[0]; break;} } } int ls; for(int i=1;i<n;i++) { ls=m[i]-m[i-1]; if(ls>maxn) maxn=ls; } if(fabs(m[n-1]-m[0])>maxn) maxn=fabs(m[n-1]-m[0]); printf("%d\n",maxn); for(int i=0;i<n;i++) { if(i!=n-1) printf("%d,",m[i]); else printf("%d",m[i]); } return 0; }
样例和自己手算的几个数据都通过了~没有满分也该有个4,5个数据点可以过吧。
哎呦卧槽这是啥情况啊
坑爹吧这是……
算了,我等苣蒻还是好好的回去学算法吧……
以后再也不出来水题了
Comments | 2 条评论
博主 hqasr
666
博主 林靖
hhhhh