本文共 1771 字,大约阅读时间需要 5 分钟。
CF 2A2B的签到题 我.. ****注意一下有时候 等于号/%d &x这种的 ****scanf很麻烦的阿! scanf("%lld%lld",&num,&n); scanf("%lld",&box[i]); ****typedef long long ll; 连着三道签到题 1 love triangle https://cn.vjudge.net/problem/CodeForces-939A **注意是三个,绕成圈儿的啊,绕成圈儿的 **最开始没思路.. 本来是打算用下标做的 ,对应起来很麻烦 但是 想一下其实这题指向很简单,只要找到一组就可以退出了 而且一组只要三个就好,不复杂 那么想到怎么去表示,是cnt[i]啊,然后cnt[cnt[i]],最后到了cnt[cnt[cnt[i]]],也没什么障碍就这样了 2 ooxx 没什么坎儿.. 3 母牛公牛(???? https://cn.vjudge.net/problem/CodeForces-939B (1)、 想法其实不复杂 但是误解了有一些东西 ***if there are many ***print any of them 这个是随便打一组就好 啊! 结果我想的好多 要全部打印出来 如果是全部打印的话 怎么不跟你要顺序和按照什么排列呢 哪怕是少了这么点 处处不是PE就TLE这么严格怎么可能顺序都不管你 这里浪费了时间... 白白写了个栈处心积虑,后来还是清空了 而且.. 好低效 好低效的代码又写那么长 "只是实现了 仅此而已 还差得远" (2)、 此后开始不断的超时 **** num % (box[i]) 能简则简 最后的最后超时竟然.. 多判定了一次 num % (box[i])>=1.... 整除诶 28%30 似乎没有影响 ,这一点就超时了= = = =毕竟这个数据量很大吧/ (3)、 1 数据量很大!什么意思呢 1e18是10的十八次方.. 2 数据量很大!什么意思呢 // record = num % (box[i]); 这个其实完全没必要用record存一次....节约开始(不 3 数据量很大!什么意思呢 printf打空格很方便!直接%lld %lld就好了 以及只要scanf("%lld",&box[i])即可 4 typedef long long ll;(#define 后面才 没有标点= -) 然后,用%lld 先这样吧... 其实别人几行就能解决的东西,不用 想的太复杂了 ** 不知道是好习惯还是什么,先for循环读入,再for循环判定 ** 如果是我那个写法&&里面还要判断%的话...感觉直接增加了一倍的长度啊 反而是(只)看是不是比min小什么的,更有用一点 因为这个条件没那么容易满足 (自己想的为什么我在(2)里面一点区别超时了) 最后贴上3最后的代码#includeusing namespace std;typedef long long ll; const int N= 1e5+10; ll box[N]; int main(){// ll minn = 1e18; ll num; ll n; scanf("%lld%lld",&num,&n);// ll record; ll record2=0; ll minn = 1e18; for (ll i = 1; i <= n; i++) scanf("%lld",&box[i]); // record = num % (box[i]); for (ll i = 1; i <= n; i++) { if ( minn >(num % (box[i]))) { minn = num % (box[i]); record2 = i; } } // if(record2) printf("%lld %lld\n",record2,num/box[record2]); // else printf("%lld %lld\n",1,num/box[1]); printf("%lld %lld\n", record2, num / box[record2]); return 0;}
转载地址:http://cmuti.baihongyu.com/