首页 > TAG信息列表 > ZJNU

ZJNU 2770 - MRAVOJED(前缀和+二分+位运算)

Description 在一张 \(n\times m\) 的灰白图中,要求计算出前 \(k\) 步总共走过了多少灰色格子。 走法见上图右。 定义左上坐标为 \((0,0)\),右下坐标为 \((n-1,m-1)\)。 对于坐标 \((x,y)\) 的格子,如果 \(x\& y=0\),则涂灰色。 Solution 考虑按行枚举或按列枚举,下面将按列进行枚举

ZJNU 1350 - 分子式 (模拟)

ZJNU 1350 - 分子式 题面 思路 模拟题,计算给定的分子式种类即可 数据还行,没有卡人的点和什么不合法的点,虽然写得不舒服但一发过 判断函数分开写,便于调用;然后对于分子式的每一层括号内部可以通过递归来实现处理 最后我们需要处理的只有两种:单个原子式(与数字)和括号内的分子式(与数

ZJNU 2184 - 最长子串 (并查集)

ZJNU 2184 - 最长子串 题面 给出一个长度为\(n\)​​​的数列,\(m\)​​​个询问。 \(1\ x\)​​​​:找到\([l,r]\)​​​使得对于所有的\(l\le i\le r\),\(a[i]\ge x\)且\(r-l+1\)最大 \(2\ x\ y\):令\(a[x]=y\)​​​ \(1\lt n\le 10^5,\ 1\lt m\le 10^4,\ 0\le a[i]\le 10^5\) 保

【解题报告】ZJNU 个人赛一 (2021)

【解题报告】ZJNU 个人赛一 (2021暑假) A题意思路代码 B题意思路代码 CD题意思路代码 E题意思路 FH思路代码 I题意思路代码 K题意思路代码 尽可能把代码中的注释都保留了,虽然有些注释和正确代码的方向没什么关系,但是能保留出做题中的中间想法。 A 题意 给定

ZJNU 数据结构1002 实验二 括号匹配判断算法 栈的运用

Description 假设在表达式中([]())或[([ ][ ])]等为正确的格式,[( ])或([( ))或 (( )])均为不正确的格式。基于栈设计一个判断括号是否正确匹配的算法。 Input 输入数据有多组,每组测试数据一行,一个字符串(长度小于1000),只包含 ‘[‘ ,’]’ ,’(‘ ,‘)’ 。 Output 对于每组测试数据,若括号匹配输出yes,否则

ZJNU 1265 - 幸运的硬币——高级 (矩阵快速幂)

ZJNU 1265 - 幸运的硬币——高级 题面 众所周知,一个硬币有两面,一面朝上,一面朝下。如果两个硬币同时朝上,或者同时朝下,我们说两个硬币的状态是相同的。如果现在有\(n\)个硬币排成一排,显然有\(2^n\)种不同的排法。如果存在超过两个连续硬币的状态相同,我们就说这个硬币序列是幸运的。

ZJNU 2479 - 车辆探测器 (差分数组/树状数组)

浙江师范大学第十八届大学生程序设计竞赛(重现) H - 车辆探测器 ZJNU 2479 - 车辆探测器 题意 \(n\)辆汽车在\(x\)轴负半轴排成一列以每秒\(1\)米的速度匀速向\(x\)正半轴行驶,第\(i\)辆汽车的初始位置为\(a[i]\)。 有\(m\)个车辆探测器,探测范围为\(\pm r[i]\)的探测器被放在\(x\)正

ZJNU 2345 - 小Y的方格纸

明显,总共有n*m格,已经涂了k格 所以剩下n*m-k格 如果n*m-k<=k,即k已经占用了大于等于一半的格子,显然答案为0 否则 剩下的格子中取k+1,k+2...n*m-k格均可 取组合数求解,所以答案为     但因为组合数下标太大 可以处理杨辉三角(推荐) 或者处理因子 或者使用Python或者Java等等 下面列出

ZJNU 2342 - 夏华献要回家

(夏华献在学校也要做一次梦!) 把5的答案手动算出 会发现从学校开始,兔子的数量呈斐波那契数列(第2项开始)增长 假如现在有n盏路灯 那么睡觉的时间可以得到为   但是n有1e18大,明显使用标准数学公式不可行 所以,我们来找答案的规律叭 根据样例 in 4 out 12 in 6 out 48 又因为上面列出了

ZJNU 2226 - B.T.B.F

d为1代表Alice执刀,-1代表Bob执刀记录蛋糕数字为奇数和偶数各自的数量,先看偶数块 如果为偶数的蛋糕为奇数块,则为偶数的蛋糕切完后是Bob持刀,Alice会多吃1,此时要将奇数块蛋糕-1(假设此时有为奇数的蛋糕,如果没有根据题意依然是Alice赢) 如果为奇数的蛋糕为奇数块,两人每次切时对方都会多

ZJNU 2201 - 挖矿谷物语

在dfs过程中加上栈记录当次dfs走过的路径 如果当次dfs到了一个之前的dfs已经经过的点 又因为只对没有访问过的点开始dfs 所以这种情况就说明接下来不可能返回到当次dfs开始的点 将栈内元素取出,恢复vis状态为未访问过,起始点保持访问过状态(说明这个点不可用) 最后找最优解 1 #inclu

ZJNU 2133 - 认亲大会

将辈分差距转为数字 例如 A 是 B son A=B-1 A 是 B grandfather A=B+2然后编号1数字设置为0,建图bfs 最后搜索编号2到100是否存在>0的数即可 1 /* 2 Written By. StelaYuri 3 On 2020/01/15 4 */ 5 #include<bits/stdc++.h> 6 using namespace std; 7 typedef pair<int,in

ZJNU 1542 - 三角形(续)--中高级

从小到大排序后 先固定一遍,另外两边递增查找 即固定 i,j=i+1,k=j+1 然后让k递增到 a[i]+a[j]<=a[k] 时 此时不能凑成一个三角形 答案增加 k-1-j 组 此时不需要重置 k=j+1 因为 j++ 后 a[j] 会变大 那么在 j~k 之间的所有木棍长度均能再次满足这种 ij 组合 此时只需要把前一个状态的

ZJNU 1367 - Party--中高级

寻找从i到X,再从X到i的最短路 可以在正向图中从X开始跑一遍最短路,每个点的距离dis1[i]当作从X回到点i的距离 再将图反向从X再跑一遍,每个点的距离dis2[i]当作从i到点X的距离 最后搜索dis1[i]+dis2[i]值最大的输 1 /* 2 Written By StelaYuri 3 */ 4 #include<bits/stdc++.h> 5

ZJNU 1372 - 破解情书

取模运算在数组内循环解密,否则会MLE 1 /* 2 Written By StelaYuri 3 */ 4 #include<stdio.h> 5 char cm[210],cn[1000010]; 6 int main() 7 { 8 int i,j,s1,s2,n,m,l,k; 9 scanf("%d%d%d%d%s%s",&n,&m,&l,&k,cm,cn); 10 for(i=(n-1+l

ZJNU 1365 - Window--中级

每次都寻找长度为k的区间内的最小值显然很容易超出时间限制 所以可以把窗户看作一个数量固定的队列 每次观察入列与出列的元素对答案贡献如何,以更新答案 1 /* 2 Written By StelaYuri 3 */ 4 #include<stdio.h> 5 int tmp[1000010],max[1000010]; 6 int gmax(int i,int k)

ZJNU 1213 - 取水——高级

某个村庄i可以打一口井取水花费费用Wi,也可以与有水的村庄连接取水 又因为不可能没有一个村庄不打井(即至少有一个村庄打井,其余村庄连向它) 实际上就可以理解为,将水井看作第N+1个村庄,需要有村庄与这个N+1村庄相连,才能保证所有村庄有水 而村庄i连接到村庄N+1的费用,就可以直接理解为打

ZJNU 1160 - 不要62——中级

取模判断,数组模拟 1 /* 2 Written By StelaYuri 3 */ 4 #include<stdio.h> 5 int a[1000010]; 6 int main(){ 7 int n,m,i,s,t; 8 for(i=1;i<1000001;i++){ 9 a[i]=1; 10 t=i; 11 while(t>0){ 12 if(t%10==4||t%1