32 条题解
-
3juan1973 LV 10 @ 2014-02-06 19:34:18
发题解喽!这次总算打败了HHD大神(之前输了N次),心情很好。
一道水题,注意细节。因为刚转C++,各种都不太会,连快排的Cmp都不会写(只好一个选排充数),而且刚才double的读入也是他教我的。。
说一下思路。
读取后对a,b排序,然后我是对m个a,b的限制进行循环的,每次发现当前time距离a[k]大于等于1时停止并传CS。
每次传是min(k,ans) //只有k条数据线,也只有ans个电脑已经复制成功。(ans来保存成功复制的电脑数)BY JSB 绍兴一中万岁!
#include<stdio.h>
using namespace std;
double a[1001],b[1001],time,last;
long n,p,m,k,i,ans,t;
bool go;
void paixu()
{
long i,j;
double t;
for (i=1;i<m;i++)
for (j=i+1;j<=m;j++)
if ((a[i]>a[j])||(a[i]==a[j])&&(b[i]>b[j]))
{
t=a[i];a[i]=a[j];a[j]=t;
t=b[i];b[i]=b[j];b[j]=t;
}
}
long min(long x,long y)
{
if (x<y) return x;
return y;
}
int main()
{
scanf("%ld %ld %ld",&n,&p,&m);
for (i=1;i<=m;i++)
{
scanf("%lf%lf",&a[i],&b[i]);
b[i]+=a[i];
}
paixu();
ans=1;time=0;k=1;go=false;
while (ans<n)
{
while ((a[k]-time<1)&&(k<=m))
{
if (b[k]>time) time=b[k];
k++;
}
if (k>m)
{
go=true;
break;
}
t=long(a[k]-time);
while (t>0)
{
time=time+1;
ans+=min(p,ans);
t--;
if (ans>n) break;
}
if (ans>n) break;
}
if (go)
{
while (ans<n)
{
time=time+1;
ans+=min(p,ans);
}
}
printf("%.2f",time);
return 0;
}
蒋仕彪友情提供 -
12014-02-06 20:11:26@
一共交了11次,其中9次WA,1次忘了去掉最后的for(;;);TLE,最后A了。我是通过判断该时间可以连多少机子,再与N比较的。但是后来时间大了LONG LONG就爆了,后来就改成N-NOW要多少时间了。顺便瞻仰下JSB大神!
-
12014-02-06 19:55:58@
WA了7次,放弃治疗了,顺便前排跪JSB大牛
-
12013-12-23 21:26:58@
var
t,c:real;
n,k,m,l,d:qword;
i,j:longint;
a,b:array[0..100000] of double;
begin
readln(n,k,m);
for i:=1 to m do
read(a[i],b[i]);
for i:=1 to m-1 do
for j:=m downto i+1 do
if a[j-1]>a[j]
then begin
a[0]:=a[j-1];b[0]:=b[j-1];
a[j-1]:=a[j];b[j-1]:=b[j];
a[j]:=a[0];b[j]:=b[0];
end;
t:=0;i:=1;d:=0;l:=1;a[0]:=0;b[0]:=0;
a[m+1]:=maxlongint*maxlongint;
repeat
while a[i]+b[i]<=t do inc(i);
if a[i]>=t+1
then begin
if l<k then l:=l+l else l:=l+k;
t:=t+1;
end
else begin
t:=a[i]+b[i];
inc(i);
end;
until l>=n;
writeln(t:0:2);
end.
第50道AC庆祝一下(¯﹃¯)
代码送上 double轻轻虐过 水题无误 -
02016-12-28 22:11:21@
#include<cstdio>
#include <algorithm>
using namespace std;
struct node
{
double x,y;
}a[10050];
int cmp(node a,node b)
{
return a.x<b.x;
}
int main()
{
int n,k,m,h,t=1,i,j;
double now=0;
scanf("%d%d%d",&n,&k,&m);
for(i=1;i<=m;i++)
scanf("%lf%lf",&a[i].x,&a[i].y);
sort(a+1,a+m+1,cmp);
for(i=1;i<=m;i++)
{if(now>a[i].x+a[i].y) continue;
h=(int)(a[i].x-now);
for(j=1;j<=h;j++)
{if(t>=n)
{printf("%.2lf",now);
return 0;
}
if(t<=k) t=t*2;
else t=t+k;
now++;
}
if(t<n)now=(a[i].x+a[i].y);
}
while(1)
{ if(t>=n)
{printf("%.2lf",now);
return 0;
}
if(t<=k) t=t*2;
else t=t+k;
now++;
}
return 0;
}为什么最后一个点过不了??
-
02009-11-07 16:15:48@
排序,判断重复,很简单
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 25ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:25ms -
02009-10-15 16:36:50@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 9ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:9ms
Puppy大神給我9ms... -
02009-08-29 18:07:51@
3次WA后...终于AC..
-
02009-08-20 19:25:57@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 72ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:72ms注意细节。
我是这样处理重叠的:
y[1,1]:=a[1,1];y[1,2]:=a[1,2];
u:=1;
for i:=2 to m do
if a -
02009-06-01 14:38:27@
尽管验证码是AC3Q (ac thank you)结果还是不妙啊……
-
02009-05-23 12:00:42@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms快排+去重,先算出总时间再去搜索。
-
02009-01-13 19:32:04@
关键有2点
1时间的排序
2对重叠时间段的处理 -
02008-12-14 10:50:54@
.....
-
02008-10-07 22:22:30@
编译通过...
├ 测试数据 1:答案正确... ms
├ 测试数据 2:答案正确... ms
├ 测试数据 3:答案正确... ms
├ 测试数据 4:答案正确... ms
├ 测试数据 5:答案错误... ├ 标准行输出
├ 错误行输出
├ 测试数据 6:答案错误... ├ 标准行输出
├ 错误行输出
├ 测试数据 7:答案错误...程序输出比正确答案长
├ 测试数据 8:答案错误... ├ 标准行输出
├ 错误行输出
├ 测试数据 9:答案正确... ms├ 测试数据 1:答案正确... ms
Unaccepted 有效得分:6 有效耗时:ms
靠,,怎么WA了四个...
我排了序,考虑了重叠,还开了extended... -
02008-10-07 18:10:20@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:运行时错误...| 错误号: 207 | 无效浮点运算
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:运行时错误...| 错误号: 207 | 无效浮点运算
├ 测试数据 10:运行时错误...| 错误号: 207 | 无效浮点运算哪位大牛教教我怎么回事?
-
02008-09-27 13:08:15@
哪位大牛能将你们过了的程序发给我一下???
398619217@qq.com
谢谢 -
02008-09-21 07:15:58@
注意一个问题,就是第十组数据似乎m大于了10^3,我一开始TLE,后来改大数组就KO了.....
-
02008-08-26 10:38:00@
第150题
纪念一下
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02008-08-22 17:54:23@
用double就行了啊
-
02008-08-21 22:57:14@
额,局域网都关了,怎么玩CS?PDBOT?