zyc专题

SSL-ZYC 反射

题目大意: 在一个长方形的区域里,每个位置都有一面镜子,请问从长方形外任意一点照射,光最多可以被反射几次? 思路: 这道题个人认为是一道比较难的暴力模拟,我们用s[i][j]来表示第i行j列的镜子的放置情况,f表示镜子反射的方向,以上,下,左,右的顺序来尝试从每个位置开始照射,最终输出正确结果。 这道题只需多注意些细节就行了。 代码: #include <cstdio>#in

SSL-ZYC 家族

题目大意: 已知连在一起的小写字母为一个家族,求一块大陆上有多少家族? 思路: 这道题由于数据小,所以可以用DFS也可以用BFS。 这道题和 找石油 细胞问题 很像,而那两题我都用了BFS,所以这道题我用的是DFS。 先将这块大陆读入在数组a里面,然后枚举家族所在位置,找到后DFS清零,计数。 详见代码。 代码: #include <cstdio>#include <io

SSL-ZYC 游戏

题目大意: 有一堆黄金,King和MaoLaoDa轮流拿走其中的一些,每次拿走的只能是2^n(n为正整数)个黄金,若MaoLaoDa先拿,他有必胜的方法吗?(两人都用最优方案) 思路: 这道题一开始真的是没思路。。。。。。 于是就开始打标。。。 黄金总数 胜者 第一次最少拿的黄金数 1 MaoLaoDa 1 2 MaoLaoDa 2 3 King —— 4 MaoLaoDa

SSL-ZYC 手机

题目大意: 一般的手机的键盘是这样的: 要按出英文字母就必须要按数字键多下。例如要按出 x 就得按 9 两下,第一下会出 w,而第二下会把 w 变成 x。 0 键按一下会出一个空格。 请问读取若干句只包含英文小写字母和空格的句子,至少要在手机上按多少下键盘? 思路: 这道题是一道很简单的暴力模拟题目。我们可以调用map库,定义一个下标为字符的数组a,然后使用c=getchar()

SSL-ZYC 作业

题目大意: 假期里,光光一共有的时间是 k 小时。共有n份作业,第 i 份作业需要的时间是 ti 小时。但是光光有可能不能完成老师的作业。当可能不能完成老师的作业时,光光就会被老师批评。 不同的作业对于光光来说,批评的力度是不同的。第 i 件作业如果没完成,就要受到 pi 个单位的批评。光光想要在长假前就知道他至少会受到多少个单位的批评? 思路: 这道题是一道01背包的问题。我们可以把

SSL-ZYC 堆箱子

题目大意: 小Z一堆箱子,每个箱子都有各自的长、宽、高,要求放在下面的箱子的长和宽都分别大于它上面的箱子的长和宽。现在他想知道他究竟能堆出多高的塔。 又由于箱子是长方体的,因此你可以把它随意转动,也就是说,它的长、宽、高是可以随意互换的。每种箱子的数量都可认为是无限个。请问最高能搭多高的塔? 思路: 一开始认为这是一道DFS的题目,因为实在没想到其他做法。但是后来发现会超时,所以最后用了

SSL-ZYC 逃离洞穴

题目大意: 一个地方有n个洞穴,编号为1到n。它们之间,有的有双向的小路相连,有的却没有,不过所有洞穴都通过小路连在了一起,没有任何两个洞穴不能相互到达。现在要求所有人都到达洞穴出口处,有两个洞穴是出口,分别编号1和n,每个人都选择最短的路线,从某一个出口离开。所有的小路都是有长度的,而所有人的速度都认为是1。 现在请问,在给定的T时间内,最多有多少人可以离开。另一个问题,最慢的人离开需要多少

SSL-ZYC Hanoi双塔问题

题目大意: 给定A,B,C三根足够长的细柱,在A柱上放有2n个中间有空的圆盘,共有n个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的(下图为n=3的情形)。现要将 这些国盘移到C柱上,在移动过程中可放在B柱上暂存。要求: (1)每次只能移动一个圆盘; (2) A、B、C三根细柱上的圆盘都要保持上小下大的顺序; 任务:设An为2n个圆盘完成上述任务所需的最少移动次数,

SSL-ZYC 1615 Frogger

题目大意: 有n个石头,给出每个石头的坐标位置,请你求出第一个石头到第二个石头的一条路径满足这条路径中距离最远的相连的两个石头的距离最近。 注意:每个测试点有多组数据。 思路: 这道题的方法有很多,我用的方法是最小生成树,每组数据都进行一次寻找,并输出。 这道题是一道考细节的题,程序代码虽然并不是很长的那种,但是打出来非常的乱,有许多值得注意的细节,每一个都不能错。 另外,求两点之

SSL-ZYC 1616 1762 工厂的烦恼

题目大意:  某工厂发现厂里的机器在生产产品时要消耗大量的原材料,也就是说,有大量的原材料变成了废物。因此厂里想找出消耗原材料最大的一条生产线路进行改造,以降低成本。厂里的生产线路是一个有向无环网络,有N台机器分别代表网络中的N个结点。弧< I,j >(i < j)表示原材料从机器i传输到机器j的损耗数量。 比如: 这个流水线中,耗材最大的是6->3->4->5,一共耗材4+1+6=11

SSL-ZYC 2413 排名

