csp-s模拟测试41「夜莺与玫瑰·玫瑰花精·影子」

夜莺与玫瑰

题解

联赛$T1$莫比乌斯$\%\%\%$

$dead$  $line$是直线

首先横竖就是$n+m$这比较显然

枚举方向向量

首先我们枚举方向向量时只枚举右下方向,显然贡献$*2$就是所有斜着的直线

$i,j$表示当自己向右$i$个单位长度,向下$j$单位长度

我们相同斜率下只算最短的线贡献,(因为其他长度下方案数都包含在最短里面了)

我们方向向量$i$,$j$的$gcd(i,j)==1$时我们枚举的才是当前斜率最短长度,

然后考虑贡献

考虑容斥,先算出来当前长度下所有线段再减去重合的

$(n-a)*(m-b)$是总方案数,考虑重合部分

假设我们有一个4*4点阵

. . . .

. . . .

. . . .

. . . .

我们算1,1方向向量贡献

\ \ \ .

\ \ \ \

\ \ \ \

. \ \ \

只有

\ \ \ .

\ \ \ \

\ \ \ \

. \ \ \

才有贡献,别的都是算重的

定义前趋为$x-1$ $y-1$,后继$x+1$ $y+1$

观察这些线发现符合条件就是前趋不在点阵而后继在点阵数量

例如$1$,$1$这个点$+$方向向量得到$-1$ $-1$ 和$2$ $2$

因为$-1$ $-1$不在点阵内所以是合法的

,我们把他们都提到与边界相重

看他们相减后是否在边界中即可

重复的部分就是$max((n-2*a),0)*max((m-2*b),0)$

代码

夜莺

原文地址:https://www.cnblogs.com/znsbc-13/p/11494458.html

时间: 2024-08-30 17:18:25

csp-s模拟测试41「夜莺与玫瑰·玫瑰花精·影子」的相关文章

csp-s模拟测试58「Divisors」·「Market」·「Dash Speed」?

A. Divisors 大概平均下来每个数也就几千约数吧....,直接筛 B. Market 可以把时间离线下来, 考试没有想到将询问离线,用数组存算了算只能过200的点,拿了70 事实上背包后直接二分就好... C. Dash Speed 好题,想到以前的一道题影子. 考场用单调队列多QJ了20分,然而没有想到并查集 线段树上分治????? 线段树上的节点表示在该权值在该区间内的边,每个节点开个vector即可 那么考虑区间查询和单点修改, 对于每个叶子节点,我们从上到下所经历的边其实就是可行

csp-s模拟测试94「凉宫春日的犹豫·漫无止境的八月·射手座之日」

凉宫春日的犹豫 题解 第一次秒切题,5分钟切掉 比较$x^y$和$y!$大小 如果$x^y<y!$输出Yes 问题转化为 $\frac{1}{x} *\frac{2}{x}*\frac{3}{x},,,,,*\frac{y}{x}>=1$输出$Yes$ 开双端队列维护,一直保持单调,然后让队首*队尾就行了 代码 #include<bits/stdc++.h> using namespace std; #define ll long long #define A 111111 lon

csp-s模拟测试103「game,time」

time 题解 贪心考虑,考试时想错了,我想的是移动最大值,枚举最大值位置,然后把左面和右面逆序对拼起来, 当然,处理不了有多个最大值情况,于是我就想着打个部分分吧 然而对拍还是挂, 枚举最大值位置是不对的 考虑一种情况a,b,c,d,e,f,g 其中d最大可能出现a移动到d右面更优,b,c留在左面,我只移动最大值的话默认a,b,c都在左面 附赠一组点4 5 2 3 1 6 7 最优决策是6步,方案是2 4 5 6 7 3 1 . 出现了我说的这种情况 考试时打这个题花费时间还是过于多了 正解是

微信在线信息模拟测试工具(基于Senparc.Weixin.MP)

目前为止似乎还没有看到过Web版的普通消息测试工具(除了官方针对高级接口的),现有的一些桌面版的几个测试工具也都是使用XML直接请求,非常不友好,我们来尝试做一个“面向对象”操作的测试工具. 测试工具在线DEMO:http://weixin.senparc.com/SimulateTool Senparc.Weixin.MP是一个开源的微信SDK项目,地址:https://github.com/JeffreySu/WeiXinMPSDK (其中https://github.com/Jeffrey

noip模拟测试11

T1:string 第一眼秒出思路,这不就是排序那道题的加强版吗? 然而歪?解复杂度虽然是对的,但常数过大,竟被卡到70 歪?解:(实际上std写的就是这个,但据说std被卡掉了 OAO) 因为字符集很小,所以我们可以把区间排序改为区间查询和覆盖 即:先查询区间内所有字符的个数,再从左端点开始按照大小关系依次将长度为字符个数的区间修改为该字符. 期望复杂度O ( 26*mlogn ),实际复杂度O ( 26*mlogn*(巨大的常数) ) 所以需要一(feng)定(kuang)的卡常 正?解:

[考试反思]0929csp-s模拟测试55:沦陷

菜得过分. 面对T1的大板子不知所措,然后T2的贪心不小心把排序语句删了... T1这种大模板啊...其实我是觉得我能打出来的,然后先用一个小时码了一个2k. 然后做T2想贪心就出来了.十分钟码完T3暴力之后回T1打对拍瞬间爆炸. 于是又重新打了一个2k,WA0.对拍发现. 然后考试就没几分钟了交暴力走了. 不要打完就跑,记得早点对拍改进思路. T1: 的确是挺裸的线段树.离散化或者权值线段树都可以. 但是考场上两个都打出来都死了. 最后用离散化A的. 1 #include<cstdio> 2

[考试反思]1002csp-s模拟测试56:凌乱

放假回来状态回升??(玩够了-但是稍困) T1打的不完全对,但是过掉了.很快的想到了二分吧喇叭啦.. 然后T2也挺快想出来了但是挂细节没发现,考试快结束的时候才发现出锅了. 改了过来是正解,但是出题人无良卡了线段树强制树状数组,T了一个子任务,卡常到飞起. T3暴力没什么问题. 卡常是一种习惯.要注意题目数据范围观察是否卡常. T1: 所有的决策都是一条一次函数. 分两类,斜率正或斜率非负. 如果第二类的直线里有在T=0时符合要求的,那么答案就是0,所以check(0)一下. 如果非负的直线都在

[考试反思]1003csp-s模拟测试58:沉淀

稳住阵脚. 还可以. 至少想拿到的分都拿到了,最后一题的确因为不会按秩合并和线段树分治而想不出来. 对拍了,暴力都拍了.挺稳的. 但是其实也有波折,险些被卡内存. 如果内存使用不连续或申请的内存全部使用的话,切记计算内存,一点都不能开大. T1: 直接根号筛,拿map也能过. 遍历map直接begin和end啊... 1 #include<cstdio> 2 int Cnt[202]; 3 struct hash_map{ 4 int cnt,fir[10000020],l[6666666],

csp-s模拟测试60

csp-s模拟测试60       2019-10-05 RT. 又颓又垃圾. 状态低迷,题都交不上去. 交了也是爆零,垃圾玩家没有什么可说的,就是垃圾. A. 嘟嘟噜 $mlogn$的毒瘤做法. 贴一个不一样的毒瘤做法. 1 //ans=(ans+m)%i 2 #include <cstdio> 3 #include <cstring> 4 #include <iostream> 5 #include <algorithm> 6 #define re re