前言

200分果断自闭,F是原题,所以就用原题算了

A,B,C,D,E


A 光图

分析

题目看不懂(物理只会入射角和反射角相等),

看完样例解释就知道是输出\(pk\bmod n\),嗯


代码

#include <cstdio>
#define rr register
using namespace std;
signed main(){
rr int n,m,k;
scanf("%d%d%d",&n,&m,&k);
return !printf("%d",1ll*m*k%n);
}

B 向量

分析

只有会向量点积才会做此题(我连叉积都快忘了,当时点积也不会)

\(ans=\vec a\cdot \vec b+\vec b\cdot \vec c+\vec a\cdot \vec c\)

这一坨直接乘也不会,考虑推式子,把它变成\(|\vec a|^2=r1^2\)这种形式最好

\(|\vec a+\vec b+\vec c|^2=|\vec a|^2+|\vec b|^2+|\vec c|^2+2(\vec a\cdot \vec b+\vec a\cdot \vec c+\vec b\cdot \vec c)\)

那么\(ans=\frac{|\vec a+\vec b+\vec c|^2-{r1}^2-{r2}^2-{r3}^2}{2}\)

所以要分类讨论\(|\vec a+\vec b+\vec c|^2\)

如果这三个向量可以拼成一个三角形(两边之和大于第三边)那么这一坨等于0,

否则必须让它们共线使答案最小,这样变成\(r3-r2-r1\)

代码很好写,但是要具备高中知识,还要开\(\text{long double}\)


## 代码
#include <cstdio>
#include <cctype>
#define rr register
#define max(a,b) ((a)>(b)?(a):(b))
using namespace std;
typedef long double lde;
lde r1,r2,r3,t,ans;
signed main(){
scanf("%Lf%Lf%Lf",&r1,&r2,&r3),t=max(r3-r2-r1,0),
r1*=r1,r2*=r2,r3*=r3,t*=t,ans=(t-r1-r2-r3)/2.0;
return !printf("%.1Lf",ans);
}

C 高维

分析

显然只有\(n\)条路(人类智慧)

对于第\(i\)条路径第\(j\)个点可以表示为

\(0->1(i)->1->1->1->1(i+j-1)->0\)

代码特短特舒服


#include <cstdio>
#define rr register
using namespace std;
typedef long long lll;
lll n;
inline void print(lll ans){
if (ans>9) print(ans/10);
putchar(ans%10+48);
}
signed main(){
scanf("%lld",&n);
print(n);
for (rr lll i=1;i<=n;++i)
for (rr lll j=0,t=0,p=i-1;j<=n;++j){
putchar(j==0?10:32),
print(t),t|=1ll<<p;
if (++p==n) p=0;
}
return 0;
}

D 四角链

分析

先剧透是求第二类斯特林数\(S2(n,n-k)\)

设\(dp[i][j]\)表示前\(i\)个格子填了\(j\)个的方案数,那么

\(dp[i][j]=dp[i-1][j]+dp[i-1][j-1]*(i-j+1)\)

答案就是\(dp[n-1][k]\),显然不好转换,先把斯特林数的递推公式放在下面

第一类斯特林数:将\(n\)个元素分成\(k\)个圆排列的方案数

\(S1(n,k)=S1(n-1,k-1)+(n-1)*S1(n-1,k)\)

第二类斯特林数:将\(n\)个元素装入\(k\)个一模一样的盒子(不可为空)里

\(S2(n,k)=S2(n-1,k-1)+k*S2(n-1,k)\)

和第二类斯特林数长得更像233

那怎样把\(k\)变成\(n-k\)呢,很简单

\(S2(n,n-k)=S2(n-1,n-k-1)+S2(n-1,n-k)*(n-k)\)

再回到\(dp\),\(dp[n-1][k]=dp[n-2][k]+dp[n-2][k-1]*(n-k)\)

如果我令\(f[n(A)][n-k(B)]=dp[n-1(C)][k(D)],A=C+1=B+D\),但是乘的系数不变

那么\(f[n][n-k]=f[n-1][n-k-1]+f[n-1][n-k]*(n-k)\),这就是\(S2(n,n-k)\)

然后预处理快速幂就可以做到\(O(n+k)\)了(前面的\(f\)只是下标平移或者翻转,本身与\(dp\)是等价的)


代码