题目大意: 思路: 注意!应先输出数学排名,再输出信息学排名! 这道题是一道很明显的模拟嘛。 先以数学成绩排一次序,再以信息学成绩排序。 代码: #include <cstdio>#include <iostream>#include <algorithm>using namespace std;int n,c[101],m[101],e[101],s[101],ma

SSL-ZYC 2646 线段树练习题三

题目大意: 给定一条长度为m的线段,有n个操作,每个操作有3个数字x,y,z表示把区间[x,y]染成颜色z。规定:线段的颜色可以相同。连续的相同颜色被视作一段。问x轴被分成多少段。 思路: 线段树 这道题与 线段树练习二 极其相似,唯一的区别在于count函数需要判断两根相交的线是否为同一个颜色。 代码: #include <cstdio>using namespace st

SSL-ZYC 2645 线段树练习题二

题目大意: 从左往右,从前往后给出n条颜色不同的线段,求最后能看见的线段数量。 思路: 线段树 tree[x]的用处与 线段树练习一 的用处基本相同,但是tree[x].cover表示的是tree[x].l与tree[x].r之间的线段颜色(没有线段或有多种颜色就为0) 代码的区别就在于插入,建树和计算基本没变化。 代码: #include <cstdio>#include

SSL-ZYC 2644 线段树练习题一

题目大意: 以从左往右,从后往前的顺序给出一些线段。最后从前面可以看见多少条线段? 思路: 模拟?100%超时 离散?100%爆内存 所以,这道题的最优解是—— 我也不知道 ———下面进入正题——— 正解:线段树 一道模板题吧。 对于tree[x]: tree[x].l为它的左端点 tree[x].r为它的右端点 tree[x].cover表示它是否有线段 tree

SSL-ZYC 洛谷P1496 火烧赤壁

题目大意: 给出n个数,从a到b的船只被烧毁,求出所有被烧毁的船只数量。 思路: 离散化 很明显是一道离散化的题,基本可以算是模板题了。 代码: #include <iostream>#include <cstdio>#include <algorithm>using namespace std;int x[20001],y[20001],a[50001],n,m,sum

SSL-ZYC 2405 巧克力

题目大意: 思路: 一个很像是离散的大模拟 对于任意一块巧克力: 我们为了答案最优,有4种方法把它框柱: 然后我们就可以看看被框柱的部分能框柱几个巧克力,并记录最优答案。 注意:框子可以改变方向!(就是这个坑了我的AK啊~~~) 代码: #include <cstdio>#include <iostream>using namespace std

SSL-ZYC 2404 上学

题目大意: 思路: n,m<=50!!! 看到这个数据还不开心吗?秒选DFS啦! 但是有一点必须注意: 这道题强烈建议记录边而不是记录点,这道题有重边,但是离开时间,行驶时间和付钱可能不一样,如果记录点,很可能会冲掉一些边。 代码: #include <cstdio>#include <iostream>using namespace std;struct N //

SSL-ZYC 2403 蜡烛

题目大意: 思路: 为了用更多个夜晚,我们每次使用时要用当前最高的蜡烛,这样可以保证答案最优。 那么思路来了: 1.读入,储存 2.while循环,每次循环代表第i个夜晚 3.从大到小排序 4.模拟 其实就是一个简单的模拟题。 代码: #include <iostream>#include <cstdio>#include <algorithm>using n

SSL-ZYC 2391 数列

题目大意: 求1至n中,有几个至少符合下列条件之一的数字? 1.(i-a)%b==0 2.i==c*d^x 思路: 1.暴力,然而TLE+RE+WA 2.暴力+公式,然而AC 如果使用方法一,那么肯定很好理解,只需要两个普通的枚举或同就可以了。 如果使用方法二,那么: (1)等差数列用公式直接推 (2)等比数列模拟(反正项很少) 代码: 方法一: #include

SSL-ZYC 洛谷 P1433 吃奶酪

题目大意: 房间里放着n块奶酪。一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处。 思路: 明显的DFS! 这道题的思路是十分清晰的: 1.读入,顺便用勾股定理求两点之间的距离。 2.DFS,从(0,0)开始,搜索每一个点,将最短答案记录在minn里。 EASY! 代码: #include <cstdio>#include <iostream>

【zyc的从零开始】面向对象编程

面向对象语言的基本特征 1、封装 1)语法:使用private关键字,修饰 字段 和 方法 。只能在当前类中使用。 2)意义 :安全、对类的使用成本降低了。 2、继承 1)什么是继承:就是将共性进行抽取,使用关键字extends来实现继承。 设计一个类表示动物 // Animal.java public class Animal { public String name; public

ZYC-java-day01

环境搭建 第一个Java程序 package com.example.day01;// 类名public class Demo1 {// main 方法是程序的入口public static void main(String[] args) {System.out.println("hello");}} IDEA 快捷键 批量选中后注释 command + / 复制当前行 comma

SSL-ZYC 1616 1762 工厂的烦恼

题目大意:  某工厂发现厂里的机器在生产产品时要消耗大量的原材料,也就是说,有大量的原材料变成了废物。因此厂里想找出消耗原材料最大的一条生产线路进行改造,以降低成本。厂里的生产线路是一个有向无环网络,有N台机器分别代表网络中的N个结点。弧< I,j >(i < j)表示原材料从机器i传输到机器j的损耗数量。 比如: 这个流水线中,耗材最大的是6->3->4->5,一共耗材4+1+6=11