oj

刷题OJ网站和使用体验

我怕爱的太早我们不能终老 提交于 2020-01-21 00:44:22
老师推荐的刷题OJ网站有如下几个,这几个网站的使用体验如下: (日本)https://atcoder.jp/ 日常比赛较多,且有适合初学者的Beginner的比赛,现在的水平能打出前三题。英文。比赛可以虚拟参加。还能互相hack。同时可以看到排行榜其他选手的代码。没有题解。 (俄罗斯)http://codeforces.com/ 日常比赛较多,分div1、div2和div3三种难度等级。div2的难度比atcoder的beginner大,div3可能差不多。英文。读题比atcoder困难。 (美国)http://ucaso.org/ 英文。比赛没有前面两者多,有月赛。目前还没试过。 (中国)https://www.luogu.com.cn/ 互动性比较好,题多且有题解,可以打卡抽运势。测试点多。 (中国)http://noi.openjudge.cn/ 一开始入门时老师给的网站,里面有各种章节练习题。题目不多,现在用的少了。无题解。 (中国)http://oj.jzxx.net/ 一开始入门时老师给的网站,有市赛、省赛题。 小小球的账号都是:xxqiam,欢迎加好友! 来源: CSDN 作者: 猿妈 链接: https://blog.csdn.net/weixin_42176113/article/details/104050711

OJ题-括号匹配问题(力扣)

空扰寡人 提交于 2020-01-20 18:21:35
题目: 思路:无效的括号匹配:左(右)括号多,左右不匹配 遍历字符串的每个字符:若是左括号:入栈; 若是右括号则判断:栈是空的(不匹配:右括号多了) 出栈:若左右括号不匹配:不匹配 否则继续循环 若栈不为空:不匹配 否则匹配 Stack stack=new Stack(); stack.push(c); //压栈 stack.pop(); //出栈 char c=stack.top(); //获取栈顶元素 class Solution { public boolean isValid ( String s ) { ArrayList < Character > stack = new ArrayList < > ( ) ; //申请栈 for ( int i = 0 ; i < s . length ( ) ; i ++ ) { //遍历所有字符串 char c = s . charAt ( i ) ; //取出来 //判断左、右括号 switch ( c ) { //左括号压栈 case '(' : case '[' : case '{' : stack . add ( c ) ; break ; case ')' : //右括号出栈 case ']' : case '}' : { if ( stack . isEmpty ( ) ) { return false ; }

轻工业大学OJ 1068

China☆狼群 提交于 2020-01-20 13:39:25
本题较简单,关键是了解秦九韶算法,还有一个点是了解gets()函数和getchar()函数的区别。 作用是: gets()用于从标准输入流stdin读入一个整行(以’\n’或EOF)结束,写入ptr指向的字符数组,并返回这个指针;出错或遇到文件结束时则返回NULL。行末的’\n’从流中取出,但不写入数组。gets()不检查被写入的数组大小。 getchar()用于从标准输入流stdin读入一个字符,并返回这个字符。如果读到文件结尾,则返回EOF。注意到EOF不能用char类型表示,所以getchar()函数返回的是一个int型的数。使用时也应该注意这一点。 getchar()函数 得到一个字符 gets()函数 得到一个字符串 题目如下: 代码如下: # include <stdio.h> int main ( ) { int ch , d ; d = 0 ; while ( ch = getchar ( ) , ch != '\n' ) d = d * 2 + ( ch - '0' ) ; printf ( "%d\n" , d ) ; return 0 ; } 来源: CSDN 作者: 赤旗的世界 链接: https://blog.csdn.net/weixin_45588493/article/details/104050440

OJ题-给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null(力扣)

