首页 > 其他分享 >CSP2024 前集训:csp-s模拟12

CSP2024 前集训:csp-s模拟12

时间:2024-10-21 21:32:30浏览次数:1  
标签:12 unlocked int void CSP2024 Tp read inline csp

前言

咕了好久才写,当时又发烧了所以没有交。

虽然有两道签,但一道时计算几何一道放了 T4 都没打,T1 赛时猜到结论和先看 T4 的都赢麻了,T1 赛时 \(π\) 只会背倒第九位精度炸了暴力都不对。

剩下的题当天太难受了都没改,改的两道都是 special judge 哎?

T1 小 h 的几何

  • 九点圆圆心的证明详见 DrRatio 的博Ishar-zdl 有没有证九点共圆但证明圆心位置更简便的方法。

结论:九点圆圆心在三条垂线交点与外心连线的中点上,坐标为 \((\dfrac{x_a+x_b+x_c}{3},\dfrac{y_a+y_b+y_c}{3})\),也有代数证明方法(建系暴力算)。

直接统计每个点的贡献即可,\(π\) 可通过 c++ 库里的 M_PI。

点击查看代码
#include<bits/stdc++.h>
#define ll long long
#define endl '\n'
#define sort stable_sort
using namespace std;
const double pi=3.1415926535898;
template<typename Tp> inline void read(Tp&x)
{
	x=0;register bool z=true;
	register char c=getchar_unlocked();
	for(;!isdigit(c);c=getchar_unlocked()) if(c=='-') z=0;
	for(;isdigit(c);c=getchar_unlocked()) x=(x<<1)+(x<<3)+(c^48);
	x=(z?x:~x+1);
}
template<typename T,typename ...Tp> inline void read(T &x,Tp &...y){read(x);read(y...);}
template<typename Tp> inline void wt(Tp x){if(x>9)wt(x/10);putchar_unlocked((x%10)+'0');}
template<typename Tp> inline void write(Tp x){if(x<0)putchar_unlocked('-'),x=~x+1;wt(x);}
template<typename T,typename ...Tp> inline void write(T x,Tp ...y){write(x);putchar_unlocked(' ');write(y...);}
int n; double tmp,ansx,ansy;
signed main()
{
	freopen("geometry.in","r",stdin),freopen("geometry.out","w",stdout);
	read(n); for(int i=1,x;i<=n;i++)
		read(x),ansx+=cos(1.0*x/1e9*pi),ansy+=sin(1.0*x/1e9*pi);
	tmp=1.5/n; printf("%.12lf %.12lf",ansx*tmp,ansy*tmp);
}

T4 小j 的组合

题目和题面没有任何关系。

即除了树的直径其余的点都跑两遍,直径跑一边,处理出直径端点然后直接 dfs 就做完了。

点击查看代码
#include<bits/stdc++.h>
#define ll long long
#define endl '\n'
#define sort stable_sort
#define pb push_back
using namespace std;
const int N=110;
template<typename Tp> inline void read(Tp&x)
{
	x=0;register bool z=true;
	register char c=getchar_unlocked();
	for(;!isdigit(c);c=getchar_unlocked()) if(c=='-') z=0;
	for(;isdigit(c);c=getchar_unlocked()) x=(x<<1)+(x<<3)+(c^48);
	x=(z?x:~x+1);
}
template<typename T,typename ...Tp> inline void read(T &x,Tp &...y){read(x);read(y...);}
template<typename Tp> inline void wt(Tp x){if(x>9)wt(x/10);putchar_unlocked((x%10)+'0');}
template<typename Tp> inline void write(Tp x){if(x<0)putchar_unlocked('-'),x=~x+1;wt(x);}
template<typename T,typename ...Tp> inline void write(T x,Tp ...y){write(x);putchar_unlocked(' ');write(y...);}
int n,s,t,mx,lca,tot,cnt,f[N],g[N],dad[N],nxt[N],ope[N],pos1[N],pos2[N],ans[N<<1];
vector<int>e[N];
void dfs1(int x,int fa)
{
	pos1[x]=pos2[x]=x,dad[x]=fa;
	for(int y:e[x]) if(y!=fa)
	{
		dfs1(y,x);
		if(f[x]<f[y]+1) 
			pos2[x]=pos1[x],pos1[x]=pos1[y],g[x]=f[x],f[x]=f[y]+1;
		else if(g[x]<f[y]+1) pos2[x]=pos1[y],g[x]=f[y]+1;
		if(f[x]+g[x]>mx) s=pos1[x],t=pos2[x],lca=x,mx=f[x]+g[x];
	}
}
void dfs2(int x,int fa,bool flag)
{
	ans[++tot]=x,dad[x]=fa;
	for(int y:e[x]) if(y!=fa&&y!=nxt[x]) dfs2(y,x,1);
	if(nxt[x]) dfs2(nxt[x],x,0);
	if(flag) ope[++cnt-n]=dad[x],ans[++tot]=cnt;
}
signed main()
{
	freopen("combo.in","r",stdin),freopen("combo.out","w",stdout);
	read(n),cnt=n;
	for(int i=1,x,y;i<n;i++) read(x,y),e[x].pb(y),e[y].pb(x);
	dfs1(1,0);
	for(int i=s;i!=lca;i=dad[i]) nxt[i]=dad[i];
	for(int i=t;i!=lca;i=dad[i]) nxt[dad[i]]=i;
	dfs2(s,0,0); write(cnt-n),puts("");
	for(int i=1;i<=cnt-n;i++) write(ope[i]),putchar_unlocked(' ');
	puts(""); for(int i=1;i<=tot;i++) write(ans[i]),putchar_unlocked(' ');
}