#include <cstdio>
#include <cctype>
#define rr register
using namespace std;
const int mod=998244353,N=1000011; bool v[N];
int prime[N],mi[N],inv[N],n,k,ans,Cnt;
inline signed mo(int x,int y){return x+y>=mod?x+y-mod:x+y;}
inline signed ksm(int x,int y){
rr int ans=1;
for (;y;y>>=1,x=1ll*x*x%mod)
if (y&1) ans=1ll*ans*x%mod;
return ans;
}
inline signed Pro(int n,int m){
inv[0]=inv[1]=mi[1]=1;
for (rr int i=2;i<=n;++i){
inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;
if (!v[i]) prime[++Cnt]=i,mi[i]=ksm(i,m);
for (rr int j=1;j<=Cnt&&prime[j]<=n/i;++j){
v[i*prime[j]]=1,
mi[i*prime[j]]=1ll*mi[i]*mi[prime[j]]%mod;
if (i%prime[j]==0) break;
}
}
for (rr int i=2;i<=n;++i) inv[i]=1ll*inv[i-1]*inv[i]%mod;
}
signed main(){
scanf("%d%d",&n,&k),k=n-k,Pro(k,n);
for (rr int i=0;i<k;++i){
rr int t=1ll*inv[i]*inv[k-i]%mod*mi[k-i]%mod;
t=(i&1)?mod-t:t,ans=mo(ans,t);
}
return !printf("%d",ans);
}

E 领域极限

分析

又双叒叕(yòushuāngruòzhuó)人类智慧题

先讲怎么求中间那一坨,排序然后维护前缀后缀和就可以了

但是竟然可以三分重心(\(n\)个数都向这个重心逼近),

还能知道这是一个下凸函数,我也真是佩服julao们

(虽然我不会证明,但是以后碰到类似的也可以这样想)


代码

#include <cstdio>
#include <cctype>
#include <algorithm>
#define rr register
using namespace std;
typedef long long lll;
const int N=100011;
int a[N],L[N],R[N],n,l,r;
lll ans,suf[N],pre[N];
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline signed min(int a,int b){return a<b?a:b;}
inline signed max(int a,int b){return a>b?a:b;}
inline lll calc(int now){
rr lll ans=0;
for (rr int i=1;i<=n;++i)
a[i]=max(L[i],min(now,R[i]));
sort(a+1,a+1+n);
for (rr int i=1;i<=n;++i) pre[i]=pre[i-1]+a[i];
for (rr int i=n;i>=1;--i) suf[i]=suf[i+1]+a[i];
for (rr int i=1;i<=n;++i)
ans+=1ll*a[i]*((i<<1)-n-1)-pre[i-1]+suf[i+1];
return ans;
}
signed main(){
n=iut(),l=1e9,ans=1e18;
for (rr int i=1;i<=n;++i)
l=min(l,L[i]=iut()),r=max(r,R[i]=iut());
while (l+2<r){
rr int k=(r-l+1)/3,lmid=l+k,rmid=r-k;
if (calc(lmid)<calc(rmid)) r=rmid; else l=lmid;
}
for (rr int i=l;i<=r;++i){
rr lll t=calc(i);
ans=ans<t?ans:t;
}
return !printf("%lld",ans);
}

F 明天后的幻想乡

题目

有一个数列\(\{1,2,3,...,n\}\),

求问它有多少个子序列是等比数列。

单独写啦,bye-bye,去掉长度为1或2的情况

