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最后的代码
#include<iostream>
using 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;
}