link \(O(N^2)\) 的做法比较简单,枚举两个小蜥蜴的相遇时间然后就可以把一只蜥蜴的路程划分成很多阶段,然后每个阶段的颜色可求,累计答案即可。 考虑到数据范围可以猜想需要使用 \(O(NK)\) 的算法,结合意义可以猜出这个算法应该是统计每只蜥蜴路程上每种颜色的路程长度然后累加输出,毕
链接 \(A : Villages: Landlines\) 做法一:将有交集的两个区间合并(显然若一个区间被覆盖可只建电塔使另一个区间被覆盖),两两相邻区间的最短距离的和即为最小值。 做法二:按发电站的位置向左右遍历,对于左边,按建筑区间的最右端位置排序,记录目前电力能到达的最左端,贪心更新,对于右边同理
在JavaScript中有五种常用的循环,现在来分别介绍一下五种循环的用法。 1.while 当满足条件时进入循环,进入循环后,当条件不满足时,跳出循环。while语句的一般表达式为:while(表达式){循环体}。 let num = 0;while (num < 5) { num++; console.log(num);}// 1 // 2 // 3 // 4//
链接 \(String\) 我必须立刻对串串使用 \(kmp\) ,并让 \(nxt_i\) 向 \(i\) 连边,于是可得一个森林。对于任意点 \(x\) ,若 \(y\) 是 \(x\) 的祖先或自身,则有 \(S_{1,y} = S_{x-y+1,x}\) ,满足条件 \(1,2\) 。考虑条件 \(3\) ,需满足 \(2y>x\) 且 \(2y\) 与 \(x\) 模 \(k\) 同余,前者可以
链表模拟 + 队列模拟 可以用队列模拟,维护未弹出的数据和顺序。 也可以直接按题目要求维护循环队列,只需要单链表就够了。 队列: #include <bits/stdc++.h> using namespace std; const int N = 60; int T; int n; int ne[N]; int main() { cin >> T; while (T--) { cin >> n;
方法一:设计标志位mark while 里面一直是true所以没猜对一直循环,直到数字猜对了,把mark标志位设置为False 循环跳出。(这个可以一直猜) 方法二:count计数器,可以控制循环的次数,游戏的次数,guess对了则通过break跳出循环。
一、占位符 %s:表示字符串 %d:表示整数 %f:表示浮点型 int(input("请输入年龄:")):表示将字符串类型转换为int类型 注:input输入的任何值都会被认为是字符型 二、运算符 1、算数运算 +、-、*、/、%(取模)、**(幂)、//(取整数) 2、比较运算 3、赋值运算
循环作用:让代码更高效的重复执行。 语法: while 条件: 条件成立重复执行的代码1 条件成立重复执行的代码2 """ while 条件: 条件成立重复执行的代码 ...... """ # 需求:重复打印5次“明天有雨,记得带伞” -- 数据表示循环的次数 --第一次1,最后一次5 i = 0 while i <
模拟退火 模拟退火是一种 著名的 玄学的随机化算法,其建立在物理中退火过程的基础上 其时间复杂度为 \(O(\text{时限})\) ,正确概率为 \(\text{(参数优秀程度+阳寿)}\%\) 通常人们使用造数据+手动二分调参的方式来提高正确率 这种算法是 \(oier\) 在比赛中的不二选择 如 UVA10228 A
思路: 对这种不是直接二分答案的二分不是很熟悉,记录一下。 实现: 1 #include<bits/stdc++.h> 2 using namespace std; 3 int a[100005]; 4 bool check(int x,int n,int q){ 5 6 for(int i=x;i<n;i++){ 7 if(a[i]>q){ 8 if(q){ 9
SP1043 GSS1 要你求一个区间的最大子段和。 那么,显然地,我们可以维护区间最大前缀和和后缀和。 即根据左区间后缀和加上右区间前缀和可以等于最大子段和这个性质。 那么如何维护最大前缀和和最大后缀和呢? 显然一段区间分成两块,最大前缀和有可能是左区间的最大前缀和,也有可能是左
漏桶示例:slowcat.c #include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <signal.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <errno.h> #define READLENTH 10 //设置一次读取长度stat
循环语句 while语句会反复地进行条件判断,只要条件成立,{}内的执行语句就会执行,直到条件不成立,while循环结束。 while(循环条件){执行语句} for循环语句是最常用的循环语句 for(初始化表达式; 循环条件; 操作表达式){ 执行语句} do…while循环语句和while循环语句功能类似 do…whi
引用类型: 除了基本数据类型均为引用数据类型 1.String(JDK 7以后的版本可以使用) JDK中的工具包均为 .class 文件 Java字符串只能用 "" 除了基本数据类型均为引用数据类型 2.Array数组 数组声明 静态数组声明: int [] a1=new int[]{1,2,3,4}; 动态数组声明 int[] a2=new int[5];
https://ac.nowcoder.com/acm/problem/17450 数论分块模板题。 对于每一个数 i ,在 x 内都有 x/i 个数的因数含有它。 则最终要求 \[\sum_{i=1}^n\lfloor \frac{n}{i} \rfloor \] 点击查看代码 #include <bits/stdc++.h> using namespace std; #define int long long signed main
这一周学习了三元运算符,做了两只老虎,三个和尚,输出数据,求和的案例。学习了if,if else,switch,for,while,do while的顺序结构,做了奇偶数,考试奖励,春夏秋冬,输出数据,求和,水仙花的案例。学习到了三种循环的区别,学会了如何进行循环嵌套。了解到了跳转语句。
题单贴贴 A.烽火传递 其实就是一道单调队列优化 \(DP\),挂分是因为弹出队尾的条件 \(f[q[r]]>=f[i]\) 写成了 \(a[q[r]]>=a[i]\) (悲); AC code #include<bits/stdc++.h> using namespace std; inline int read(){ int s=0,f=1; char ch=getchar(); while(!isdigit(ch)){ if(
代码清单4-1--判断奇偶数 int main() { int cont; do { int no; printf("请输入一个整数:"); scanf("%d", &no); if (no % 2) { printf("这是奇数"); } else {
代码 #include <iostream> #include <cstdio> #include <string> using namespace std; int a[100000]; string nxt[100000]; string p1[100000]; string p2[100000]; int main() { string addr1,addr2; int n; string address,naddress; int data; st
瑰丽华尔兹 \(dp\) + 单调队列优化 \(dp[k][i][j]\) 表示在第 \(k\) 次倾斜后 \(x = i\) 且 \(y = j\) 的位置上,能够滑动的最长距离,第一纬可以直接用滚动数组消除 显然每次倾斜都要对所有的状态进行更新,分四个方向进行更新,以向右滑动为例,有状态转移方程: \[dp[i][j] = \max_{k=t-j}
烽火传递(signal.cpp) 【题目描述】 烽火台是重要的军事防御设施,一般建在交通要道或险要处。一旦有军情发 生,则白天用浓烟,晚上用火光传递军情。 在某两个城市之间有n座烽火台,每个烽火台发出信号都有一定的代价。为 了使情报准确传递,在连续m个烽火台中至少要有一个发出信号。 现在
JavaSE第二天学习 循环结构 while循环 while循环判断条件如果条件满足,那么将进入循环题,否则不会执行循环 一般格式: while(布尔表达式){ 循环体;}//instance while (i < 100) { j_num += i; i += 2; } do-while循环 do-while循环无论条件是否满足,都将会先执
1.条件判断语句 if() (掌握) if语句第一种格式: if(关系表达式) { 语句体 } 第二种格式 if(关系表达式) { 语句体1; }else { 语句体2; } 第三种格式 if(关系表达式) { 语句体1; }else if(关系表达式) { 语句体2; }else{ 语句体3; } 语句的执行流程是(以第
JAVA 入门基础第二天! 学习心得: 2022年7月14号,java入门基础的第二天,今天上课的内容还是在牢固基础,相对于昨天,今天的内容略显深度,也是在老师的讲解完毕后又再次进行理解,最后通过视频回放,已经基本掌握,在晚上张老师带领下,和完成的一些习题结果还是不错的,但在晚自习张老师留
学习内容: 今天学习了Java的引用数据类型,定义数组,多维数组,4种循环(for,while,do...while,switch) 1.今天我认为最难的就是这个计算器 利用了switch语句,以及停止循环的continue等 2.同理的还有猜字游戏