11.20(1)

来源:互联网 发布:施工进度网络计划绘制 编辑:程序博客网 时间:2024/06/01 07:20
第一题
奶牛挤奶
Farmmer又一群奶牛,二个一组一起挤奶。如何安排,使时间所需最长组的时间最短。已知共有m头奶牛(m<=1000000000,且m一定为偶数)。
看到这道题目,是一脸懵的,默默数起来零......一个......两个......三个......索性指头还够数,九个而已......九个!!!!
未有解决的办法,只能先把大体的思路编好。
#include<bits/stdc++.h>
using namespace std;
int a[99999999];//卡着变量
long long n;
int main()
{
cin>>n;
long long x=0,m=0;
for(int i=1;i<=n;i++)

  cin>>x;
  cin>>a[m];
  m+=1;
  x-=1;
  if(x>0)
   for(int j=1;j<=x;j++)
   {
       a[m]=a[m-1];
       m+=1;
   }
}//因为读入格式是奶牛数加时间(即所需时间相同奶牛的头数加时间),直接各给一个变量。
sort(a,a+m);//将奶牛的所需时间从头到尾排一遍。
long long s=0;
int t=0;
for(int i=1;i<=m/2;i++)
{
 if(a[t]+a[m-t-1]>s)
 s=a[t]+a[m-t-1];//让所需时间最长的奶牛和所需时间最短的奶牛组成一组,使时间最短。并找出最小值。
 t+=1;
     }
 cout<<s<<endl;
 return 0;
}
当满怀欣喜地过了样例。结果......当然只过了样例得了十分。知道现在,这题的思路还是茫茫然的一片。值得慢慢捋,暴力出奇迹什么的.......再也不相信这世界有爱了。吃一堑长一志,思路的完善度和刷题量对题的解剖和分析完全不敢恭维,血淋淋地展在眼前啊。
Next
第二题
马路两边的小狗
小狗过马路,每只狗都有自己的数字编号,马路两边也各有自己的编号(1,2),每一行给出小狗的编号和马路的编号,同一只编号的狗在马路两边各出现了一次,则记为小狗过了一次马路。求所有狗一共过了几次马路。
对比上一道题,这道题可就人性化多了。比起奶牛,还是狗狗什么的最有爱了。看完题目,脑子里一下子有了许多思路。刚刚学了程序体又学了pair语句,两个各有各的好处,各有各的方便,但是,格式什么就像料想好似的,跑的远远的。最终还是用了两个变量。
#include<bits/stdc++.h>
using namespace std;
int x;
int y[11],v[11];//i为狗狗编号,y记录上一次这第i只狗出现在马路的哪边。V,统计次数。
int main()
{
int n;
int m;
cin>>n;
for(int i=1;i<=10;i++)
{ y[i]=-1; v[i]=-1;}//初始值都赋值为-1,因为次数在统计时,第一次出现时不能算。而y是为了在判断同一边时不会出现错误
for(int i=1;i<=n;i++)
{
cin>>x;
cin>>m;
if(m!=y[x])
{ y[x]=m;
  v[x]+=1;}//若这只狗上一次出现时在马路的一边与现在不是同一边时,即记做过了一次马路。
}
long long s=0;
for(int i=1;i<=10;i++)
if(v[i]>=0)
s+=v[i];//统计出现过所有狗的次数(若v被加过,则出现过。当出现一次时并没有过马路,所以记做0,可以直接累加。这就是-1的方便之处)
cout<<s<<endl;
return 0;
}
End
原创粉丝点击