OJ记录(11.4.8)

鄙人在h8oj上玩了几天,难题是一道也没有做出来。。。。

 

大概的总结下,一共有14道:

 

1.神题A+B problem(代码最短奖)

 

 

2.

 

[BeiJing2006]狼抓兔子

平面图网络流的最短路优化,开始没有注意双向边,固执的WA了3次。

 

3.

 

[FJOI2007]轮状病毒

f[i]=f[i-1]*2+g[i-1];g[i]=f[i-1]+g[i-1];

(f为i这个点所在的联通块没有和根相连,g反之)。

4.

 

[ZJOI2006]物流运输

dp,一开始竟然想状态压缩去了,惭愧。。。

 

5.

 

[HNOI2008]Cards

直接运用XXXX引理,就可以把本文题转化成为往3个背包中放物体,恰好全部放满的方案数。

还有一个要说的就是DP的时候是可以优化成3维的,状态为F[I,X,Y]表示已经放了i个物品,其中第一个背包放了x的容量,第二个背包放了y的容量,而第三个背包可以直接由这几个状态推过来。

 

 

6.

 

[HNOI2008]神奇的国度

红果果的弦图,先求出完美消除序列,然后在利用倒序的完美消除序列贪心即可。

 

 

7.

 

[HNOI2008]水平可见直线

 

赤裸裸的半平面交。。

 

8.

 

[HNOI2008]越狱

 

 

 

 

 

ans=m^n-m*(m-1)^(n-1).

 

9.

 

[HNOI2008]GT考试

wa了一次,原因是因为转移的时候理解错了,无耻的让我过样例了。

 

 

10.

 

[HNOI2008]明明的烦恼

转至pouy94

 

 

11.

 

[HNOI2008]玩具装箱

比较经典的斜率优化DP,我个人在推导斜率式子的时候喜欢用半平面交,很无奈的有一次实除,不过很好思考。

 

 

 

12.

 

[Jsoi2011]括号序列

看到了翻转,头脑中的算法就只剩下splay了,具体操作如下:

考虑一个区间,贪心一般的消除成对的括号,必然最后剩下的是这样的玩意:‘)))((((’所以我只要维护有多少个这样的左括号和右括号就可以了。

这道题道题到底是卡pascal还是卡我猥琐的单旋splay?在网上下了别人比我快很多的程序在本机跑速度没很大的差别啊。。

速度垫底了,以后也会是。。

 

 

13.

 

[SDOI2011]打地鼠

一开始就想到了O(N^4)的算法,就是枚举锤子的大小贪心的N^2的验证,后来发现因为每次肯定是捶掉锤子面积大小个地鼠,所以吧所有地鼠总数统计,必然为面积大小的倍数,这样最坏也只会有O(Log(s)^2)次验证,然后就让我过了。。。

N^2的验证需要一点小技巧,类似与点事件的东西。

不知到是不是标准算法,不过速度还不错,代码量也很少。

 

 

 

 

14.

 

 [ZJOI2007]最大半连通子图

图论太弱了,做了道关于tarjan的题目,缩点以后求最长链:

 

<think>嗯,用户想找关于oj.icode8.cn这个Java在线题库的使用方法或题目解析。首先,我需要确认这个平台是否存在,或者是否可能有拼写错误。因为用户提到参考引用里有输入输出的问题,可能这个平台和机考相关,比如处理输入输出比较麻烦。 用户提到他们引用的内容是关于输入输出样题,90%的人失败在输入处理上。所以可能这个平台的题目需要特别注意输入输出的处理,这在Java中尤其重要,因为Java的输入方式相对复杂,比如Scanner和BufferedReader的区别。 接下来,我需要假设这个oj.icode8.cn是一个类似在线判题系统OJ)的平台,类似于LeetCode或者牛客网。可能用户需要知道如何在这个平台上使用Java进行编程练习,包括如何正确读取输入,处理数据,以及输出结果。 首先,用户可能需要了解平台的基本使用方法,比如如何注册、如何选择题目、如何提交代码。其次,题目解析方面,可能需要给出一些常见题型的解题思路,尤其是输入输出的处理技巧,比如多行输入、循环读取等。 另外,考虑到Java在OJ中的常见问题,比如Scanner的效率问题,可能推荐使用BufferedReader来提高读取速度,尤其是在处理大数据量的时候。此外,还要注意类的命名,有些OJ要求主类必须为Main,否则会编译错误。 可能需要给出一个具体的例子,比如如何处理多行输入,如何解析字符串,转换成整数数组等。这些是常见的输入处理场景,用户可能在题目中经常遇到。 还要注意输出格式,比如末尾空格或换行符的问题,这些细节可能导致答案错误。需要提醒用户严格按照题目要求的格式输出。 此外,可能用户遇到的题目类型包括算法题、数据结构题等,需要针对不同的题型给出解析方法,比如排序、查找、动态规划等,并结合Java的特性进行实现。 最后,可能需要推荐一些资源,比如该平台的常见问题解答、讨论区,或者相关的Java编程技巧文章,帮助用户更好地使用这个平台。</think>关于Java在线题库oj.icode8.cn的使用方法及题目解析,以下是分步说明: 1. **平台访问与注册** - 访问官网oj.icode8.cn完成注册后,在题库分类中选择"Java专项" - 注意需使用JDK8及以上环境进行编程[^1] 2. **输入输出规范** ```java // 推荐使用BufferedReader提升读取效率 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] params = br.readLine().trim().split(" "); int n = Integer.parseInt(params[0]); // 输出注意末尾换行 System.out.println(result); ``` 3. **典型题目解析示例** **题目:二维数组对角线求和** ```java public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int[][] matrix = new int[n][n]; // 读取矩阵 for(int i=0; i<n; i++){ String[] row = br.readLine().split(" "); for(int j=0; j<n; j++){ matrix[i][j] = Integer.parseInt(row[j]); } } // 计算对角线 int sum = 0; for(int i=0; i<n; i++){ sum += matrix[i][i] + matrix[i][n-1-i]; } System.out.println(sum); } } ``` 4. **常见错误处理** - 数组越界:注意题目输入的索引范围 - 类型转换:使用`Integer.parseInt()`时需捕获`NumberFormatException` - 内存限制:避免使用过大的静态数组 5. **调试技巧** - 本地测试时创建`input.txt`文件模拟输入 - 使用`System.out.println()`中间输出调试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值