罪魁祸首就是这场: Codeforces Round #624 (Div. 3)

链接: https://codeforces.com/contest/1311 若干年后回来再看看

本来开开心心的开D题:

一看10000的数据范围,很好,大力艹就完了,最原始的方式AC此题。

#include<bits/stdc++.h>
using namespace std ;
#define int long long
signed main() {
	int T;
	cin>>T;
	while(T--) {
		int a,b,c;
		cin>>a>>b>>c;
		int ans=1000000000;
		int q,w,e=0;
		for(int i=1; i<=10000; i++) {
			int sum=0,sum1=0,sum2=abs(a-i);
			for(int j=1; i*j<=10000; j++) {
				int k=j*i;
				sum=abs(b-j*i);
				if(c>=j*i) {
					sum1=min(c%(j*i),j*i-c%(j*i));
				} else {
					sum1=j*i-c;
				}
				if(ans>sum+sum1+sum2) {
					ans=min(ans,sum+sum1+sum2);
					q=i,w=j*i;
					if(c>=j*i) {
						if(c%(j*i)>=j*i-c%(j*i)) {
							e=c+j*i-c%(j*i);
						} else {
							e=c-c%(j*i);
						}
					} else {
						sum1=j*i-c;
						e=c+sum1;
					}
				}
 
			}
		}
		printf("%lld\n",ans);
		printf("%lld %lld %lld\n",q,w,e);
	}
}

反手开一手F题,看懂了不知道怎么维护,准备休息了。

结束前五分钟在马桶上思考会不会越界,思考到结束,嗯不会。

千算万算没想到自己给自己埋了一个雷

for(int i=1; i<=10000; i++) {
    int sum=0,sum1=0,sum2=abs(a-i);
	for(int j=1; i*j<=10000; j++) {

比赛结束,到了经典的12小时hack时间。

看到榜上疯狂的hackD题,我陷入了沉思。

掏出电脑疯狂推演,发现一组数据:

1
137 10000 10000

这组数据的运算结果应该为:

2
137 10001 10001

而我的第二个数只到了:

for(int j=1; i*j<=10000; j++) 

就差1,就是AC与WA,ACM的魅力不过如此

随后靠这一组数据,疯狂hack别人,大家都别过

叉叉叉:

10个叉叉结束了今晚的战斗。真令人头大。


"穷且益坚,不坠青云之志"