CSDN,有幸遇见 ——我的三周年创作纪念日

news2024/12/23 22:19:35

在这里插入图片描述

一生二,二生三,三生万物

三年,与 CSDN 的相遇相识相知——

前两年都没写,一是没纪念的概念,二是纪念日这天每年总是清明节。
还有就是不知道有勋章((

Meet 遇见

那年,我六年级,已加入了一年半的信息学竞赛。
是一次撞见,我发现了这个能指导我不会做的题目的网站。

是童心的好奇,从此让我打开了对 CSDN 的无尽探索,
一个又一个地寻找着键盘上的字母,我织出了那稚嫩懵懂的第一篇 blog ——《Go to the CSDN》。


Gain 收获

随着打字速度的加快和心智的逐渐完善,我不知不觉地习惯使用 CSDN 写 blog,虽然一共只写了 71 篇,但可以不吝啬地说,都是用心敲出来的(虽然很多内容多但点赞很少)。

只是一些小数据,但当然也有记录的必要。
在这里插入图片描述

尽管这仅有的 143 次点赞中有十多次是自己点的,但也有许许多多各行各业的强者的支持,尤其有两个是 CSDN学习 给予的,备受鼓舞。

在这里郑重感谢所有评论、点赞、收藏、关注的支持啊!

未来是一种憧憬呢。


Life 日常

还不能说创作已经是我生活的一部分了,但它一定已经成为了我生命中的一部分。
创作像是一种总结,是自己与思想的再一次碰撞。创作也是一种乐趣,尤其是收到支持时的莫大鼓舞,我的生命离不开创作。

去年第一次参加的 CSDN 竞赛,进入前十,得到了 CSDN 帆布包的馈赠,以前也在其他网站上参加过类似比赛,但像 CSDN 这样信守承诺的举办方并不多,可见“成就一亿人的社区”并非浪得虚名。“细节决定成败。” 这一点,CSDN 成功了,当之无愧。


Achievement 成就

提示:你过去写得最好的一段代码是什么? 请用代码块贴出来

倒还没感觉写过什么特别突出的代码,那就贴一份 目前唯一一道不看题解就做出来的黑题 吧。

靠模拟退火调参数调出来的,为此还在CSDN写了一篇模拟退火算法的 blog
话说写的这篇 blog 目前还是我写的文章中访问量最高的…

第一次 AC 提交时间:2022-11-18 20:48:07

#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
const double T0=1e5,T1=1e-6,k=0.9;
const int L=230;
int T,m;
struct qh{
    double x,y;
}a[5001],c;
double sqr(double x){return x*x;}
double f(double x,double y){
    double res=1e9;
    for(int i=1;i<=m;i++) res=min(res,sqrt(sqr(x-a[i].x)+sqr(y-a[i].y)));
    return res;
}
double Rand(double x){return 1.0*rand()/RAND_MAX*x;}
int main(){
    scanf("%lf%lf%d",&c.x,&c.y,&m);
    for(int i=1;i<=m;i++) scanf("%lf%lf",&a[i].x,&a[i].y);
    double t=T0,x=0,y=0;
    while (t>T1){
        for(int i=1;i<=L;i++){
            double xx=-1,yy=-1;
            while (xx<0||xx>c.x) xx=x+(Rand(2*c.x)-c.x)*4.0*(t/T0);
            while (yy<0||yy>c.y) yy=y+(Rand(2*c.y)-c.y)*4.0*(t/T0);
            if(f(xx,yy)>f(x,y)) x=xx,y=yy;
            // printf("%.2f %.2f %.2f %.2f\n",x,y,xx,yy);
        }
        t*=k;
    }
    printf("%.9f",f(x,y));
    return 0;
}
/*
start coding:19:55
finish debuging:20:48
*/

顺带贴一手正解代码。

#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
using std::sort;
using std::pair;
using std::min;
typedef pair<int, int> pad;

/*------------------------------Computational geometry------------------------------*/

const double pi =acos(-1), eps =1e-7;

struct vect{
	double x, y;
	vect(){}
	vect(double xx, double yy):x(xx), y(yy){}
	vect operator + (vect v){ return vect(x+v.x, y+v.y); }
	vect operator - (vect v){ return vect(x-v.x, y-v.y); }
	vect operator * (double mu){ return vect(mu*x, mu*y); }
	double operator / (vect v){ return x*v.y-y*v.x; }/*叉积*/
};

struct line{
	vect u, v;
	double angle;
	line(){}
	line(vect uu, vect vv):u(uu), v(vv){ angle =atan2(vv.y-uu.y, vv.x-uu.x); }
};

inline short gtr(double a, double b){ return (a-b > eps); }

inline bool eq(double a, double b){ return (a-b < eps && a-b > -eps); }

inline bool onright(line f, vect w){ return (gtr((w-f.u)/(f.v-f.u), 0)); }

/*求交点*/
vect getIntersection(line f, line g){
	double w =((g.u-f.u)/(f.u-f.v))/((f.u-f.v)/(g.u-g.v));
	return g.u+(g.u-g.v)*w;
}

int cmp(line A, line B){
	if(eq(A.angle, B.angle)) return onright(B, A.u);/*有向直线最左的在最后面,会被保留*/
	else return (gtr(B.angle, A.angle));
}

/*求左侧交*/
inline pad getHPI(line ls[], int totl, line hull[]){
	sort(ls, ls+totl, cmp);
	int l =0, r =0;
	for(int i =0; i < totl; ++i){
		while(i < totl-1 && eq(ls[i].angle, ls[i+1].angle)) ++i;
		while(r-l > 1 && onright(ls[i], getIntersection(hull[r-1], hull[r-2]))) --r;
		if(eq(ls[i].angle-hull[r-1].angle, pi)) return pad(0, 0);/*判方向相反的平行*/
		hull[r++] =ls[i];
	}
	while(r-l > 1){
        if(onright(hull[r-1], getIntersection(hull[l], hull[l+1]))) ++l;
        else if(onright(hull[l], getIntersection(hull[r-1], hull[r-2]))) --r;
        else break;/*已经没有更新了*/
    }
	if(r-l < 3) return pad(0, 0);
	else return pad(l, r);
}

inline double dist(vect x, vect y){ return sqrt((y.x-x.x)*(y.x-x.x)+(y.y-x.y)*(y.y-x.y)); }

/*中垂线左包含 x*/
inline line getmidline(vect x, vect y){
	vect mid =vect((x.x+y.x)/2, (x.y+y.y)/2), v2 =vect((y-x).y, -(y-x).x)/*顺时针方向,与 (y-x) 垂直的向量*/;
	line ret(mid+v2, mid);
	return ret;
}

/*------------------------------Main------------------------------*/

const int MAXN =1000100, MAXN2 =1100;

inline void addbound(line ls[], int &totl, int w, int h){
	ls[totl++] =line(vect(w, h), vect(0, h));
	ls[totl++] =line(vect(0, h), vect(0, 0));
	ls[totl++] =line(vect(0, 0), vect(w, 0));
	ls[totl++] =line(vect(w, 0), vect(w, h));
}

inline double getFarthest(line hull[], int toth, vect p){
	hull[toth++] =hull[0];
	double ret =0;
	for(int i =0; i < toth-1; ++i){
		double res =dist(p, getIntersection(hull[i], hull[i+1]));
		if(gtr(res, ret)) ret =res;
	}
	return ret;
}

line ls[MAXN], hull[MAXN];

inline int read(){
	int x =0; bool f =0; char c =getchar();
	while(c < '0' || c > '9') (c == '-') ? f =1, c =getchar() : c =getchar();
	while(c >= '0' && c <= '9') x = (x<<3) + (x<<1) + (48^c), c =getchar();
	return (f) ? -x : x;
}

vect point[MAXN2];

int main(){
	int w =read(), h =read(), n =read();
	int totp =0;
	for(int i =0; i < n; ++i){
		int x =read(), y =read();
		/*反正总复杂度 n 方这里就暴力判重了(*/
		bool f =1;
		for(int j =0; j < totp; ++j) if(point[j].x == x && point[j].y == y) f =0;
		if(f) point[totp++] =vect(x, y);
	}
	double ans =0;
	for(int i =0; i < totp; ++i){
		int totl =0;
		for(int j =0; j < totp; ++j){
			if(j == i) continue;
			ls[totl++] =getmidline(point[i], point[j]);
		}
		addbound(ls, totl, w, h);
		pad H =getHPI(ls, totl, hull);
		double res =getFarthest(hull+H.first, H.second-H.first, point[i]);
		if(gtr(res, ans)) ans =res;
	}
	printf("%.10lf", ans);
}

来源:IOI 2006 国家集训队论文「王栋 ——浅谈平面 voronoi 图的构造及应用」。


Phantasy 憧憬

还是希望能保持在 CSDN 不规律性更新吧,既然有缘相遇,何不一同随行?
不过可惜一个铁粉都还没有额…

Encourage 激励

努力学习,追求卓越。

前途是光明的,道路是艰难的。

前行不往回顾,勇进不忘调整,跋涉不忘反思。


放个套话:你的支持是我创作的最大动力!

5000字了啊

这个就不删了

Tips

  1. 您发布的文章将会展示至 里程碑专区 ,您也可以在 专区 内查看其他创作者的纪念日文章
  2. 优质的纪念文章将会获得神秘打赏哦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/433009.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM 垃圾回收详解之垃圾收集算法+垃圾收集器

标记-清除算法 该算法分为“标记”和“清除”阶段&#xff1a;首先标记出所有不需要回收的对象&#xff0c;在标记完成后统一回收掉所有没有被标记的对象。 它是最基础的收集算法&#xff0c;后续的算法都是对其不足进行改进得到。 这种垃圾收集算法会带来两个明显的问题&…

Node.js—path模块

目录 1、什么是path模块2、path.resolve 拼接规范的绝对路径 常用3、path.sep 获取操作系统的路径分隔符4、 path.parse 解析路径并返回对象5、path.basename 获取路径的基础名称6、path.dirname 获取路径的目录名7、path.extname 获得路径的扩展名8、 path.join()路径拼接 1、…

Linux高性能服务器编程|阅读笔记:第2章 - IP协议详解

简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金,有幸在竞赛中拿过一些国奖、省奖…已保研 学习经验:扎实基础 + 多做笔…

超越ChatGPT:AgentGPT正在将自主AI带到浏览器中

你好&#xff0c;欢迎来到人工智能领域的新时代&#xff01;今天我们介绍AgentGPT&#xff0c;这是一款最前沿的基于浏览器的平台&#xff0c;旨在革新人工智能的自主性。这项开创性的技术让你能够在舒适的网络浏览器中创建、配置和部署定制化的人工智能代理&#xff0c;以实现…

又涨了?2023全国程序员薪资最新统计(文末附招聘岗位)

大家好&#xff0c;金三银四招聘季还在进行中。刚好最近看到一份 2022 国内程序员薪酬报告&#xff0c;感觉挺有意思的&#xff0c;跟大家分享一下。 在科技迅速发展的时代&#xff0c;各行业对程序员的需求持续增长&#xff0c;程序员作科技市场的“重要基石”&#xff0c;薪…

nodejs+vue 高校校园食堂餐品在线订购网

食堂作为学校的一个重要的部门&#xff0c;为学生提供了用餐的地点&#xff0c;学生可以在食堂享用丰富的餐品&#xff0c;建立一个在校订餐网站&#xff0c;帮助了学生提供一个用餐订餐的系统&#xff0c;也帮助了食堂提供了一个餐品展示的站点。 园的食堂作为一个窗口单位&a…

【nacos配置中心】源码部分解析

启动初始化 SpringApplication.prepareContext applyInitializers 回调ApplicationContextInitializer的initialize方法 getInitializers()从applicationContext获取List<ApplicationContextInitializer<?>> initializers 这个集合是通过SpringApplication的…

Node.js -- Express中间件

1.中间件的概念 1.1 什么是中间件 中间件&#xff08;Middleware&#xff09;,特指业务流程的中间处理环节。 1.2 现实中的例子 1.3 Express中间件的调用流程 当一个请求到达Express服务器中&#xff0c;可以连续调用多个中间件&#xff0c;从而对这次请求进行预处理。 1…

OpenGL入门教程之 深入理解

一、OpenGL简介 OpenGL是一种用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程规范。OpenGL包含一系列可以操作图形和图像的函数&#xff0c;但OpenGL没有实现这些函数&#xff0c;OpenGL仅规定每个函数应该如何执行以及其输出值(类似接口)&#xff0c;所以OpenGL仅是一…

Excel技能之计数求和,让你成为高手之路的机车手

Excel高手之路&#xff0c;开始学习就看到希望。 直接套用&#xff0c;秒变Excel大神。点滴积累&#xff0c;效率飞升。分享给更多的人&#xff0c;一起学习进步。告别加班&#xff0c;让同事刮目相看。 Excel函数&#xff0c;你可以不用&#xff0c;但是不能不知道&#xff…

OpenAI-ChatGPT最新官方接口《安全最佳实例》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(十)(附源码)

Safety best practices 安全最佳实践 前言Use our free Moderation API 使用我们的免费审核APIAdversarial testing 对抗性测试Human in the loop (HITL) 人在回路Prompt engineering 快速工程“Know your customer” (KYC) “了解你的客户”Constrain user input and limit ou…

【Vue3】setup的注意点及watch监视属性的六种情况

一&#xff0c;setup须知 1.1setup的执行时间 1.setup的执行时间要比beforCreate执行要早 export default {name: "Demo",beforeCreate(){console.log(beforeCreate已执行);},setup() {console.log(setup已执行);let person reactive({name: "小明",ag…

Faster RCNN系列——RPN的真值详解与损失值计算

目录 一、RPN真值详解二、RPN预测值三、损失值计算 一、RPN真值详解 RPN的真值分为类别真值和偏移量真值&#xff0c;即每一个Anchor是否对应着真实物体&#xff0c;以及每一个Anchor对应物体的真实偏移值&#xff0c;这两种真值的具体求解过程如下图所示&#xff1a; Anchor生…

【小程序云开发】不用后端也能构建完整的微信小程序

文章目录 什么是微信小程序云函数云数据库HTTP 云函数定时触发云函数总结写在最后 什么是微信小程序云函数 微信小程序云函数是通过微信小程序云开发提供的一种服务器端代码&#xff0c;用于在小程序中进行服务器端的开发和部署。 以下是一些常见的微信小程序云函数类型&#…

AI网站汇总(免费chatgpt)(70个持续增加中)

本文总结了八大类AI工具,包括:聊天AI、绘画AI、AI提示词、图像处理、实用工具、UI设计和3D设计、本地部署AI,汇总AI网站,一键收藏。 目录 一、聊天AI 二、绘画AI 三、AI提示词 四、图像处理

巡检机器人之仪表识别系统

作者主页&#xff1a;爱笑的男孩。 博客简介&#xff1a;分享机器学习、深度学习、python相关内容、日常BUG解决方法及Windows&Linux实践小技巧。 如发现文章有误&#xff0c;麻烦请指出&#xff0c;我会及时去纠正。有其他需要可以私信我或者发我邮箱:zhilong666foxmail.c…

什么是LVS

&#x1f618;作者简介&#xff1a;一名99年运维岗位员工。&#x1f44a;宣言&#xff1a;人生就是B&#xff08;birth&#xff09;和D&#xff08;death&#xff09;之间的C&#xff08;choise&#xff09;&#xff0c;做好每一个选择。&#x1f64f;创作不易&#xff0c;动动…

【brtc】视频下行弱网对抗优化 学习笔记

感谢孙健老师和livevideostack学习笔记百度云 音视频实时通信五个部分 1 RTC基础 需要云端服务器参与大量边缘服务器参与采集、前处理(图像处理)、压缩编码音频 3 A 回声消除、增益</

类ChatGPT逐行代码解读(1/2):如何从零起步实现Transformer、ChatGLM

前言 最近一直在做类ChatGPT项目的部署 微调&#xff0c;关注比较多的是两个&#xff1a;一个LLaMA&#xff0c;一个ChatGLM&#xff0c;会发现有不少模型是基于这两个模型去做微调的&#xff0c;说到微调&#xff0c;那具体怎么微调呢&#xff0c;因此又详细了解了一下微调代…

深度学习竞赛进阶技巧 - BLIP使用说明与实战

BLIP-2: 图像到文本的生成器 BLIP-2: Scalable Pre-training of Multimodal Foundation Models for the World’s First Open-source Multimodal Chatbot 1论文摘要 由于大规模模型的端到端的训练&#xff0c;视觉与语言的预训练模型的成本越来越高。本文提出了BLIP-2&#x…