「Cnoi2020」Cirno's Easy Round的更多相关文章

  1. Solution Set -「LOCAL」冲刺省选 Round XXIV

    \(\mathscr{Summary}\)   名副其实的 trash round,希望以后没有了.   A 题算好,确实一个比较关键的简化状态的点没想到,所以只拿了暴力(不考虑 \(\mathcal ...

  2. 「BZOJ2391」Cirno的忧郁

    传送门 设p[0] = (-10001,-10001) 把所有点按p[0]极角排序, s[i][j]表示三角形p[0]p[i]p[j]内的总价值,若i到j极角增大则s为正,否则s为负. 那么答案就是按 ...

  3. LuoguP7852 「EZEC-9」Yet Another Easy Problem 题解

    Content 给定 \(n,m\),你需要输出一个长度为 \(n\) 的排列,满足该排列进行不超过 \(m\) 次交换操作可以得到的最小的字典序最大. 数据范围:\(T\) 组数据,\(1\leqs ...

  4. Solution Set -「LOCAL」冲刺省选 Round XXV

    \(\mathscr{Summary}\)   读错题了读错题了 B 题差点没做出来真的太吓人了.   逆序开题,C 题直接冲一发暴力最大权闭合子图居然过了.A 题确实一下子没想到用"可能的 ...

  5. Solution Set -「LOCAL」冲刺省选 Round XXIII

    \(\mathscr{Summary}\)   有一说一,虽然我炸了,但这场锻炼心态的效果真的好.部分分聊胜于无,区分度一题制胜,可谓针对性强的好题.   A 题,相对性签到题.这个建图确实巧妙,多见 ...

  6. Solution Set -「LOCAL」冲刺省选 Round XXII

    \(\mathscr{Summary}\)   和出题人很有缘分但是没有珍惜.jpg   A 题有一个显然的二维偏序斜率式,以及显然的 CDQ 套李超树 \(\mathcal O(n\log^2n)\ ...

  7. Solution Set -「LOCAL」冲刺省选 Round XXI

    \(\mathscr{Summary}\)   省选几个小时啊,怎么模拟赛只打三个小时啊./kk   时间安排较为合理,没有出现严重的因思考时间过少引起的丢分.   A 题比较可惜,二分 + 点分治大 ...

  8. 「ASCII 流程图」工具——Graph Easy

    https://juejin.im/post/5a09c43451882535c56c6bbf 「ASCII 流程图」工具——Graph Easy // 1. brew install graphvi ...

  9. 洛谷比赛 「EZEC」 Round 4

    洛谷比赛 「EZEC」 Round 4 T1 zrmpaul Loves Array 题目描述 小 Z 有一个下标从 \(1\) 开始并且长度为 \(n\) 的序列,初始时下标为 \(i\) 位置的数 ...

  10. 【题解】「P6832」[Cnoi2020]子弦

    [题解]「P6832」[Cnoi2020]子弦第一次写月赛题解( 首先第一眼看到这题,怎么感觉要用 \(\texttt{SAM}\) 什么高科技的?结果一仔细读题,简单模拟即可. 我们不难想出,出现最 ...

随机推荐

  1. 新零售SaaS架构:订单履约系统的应用架构梳理

    订单履约系统的核心能力 通过分析订单履约的全流程和各个业务活动,我们可以梳理出订单履约的核心业务链路,基于业务链路,我们抽象出订单履约系统的三大系统能力,分别为履约服务表达.履约调度.物流配送. 履约 ...

  2. 文件IO操作开发笔记(二):使用Cpp的ofstream对磁盘文件存储进行性能测试以及测试工具

    前言   在做到个别项目对日志要求较高,要求并行写入的数据较多,尽管写入数据的线程放在子线程,仍然会造成界面程序的假死(实际上Qt还是在跑,只是磁盘消耗超过瓶颈,造成假死(注意:控制台还能看到打印输出 ...

  3. unrar命令

    解压提取RAR压缩文件 语法格式:unrar 参数 压缩包 常用参数 e 将文件解压缩到当前目录 o - 不要覆盖现有文件 l 显示文件列表 p 设置压缩包密码 p 将文件显示到标准输出 r 递归处理 ...

  4. 高效的PDF文字提取技术

    无论是行政法规.学术论文还是企业合同,PDF文档为我们提供了一种便捷.稳定的信息传递方式.然而,从PDF文件中提取文本信息对于数据分析.内容编辑等后续处理来说至关重要. PDF文本提取技术是一种可以从 ...

  5. js之以面向对象的形式书写贪吃蛇

    此代码存在一定的小bug,当蛇出边界之后存在一定的小问题 分析贪吃蛇功能需求: 1.食物 (1)每次生成一个,位置随意但不可超出规定范围 (2)每次蛇吃到食物之后,前一个食物消失同时新的食物又生成 ( ...

  6. RocketMQ(3) 根据消息key查询功能的实现: indexFile

    三: indexFile 除了通过通常的指定Topic进行消息消费外,RocketMQ还提供了根据key进行消息查询的功能. 该查询是通过store目录中的index子目录中的indexFile进行索 ...

  7. centos下配置修改hosts文件以及生效命令详解

    linux服务器hosts文件配置 hosts文件是Linux系统中一个负责IP地址与域名快速解析的文件,以ASCII格式保存在"/etc"目录下,文件名为"hosts& ...

  8. [学习笔记].Net5项目打包到Linux系统服务时遇到的坑

    ​如果按照官方文档的步骤手动安装.Net5 会有一个坑: 在 Linux 上手动安装 .NET - .NET | Microsoft Docs 在使用systemd打包.Net5服务的时候,无法运行, ...

  9. vue-helper 组件 跳转 | Vue Jump to Tag 好用,需自己设定快捷键 | Path Intellisense

    vue-helper 组件 跳转 组件名称 除首字母大写,其他不能有大写字母,否则不能跳转 比如 mycomponent 这个名字可以 Mycomponent 这个名字可以 myComponent 这 ...

  10. C#中的MySqlHelper工具类及使用方法

    工具类 工具类转自C# MysqlHelper C#连接mysql数据库类库全,代码如下: using MySql.Data.MySqlClient; using System; using Syst ...