事情总是么得那么简单( ・´ω`・ )
#509A Heist 人的思维是发展的……
随手拍乱码
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; long long k[1010],n; unsigned long long sum=0; int i; int main() { cin>>n; for( i=0;i<n;i++) scanf("%lld",&k[i]); sort(k,k+n); for(i=1;i<n;i++) sum+=k[i]-k[i-1]; cout<<sum-n+1<<endl; return 0; }
给出n个数,判断最少少了几个数(Point 1:一定是少了)。
在整理之前看了一下ac码:我为什么写的这么复杂(`・ω・´)。然后随手写了个cout<<最大值减最小值减n再加一<<endl交了一发,wa的点比初见还早。upd:后来大佬发现最小值的初值设的不够大orz
看来事情没有这么简单。
又看了一下初见的两个wa,第一个sum没开ull(Point 2:1e9的1000个加法)但是我现在肯定不会把数组开longlong,第一第二个都有一条if(sum==n)cout<<0<<endl;嗯这是Point 1的错误。
总之因为连续的数所以相邻数的差的和应该比个数少1,如果跳过了数,现在的sum就会比原来的多跳过的个数。“sum-(n-1)”
我还是举个例子吧,以后再看这篇我肯定懒得再想(。・ω・。)
e.g.4 5 6--->4 6,(n,sum)原先是(3,2),现在是(2,2),连续的应该是(2,1)。
#509B Buying a TV Set 写之前多花点时间理解题意,评测机就可以少花点时间在我的乱码上
给a,b,x,y,问在p不超过a,q不超过b的情况下有多少对p,q满足p/q=x/y。
行吧,我觉得这么翻译出来做法就很明显了——先把x,y约分(gcd),然后看看a里有几个x,b里有几个y,输出最少的那个,完。
然而我一开始不知道为什么认为xy里有好几个gcd(x,y),这也无伤大雅,我还认为大小会影响它们在比例式中的位置,于是还按大小重新换了一下位置,评测机wawa大哭。
#510A Benches 计算还是不计算,这是一个问题
有n个长凳,m个没坐下的人,给出每个长凳已经坐着的人数,求m坐下后可能存在的最少的人数和最多的人数。
试图通过已知最值的“有人数”加上平均新坐下的人数来计算出答案,大失败,因为当前最优可坐的长凳(当前坐着的人最少的那个)是不断变化的,而这个问题我还是试图计算解决,因为怕不停地排序会t。事实上,是的,这个数据不大,坐下一个人sort一下就好了。
超暴力!(╯°Д°)╯
昨晚有一场div3,7wa1a,就开了AB两个题。人的思维定式真的可怕,特别在压力加疲劳的情况下,很难摆脱这种“想当然”,不管是想太多还是想不到,唉都是对立统一的。再看看这些曾经a掉的题,虽然当时wa了好几次,但是总觉得比现在离正答更近。最近觉得又是新一轮迷茫。anyway,菜是原罪,迷茫还是想得太多做得太少。
upd:后来发现是8wa_(:з」∠)_