CF514

CF这场比赛赛场上做了三个,交了两个,最后电脑没电了C没有交,第二天交了1A,心态小崩,不过因为之前太水了,这次竟然还加了十几分。

 

A. Cashier

这是个简单的贪心,代码zhao找不到了

B. Forgery

这题是一个暴力,考试时花了一段时间找规律,后来发现只要四周8个是黑色的,就可以不管中间那块的颜色,所以从(2,2)遍历到(n-1,m-1),然后将墨水点和原图比较一下即可

#include<bits/stdc++.h>
using namespace std;


int a[1005][1005],b[1005][1005],n,m,x,y,z,k,l,p,s,ans;
int add[8][2]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
char c;

bool pan(int x, int y){
    bool f=1;
    for (int i=0; i<8; i++)
    if (a[x+add[i][0]][y+add[i][1]]==0){
        f=0;
        break;
    }
    return f;
}

void work(int x, int y){
    for (int i=0; i<8; i++)
        b[x+add[i][0]][y+add[i][1]]=1;
}
int main(){
    cin>>n>>m;
    for (int i=1; i<=n; i++)
    for (int j=1; j<=m; j++){
        cin>>c;
        if (c=='#') {
            a[i][j]=1;
            s++;
        }
        else a[i][j]=0;
    }
    for (int i=2; i<=n-1; i++)
        for (int j=2; j<=m-1; j++) if (pan(i,j)) work(i,j);
    for (int i=1; i<=n; i++)
        for (int j=1; j<=m; j++) ans+=b[i][j];
    if (ans==s) cout<<"yes"<<endl;
    else cout<<"no"<<endl;
    return 0;
}

C. Sequence Transformation

这题是一个找规律的题,一开始以为是一道难的数学题有点害怕,后来发现让剩下的公约数最大只需要每次删掉奇数,然后剩下的除以2,然后再删掉奇数,直到删除完为止,那么每次删除的即为ceil(n/2),特别要注意的是如果最后删到n为3,那么最后一个不再是2^k,而是2^(k-1)*3,因为此时1,2,3删除2会使结果最大。

#include<bits/stdc++.h>
using namespace std;


int n,m,x,y,z,k,l;

int main(){
    cin>>n;
    k=1;
    while (n){
        if (n==3){
            cout<<k<<" "<<k<<" "<<k*3;
            break;
        }
        x=(n+1)/2;
        n/=2;
        for (int i=1; i<=x; i++) cout<<k<<" ";
        k*=2;
    }
    return 0;
}

 

D. Nature Reserve

这题是一个二分,属于知识储备足够但是想不到做法的题,二分半径然后公式判断即可,一开始没想到r会很大第四个点wa好几次,还有sqrt必须拆开写,不然精度误差很大,看网上有大佬用三分,回头学习一下

#include<bits/stdc++.h>
using namespace std;

double a[100005][2];
int n,m;
double x,y,z,k,l;

bool pan(double r){
    double z=-1e18;
    double y=1e18;
    for (int i=1; i<=n; i++){
        if (2*r<a[i][1]) return 0;
        z=max(a[i][0]-sqrt(a[i][1])*sqrt(2*r-a[i][1]),z);
        y=min(a[i][0]+sqrt(a[i][1])*sqrt(2*r-a[i][1]),y);
    }
    if (z>y) return 0;
    else return 1;
}
int main(){
    cin>>n;
    for (int i=1; i<=n; i++) cin>>a[i][0]>>a[i][1];
    for (int i=2; i<=n; i++)
    if (a[1][1]*a[i][1]<0){
        cout<<-1<<endl;
        return 0;
    }
    for (int i=1; i<=n; i++) a[i][1]=abs(a[i][1]);
    double l,r=0;
    l=0;
    r=1e16;
    for (int i=1; i<=500; i++){
        double mid=(l+r)/2.0;
        if (pan(mid)) r=mid;
        else l=mid;
    }
    printf("%.10f", r);
    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目:使用 JavaScript 编写的杀死幽灵游戏(附源代码) 杀死鬼魂游戏是使用 Vanilla JavaScript、CSS 和 HTML 画布开发的简单项目。这款游戏很有趣。玩家必须触摸/杀死游荡的鬼魂才能得分。您必须将鼠标悬停在鬼魂上 - 尽量得分。鬼魂在眨眼间不断从一个地方移动到另一个地方。您必须在 1 分钟内尽可能多地杀死鬼魂。 游戏制作 这个游戏项目只是用 HTML 画布、CSS 和 JavaScript 编写的。说到这个游戏的特点,用户必须触摸/杀死游荡的幽灵才能得分。游戏会根据你杀死的幽灵数量来记录你的总分。你必须将鼠标悬停在幽灵上——尽量得分。你必须在 1 分钟内尽可能多地杀死幽灵。游戏还会显示最高排名分数,如果你成功击败它,该分数会在游戏结束屏幕上更新。 该游戏包含大量的 javascript 以确保游戏正常运行。 如何运行该项目? 要运行此游戏,您不需要任何类型的本地服务器,但需要浏览器。我们建议您使用现代浏览器,如 Google Chrome 和 Mozilla Firefox。要玩游戏,首先,单击 index.html 文件在浏览器中打开游戏。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值