题目链接:Codeforces Round #514 (Div. 2) A:暴力找每个间隔能休息几次。注意首尾。
【Codeforces Round #514 (Div. 2)】AC代码:
#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include
//#define int long long
using namespace std;
const int N=1e5+10;
int res,n,L,a,t[N],l[N];
signed main(){
cin>>n>>L>>a;
for(int i=1;
i<=n;
i++) cin>>t[i]>>l[i];
for(int i=1;
i<=n;
i++){
res+=(t[i]-t[i-1]-l[i-1])/a;
}
res+=(L-t[n]-l[n])/a;
cout<
B:枚举每个点,能涂就涂,最后判断是不是一样即可。
AC代码:
#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include
//#define int long long
using namespace std;
const int N=1e3+10;
const int dx[]={0,1,1,1,0,-1,-1,-1},dy[]={1,1,0,-1,-1,-1,0,1};
int n,m,flag;
char a[N][N],b[N][N];
inline int check(int x,int y){
for(int k=0;
k<8;
k++) if(a[x+dx[k]][y+dy[k]]!='#') return 0;
return 1;
}
signed main(){
cin>>n>>m;
for(int i=1;
i<=n;
i++) scanf("%s",a[i]+1);
for(int i=2;
i
C:删掉的数字为,先删奇数,然后2的倍数非4的倍数,然后4的倍数非8的倍数。
注意只有三个数字的情况。一定是 k k 3*k。
删数字可以set当中实现。
AC代码:
#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include
//#define int long long
using namespace std;
int n,k=1;
set s;
signed main(){
cin>>n;
if(n<4){
for(int i=1;
i0){
vector v;
if(n==3){printf("%d %d %d\n",k,k,k*3);
return 0;
}
for(auto x:s){
if(__gcd(x,k<<1)==k) v.push_back(x);
}
for(int i=0;
i
D:首先二分半径,然后我们可以发现可能的圆,构成了一条直线。然后对于每个点,我们可以找到一个区间,所以就是判断区间是否有交集。
AC代码:
#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include
//#define int long long
using namespace std;
const int N=1e5+10;
const double eps=1e-8;
long double x[N],y[N],l,r=1e18,mi=1e9,mx;
int n,cnt;
set s;
inline int check(double mid){
long double cl=-1e18,cr=1e18;
for(int i=1;
i<=n;
i++){
if(y[i]>2*mid) return 0;
long double p=sqrt(2.0*y[i]*mid-y[i]*y[i]);
long double ql=x[i]-p,qr=x[i]+p;
cl=max(cl,ql),cr=min(qr,cr);
if(cl>cr) return 0;
}
return 1;
}
signed main(){
cin>>n;
for(int i=1;
i<=n;
i++){
cin>>x[i]>>y[i],mi=min(mi,y[i]),mx=max(mx,y[i]);
if(fabs(y[i])0&&mi<0)||cnt>1) return puts("-1"),0;
if(s.size()==1){
long double mx=-1e18;
for(int i=1;
i<=n;
i++) mx=max(mx,y[i]);
return printf("%.10Lf\n",mx/2),0;
}
for(int i=1;
i<=150;
i++){
long double mid=(l+r)/2;
if(check(mid)) r=mid;
else l=mid;
}
printf("%.10Lf\n",l);
return 0;
}
推荐阅读
- codeforces B. Young Explorers
- codeforces C. Mere Array
- codeforces D. Omkar and Bed Wars
- codeforces C. Omkar and Waterslide
- codeforces B. Omkar and Infinity Clock
- codeforces B. Ternary Sequence
- 题库-CF|【Codeforces Round 370 (Div 2) E】【线段树 等比数列 区间合并】Memory and Casinos 赌场区间[l,r] l进r先出的概率
- 题库-CF|【Codeforces Round 263 (Div 2)C】【贪心 哈弗曼思维】Appleman and Toastman 每个非1size子树延展为2子树的最大权
- Codeforces|Codeforces Round #605 (Div. 3) D. Remove One Element
- Codeforces|Codeforces Round #643 (Div. 2) B.Young Explorers