(标题妄想)。
95/0/0
第二题很水,后来花5分钟切了。
3503. 粉刷(paint) (Standard IO)
Time Limits: 1000 ms Memory Limits: 131072 KB Detailed Limits Goto ProblemSet
这道题数据很水,贪心+特判就过了。
3504. 运算符(calc) (Standard IO)
Time Limits: 1000 ms Memory Limits: 131072 KB Detailed Limits Goto ProblemSet
由唯一分解定理和约数个数公式可知,
。
没了。
6290. 倾斜的线
(File IO): input:slope.in output:slope.out
Time Limits: 1000 ms Memory Limits: 131072 KB Detailed Limits
Goto ProblemSet
b组唯一值得写的题。
按点在给的斜率意义下的截距排序,比较相邻的点斜率与给定斜率差,暴力即可。
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 typedef long double ldo; 5 const ll N=2e5+10; 6 ll n,P,Q,ans; 7 long double k,delta; 8 ll gcd(ll a,ll b){ 9 return b==0?a:gcd(b,a%b); 10 } 11 struct num{ 12 ll son,mon; 13 long double xie(num a){ 14 return (long double)(a.mon-mon)/(a.son-son); 15 } 16 long double jie(){ 17 return (long double)mon-k*son; 18 } 19 }e[N]; 20 bool cmp(num x1,num x2){ 21 return x1.jie()<x2.jie(); 22 } 23 int main(){ 24 freopen("slope.in","r",stdin); 25 freopen("slope.out","w",stdout); 26 scanf("%lld%lld%lld",&n,&P,&Q); 27 k=(long double)P/Q; 28 delta=1e9; 29 for(ll i=1;i<=n;i++){ 30 scanf("%lld%lld",&e[i].son,&e[i].mon); 31 } 32 sort(e+1,e+n+1,cmp); 33 for(ll i=1;i<n;i++){ 34 ldo tmp=e[i].xie(e[i+1]); 35 if(abs(tmp-k)<delta){ 36 delta=abs(tmp-k); 37 ans=i; 38 } 39 } 40 ll tp1=abs(e[ans+1].mon-e[ans].mon); 41 ll tp2=abs(e[ans+1].son-e[ans].son); 42 ll g=gcd(tp1,tp2); 43 ll a1=tp1/g; 44 ll a2=tp2/g; 45 printf("%lld/%lld",a1,a2); 46 return 0; 47 }
明天A组见。