OJ
文章平均质量分 67
v_xchen_v
这个作者很懒,什么都没留下…
展开
-
PAT
因为好久没有碰C++了,想找一个最基础的OJ快速过一下C++的语法,听小伙伴的推荐从PAT乙级重新开始捡一下C++。原创 2016-05-06 08:31:30 · 345 阅读 · 0 评论 -
NOI题解(1.1编程基础之输入输出)
测试网站地址:http://noi.openjudge.cn08:字符三角形描述给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。输入输入只有一行, 包含一个字符。输出该字符构成的等腰三角形,底边长5个字符,高3个字符。样例输入*样例输出 * ********#include "i原创 2016-08-25 10:44:54 · 25365 阅读 · 1 评论 -
NOI 1775:采药(C++) 动态规划
典型的01背包,动态规划问题虽然AC了,但是还有有点不明白,为什么要加不选择物体的for循环(初步的想法是,有可能条件不满足调价物体,但是不应该是0,最少应该是【i-1】【j】的值)参考:http://qkxue.net/info/130583/OpenJudge-2-6-1775http://www.hawstein.com/posts/dp-knapsack.html原创 2017-04-06 16:31:31 · 2787 阅读 · 0 评论 -
NOI题解(1.7编程基础之字符串)(待补全)
01:统计数字字符个数#include "iostream"#include "iomanip"using namespace std;int main(){ string str; getline(cin,str); int count=0; for(int i=0;i<str.length();i++) { if(str.at原创 2016-09-07 19:37:11 · 11382 阅读 · 2 评论 -
NOI题解(1.8编程基础之多维数组)(待补全)
01:矩阵交换行#include "iostream"using namespace std;int main(){ int num[5][5]; for(int i=0;i<5;i++) { for(int j=0;j<5;j++) { cin>>num[i][j]; } }原创 2017-05-28 12:26:45 · 3082 阅读 · 0 评论 -
NOI题解(1.5编程基础之循环控制)
01:求平均年龄#include "iostream"#include "math.h"#include "iomanip"using namespace std;int main(){ int count; cin>>count; int num[100]; int sum=0; for(int i=0;i<count;i++)原创 2016-09-06 17:02:35 · 42842 阅读 · 9 评论 -
NOI题解(1.10编程基础之简单排序)
简单排序:原创 2017-08-03 10:53:41 · 6205 阅读 · 0 评论 -
【NOI题解】 3.3数据结构之栈
NOI题目地址( 3.3数据结构之栈 ):http://noi.openjudge.cn/ch0303/ 1696:逆波兰表达式分析:逆波兰表达式计算用一个栈来存储数字,从右向左遍历表达式遇到数字就压栈遇到操作符就弹出栈中的两个数字计算并压栈最后栈中剩余的数字就是我们要的结果 - Tip 这里计算的是前缀表达式,如果计算后缀表达式,将从右向左遍历改为从左向右遍历,修改带有次序的运算符如’原创 2017-12-19 20:15:15 · 1165 阅读 · 0 评论 -
【NOI题解】 3.2数据结构之指针和链表
NOI题目地址(3.2数据结构之指针和链表):http://noi.openjudge.cn/ch0302/ 这部分的题解出于练习指针和链表的目的,我都是自定义的链表结构。实际上C++提供了STL list链表容器,对于链表元素的增删查反转等操作都有封装好的接口,直接使用将会得到非常简洁的代码。1748:约瑟夫问题分析:用循环链表解决约瑟夫环问题 关键在于: - 删除链表结点的操作 -原创 2017-12-21 19:57:19 · 1664 阅读 · 0 评论 -
【NOI题解】 3.1数据结构之结构
NOI题目地址(3.1数据结构之结构):http://noi.openjudge.cn/ch0301/ 较为复杂的用户自定义数据类型的排序与遍历6377:生日相同 2.0解法一: 按照生日日期和名字长短与字母序对班级里所有的同学进行排序,然后遍历输出#include <iostream>#include <vector>#include <set>#include <algorithm>原创 2017-12-22 17:52:39 · 933 阅读 · 0 评论 -
NOI题解(1.2编程基础之变量定义、赋值及转换)
01:整型数据类型存储空间大小#include "iostream"using namespace std;int main(){ int a; short b; cout<<sizeof(a)<<" "<<sizeof(b); return 0;}02:浮点型数据类型存储空间大小#include "iostream"using name原创 2016-08-26 00:05:44 · 8458 阅读 · 0 评论 -
NOI题解(1.3编程基础之算术表达式与顺序执行)
01:A+B问题#include "iostream"using namespace std;int main(){ int a,b; cin>>a>>b; cout<<a+b; return 0;}02:计算(a+b)*c的值#include "iostream"using namespace std;int m原创 2016-08-29 21:44:58 · 12256 阅读 · 1 评论 -
PAT乙级题解
1012 数字分类1022 D进制的A+B原创 2016-05-06 08:33:51 · 1657 阅读 · 0 评论 -
NOI题解(1.12编程基础之函数与过程抽象)(待补全)
01:简单算术表达式求值#include #include #include using namespace std;int main(int argc, char *argv[]){ string str; getline(cin,str); int pos; for(int i=0;i<str.length();i++) {原创 2016-09-01 17:46:31 · 5576 阅读 · 1 评论 -
NOI题解(1.4编程基础之逻辑表达式与条件分支)
01:判断数正负#include "iostream"#include "math.h"#include "iomanip"/**/using namespace std;int main(){ long N; cin>>N; if(N>0) { cout<<"positive"<<endl; }else if(N==0)原创 2016-08-31 21:55:20 · 16356 阅读 · 0 评论 -
NOI 1808:公共子序列(C++) 动态规划
题目:求两个字符串的最长公共子序列长度思路:采用动态规划的方法,用二维数组C[][]来保存子问题(C[i][j]存储子序列长度为i的L1[0...i-1],长度为j的L2[0...j-1]的LCS长度),然后两层循环自底向上不断更新C,直至找到C[L1.size()][L2.size()],即找到我们的解。更新方法: 0原创 2017-03-27 17:33:29 · 543 阅读 · 0 评论 -
赛码 上台阶(C++)
题目地址:http://exercise.acmcoder.com/online/online_judge_ques?ques_id=1668&konwledgeId=136思路1(动态规划):设定人现在在台阶1层,到台阶1层有0种走法,到台阶2层有1种走法,到台阶3层有2种走法,这样我们已经知道底部子问题的解。f(n)=f(n-1)+f(n-2),比如说4层只能由2层(跨两步)或3层原创 2017-03-28 14:31:45 · 3063 阅读 · 0 评论 -
赛码 军训队列(C++)
题目地址:http://exercise.acmcoder.com/online/online_judge_ques?ques_id=1650&konwledgeId=136思路:对数组的遍历没什么可说的,只需要注意vector删除元素时后面的元素会依次前移,因此我们要从后往前按照2、3的倍数删除#include "iostream"#include "vector"usi原创 2017-03-28 15:14:32 · 1365 阅读 · 0 评论 -
NOI 1818:红与黑(C++)
题目地址:http://noi.openjudge.cn/ch0205/1818/题目:求地图中能到达的黑砖总数一开始没有思路,参考了:http://blog.csdn.net/c20190102/article/details/52329390思路:简单搜索使用二维数组保存地图,找到起始位置,从起始位置开始上下左右搜索,直到不满足条件(撞墙或者超出地图),满足条件的位置计数加1,原创 2017-03-28 16:44:29 · 4701 阅读 · 0 评论 -
NOI 44:第n小的质数(C++)
质数,又称素数,定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数验证一个数是否是素数,最常用的方法是:给定一个大于2的数,对这个数求平方根,如果这个数能被从0到平方根的数中任意一个数整除,那么这个数就是不是质数,否则这个数就是质数。原理是:如果一个数不是质数,一定能分解成两个数相乘的形式,这两个数一个>=sqrt(num),一个质数判断:bool is原创 2017-03-28 20:43:11 · 9967 阅读 · 1 评论 -
NOI 7614:最低通行费
题目地址:http://noi.openjudge.cn/ch0206/7614/思路:动态规划,用一个二维数组result[i][j]存储,到达位置i,j所需要的最小代价,从底(result[0][0])向上(result[n-1][n-1])更新数据,基于题目设定,到某位置只能从其左边过来,或者从其上面过来,每次取这两种方案中代价较小的min(result[i-1][j] + m_ma原创 2017-03-29 15:37:02 · 926 阅读 · 1 评论 -
NOI 1797:金银岛(C++)
典型的贪心算法,思路是:计算每个金属的性价比,然后根据性价比进行排序,从高到低尽可能塞入背包,背包满则得到最大值。#include "iostream"#include "iomanip"#include "algorithm"using namespace std;struct metal{ double w; double v; double原创 2017-03-27 09:28:14 · 3868 阅读 · 0 评论 -
NOI 1759:最长上升子序列(C++) 动态规划
题目:输出最长上升的子序列长度思路:用一个数组result[]来存储子问题结果,数组中每个数值result[i]对应子序列[0~i]的最长上升子序列长度。自底向上,从result[0]开始动态更新到result[n-1],result[i]的值应为result[0]~result[j]中满足nums[i]>nums[j](j=0~i-1)条件的最大值+1,维护maxLen即为所求。原创 2017-03-27 14:28:19 · 2743 阅读 · 0 评论 -
【NOI题解】 3.7数据结构之堆
NOI题目地址( 3.7数据结构之堆 ):http://noi.openjudge.cn/ch0307/【NOI 2726:集合问题】分析:将K个数放到N个集合中,使得偏差值之和最小。 算法n个数可能有1~n个集合,假设最优解有k个集合,那么构造一个k个节点的小根堆,小根堆的每个节点代表对应集合中的负荷值,每次取一个数据累加到堆顶,当所有的数据分配完成,由小根堆节点数据计算出的偏差值之和一定是所有原创 2017-12-18 18:08:54 · 544 阅读 · 0 评论