笑着哭i 提交于 2020-01-20 07:23:01
题目: 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null 思路:1.快慢指针,一个一步,一个两步,一个一步一个多步的话会错过 2.如果相遇带环(如果快的遇到null就不带环) /** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public ListNode detectCycle ( ListNode head ) { ListNode fast = head ; ListNode slow = head ; do { if ( fast == null ) { return null ; } fast = fast . next ; slow = slow . next ; } while ( fast != slow ) ; ListNode p = head ; ListNode q = slow ; while ( p != q ) { p = p . next ; q = q . next ; } return p ; } } 来源: CSDN 作者:

力扣OJ 646. 最长数对链

时光毁灭记忆、已成空白 提交于 2020-01-20 01:33:22
题目: 给出 n 个数对。 在每一个数对中,第一个数字总是比第二个数字小。 现在,我们定义一种跟随关系,当且仅当 b < c 时,数对(c, d) 才可以跟在 (a, b) 后面。我们用这种形式来构造一个数对链。 给定一个对数集合,找出能够形成的最长数对链的长度。你不需要用到所有的数对,你可以以任何顺序选择其中的一些数对来构造。 示例 : 输入: [[1,2], [2,3], [3,4]] 输出: 2 解释: 最长的数对链是 [1,2] -> [3,4] 注意: 给出数对的个数在 [1, 1000] 范围内。 分析: 动态规划。 因为数据量只有1000,所以直接写个简单的O(n*n)的时间的算法即可 代码: bool cmp(vector<int> it1,vector<int> it2) { return it1[1]<it2[1]; } class Solution { public: int findLongestChain(vector<vector<int>>& pairs) { int res=0; vector<vector<int>>ans; vector<int>temp; ans.clear(); sort(pairs.begin(),pairs.end(),cmp); for(auto it=pairs.begin();it!=pairs.end();it++

Maven项目pom文件引用com.oracle:ojdbc6报错问题

£可爱£侵袭症+ 提交于 2020-01-19 00:35:59
<!-- oracle --> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.1.0</version> </dependency> 原因: Oracle 的ojdbc.jar是收费的,所以maven的中央仓库中没有这个资源,只能通过配置本地库才能加载到项目中去。 废话不多说,解决方案如下: 1.首先确定你是否有安装oracle,如果有安装的话,找到ojdbc6.jar包 D:\app\Administrator\product\11.2.0\dbhome_1\jdbc\lib\ojdbc6.jar(这是我路径,你们的可能与我不同) 2.将ojdbc6.jar包添加到maven,也就是运行下面的语句,注意:不是在C盘下运行,是在 该目录下执行下面的语句,如果你不知道你的版本号,可以执行select * from v$version;进行查看 mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.1.0 -Dpackaging=jar -Dfile=ojdbc6.jar 安装成功 3.最后找到项目的pom.xml引入如下代码,右击项目名称

杭电Oj刷题(2001)

試著忘記壹切 提交于 2020-01-18 22:08:34
题目描述: 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。 Input 输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。 Output 对于每组输入数据,输出一行,结果保留两位小数。 Sample Input 0 0 0 1 0 1 1 0 Sample Output 1.00 1.41 通过答案: #include<stdio.h> #include<math.h> int main(){ double x1,y1,x2,y2, d, s; while(scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2)!=EOF){ d=(x2-x1)*(x2-x1)+(y1-y2)*(y1-y2); s=sqrt(d); printf("%.2lf\n",s); } return 0; } 来源: CSDN 作者: 程序媛Zhang 链接: https://blog.csdn.net/ZhangShaoYan111/article/details/104033311

OJ练题之YT训练4——1003

倾然丶 夕夏残阳落幕 提交于 2020-01-18 08:02:44
解题思路: 筛选法   筛选法又称筛法,是求不超过自然数N(N>1)的所有 质数 的一种方法。据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274~194年)发明的,又称埃拉托斯特尼筛子。   具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。因为希腊人是把数写在涂腊的板上,每要划去一个数,就在上面记以小点,寻求质数的工作完毕后,这许多小点就像一个筛子,所以就把埃拉托斯特尼的方法叫做“埃拉托斯特尼筛”,简称“筛法”。(另一种解释是当时的数写在纸草上,每要划去一个数,就把这个数挖去,寻求质数的工作完毕后,这许多小洞就像一个筛子。) 代码: #include<stdio.h> #include<iostream> #include<string.h> #define maxe 500000 int a[500010];//用来保存结果(每个数的因数和) int main() { int T,i,j; scanf("%d",&T); memset(a,0,sizeof

Comet OJ - Contest #11 题解&赛后总结

佐手、 提交于 2020-01-17 02:30:23
Solution of Comet OJ - Contest #11 A.eon -Problem designed by Starria- 在模 10 意义下,答案变为最大数的最低位(即原数数位的最小值)和原数最低位的差。 令$S$为输入数字串,则答案为 $(\min_{i=1}^{n}S_i-S_n)%10$ 。 时间复杂度 $O(n)$ 。 B.usiness -Problem designed by Winniechen- 这是一个很显然的动态规划问题。 令$g_{i,j}$表示第$i$天,手里有$j$个节点,最多会返还多少节点。 第$i$天获得节点的过程转移为$g_{i,j+f_j}=\max(g_{i,j+f_j},g_{i-1,j})$,而对于存储节点的过程,只需对每一种存储方式做一个完全背包即可。 C.elebration -Problem designed by Starria- 定义长度不超过 $\frac{n-1}{2}$ ,且不含重复颜色的段为合法的段。记 $pre_x$ 为以 $x-1$ 为右端点的合法段最远的左端点, $nxt_x$ 为以 $x$ 为左端点的合法段最远的右端点。 枚举题面所述三元组中的 $a,b(a<b\le nxt_a+1)$ ,则合法的 $c$ 是 $(b,nxt_b+1]$ 与 $[pre_{a},n]$ 的交集。也就是说,当

Comet OJ - Contest #4 B题 奇偶性

吃可爱长大的小学妹 提交于 2020-01-17 02:25:22
题目链接: https://www.cometoj.com/contest/39/problem/B?problem_id=1577 题意:给你一个数列,求L 到 R 区间内 所有数列 (ƒ n mod 2)的和。 思路:这题是个找规律的题目,首先数列都要对2取模运算,如果这个数是偶数 那么mod 2就是0,奇数就是1,所以这题等价于求 L 到 R 区间内奇数的个数。    1.当 k 为奇数的时候,我们发现数列的值对2取模后全为1,所以 ans = R - L + 1。    2.当 k 为偶数的时候,假设 k = 4,那么: ƒ 0 ƒ 1 ƒ 2 ƒ 3 ƒ 4 ƒ 5 ƒ 6 ƒ 7 ƒ 8 ƒ 9 ƒ 10 ƒ 11 ƒ 12 ƒ 13 ƒ 14 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0    我们知道偶数个奇数相加和等于偶数,奇数个等于奇数,为了方便我们用 1 表示奇数 用 0 表示偶数。    如图 可以发现循环的规律,我们用除法取模的方法可以算出 1 - n 区间内 0 的节点有 ((n - k) / (k + 1) + 1) 个,所以对 k 所在区间进行分类讨论就好了。 AC代码: 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 using namespace std