标签:12,unlocked,int,void,CSP2024,Tp,read,inline,csp
From: https://www.cnblogs.com/Charlieljk/p/18490472

相关文章

  • CSP2024 前集训:多校A层冲刺NOIP2024模拟赛10
    前言不想说啥了最简单的一题是紫,去死吧只改了T1、T2,T2原题翻译和赛时题面描述都很唐,赛后断断续续加了好多hack。T1岛屿设\(f_{a,b}\)表示\(a\)条两端同色链,\(b\)条两端异色链时连通块数量的期望。红红蓝蓝相连得到红蓝\(\tof_{a-1,b+1}\)。红红红蓝相连得到红红......
  • 1112. 每位学生的最高成绩
    力扣题目跳转(1112.每位学生的最高成绩-力扣(LeetCode))表:Enrollments+---------------+---------+|ColumnName|Type|+---------------+---------+|student_id|int||course_id|int||grade|int|+---------------+----......
  • 1126. 查询活跃业务
    力扣题目跳转(1126.查询活跃业务-力扣(LeetCode))事件表:Events+---------------+---------+|ColumnName|Type|+---------------+---------+|business_id|int||event_type|varchar||occurrences|int|+---------------+---------+......
  • [POI2012] Cloakroom - Solution
    POI2012Cloakroom题目描述(搬自洛谷)有\(n\)件物品,每件物品有三个属性\(a_i,b_i,c_i\(a_i<b_i)\)。再给出\(q\)个询问,每个询问由非负整数\(m,k,s\)组成,问是否能够选出某些物品使得:对于每个选的物品\(i\),满足\(a_i\lem\)且\(b_i>m+s\)。所有选出物品的\(c_i......
  • csp2024 复习计划
    啊啊啊啊啊啊啊啊啊啊啊啊啊啊先复习板子,再复习Trick和题目。1.数据结构平衡树笛卡尔树线段树、树状数组的各种Trick哈希的方法、题目2.杂算法CDQ分治、整体二分、点分治、点分树KMP可以做道大搜索练练手3.图论最小生成树、最短路建模相关......
  • 题解 P11220 / MX241020D【【MX-S4-T4】「yyOI R2」youyou 的三进制数】
    好长的标题题目描述现在有\(0\simn\)共\(n+1\)个数。定义\((x)_{3}\)表示十进制数\(x\)的三进制形式。如果没有特别强调,那么这些数均为十进制形式。youyou想构造一个序列长度为\(p\)(\(p\ge1\))的非负整数序列\(a\)。使之满足:\(a_i\in[0,n]\)。不存在\(i......
  • 信息学奥赛复赛复习18-CSP-J2023-01小苹果-向上取整、向下取整、模拟算法
    PDF文档公众号回复关键字:202410211P9748[CSP-J2023]小苹果[题目描述]小Y的桌子上放着n个苹果从左到右排成一列,编号为从1到n。小苞是小Y的好朋友,每天她都会从中拿走一些苹果。每天在拿的时候,小苞都是从左侧第1个苹果开始、每隔2个苹果拿走1个苹果。随......
  • 12、用户和权限管理
    用户组与用户管理用户组(Group)用户组用于方便权限分配。常见部门组:北京核心研究院-教研中心-北京教学部研究院-研发中心-长沙研发研究院-售后VIP服务中心研究院-教研中心-长沙教学部组ID(GID)分类:root用户组:GID=0程序用户组(系统用户组):1-999(CentOS7)普通用户组:1000-......
  • PMP--必刷题–解题–121-130
    文章目录14.敏捷--产品待办事项列表121、[单选]项目经理使用混合型方法来遵守监管要求。规划和收尾阶段将使用预测型方法,而执行阶段将使用迭代方法。在第二次冲刺评审期间,项目发起人要求对一些产品待办事项列表的优先级进行变更。作为服务型(仆人型)领导者,项目经理应该做......
  • 1200PLC通过NODERED,将数据发布到阿里云物联网平台
    配置要求:1,电脑上需要安装有博图软件,我这里使用的是TIAPortalV16版本2,电脑上需要安装NODE_RED3,已经有阿里云物联网平台账号。新建PLC项目,编写PLC程序,*新建PLC项目,我这里硬件为cpu1214,dcdc_R|||||----|----|----|||||设置......