![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法竞赛
文章平均质量分 70
正在学C++
考研学生
展开
-
贪心法 习题10道
HDOJ 1009 FatMouse’ Trade思路按照J[i]/F[i]排序。从比值大的开始计算。#include<bits/stdc++.h>using namespace std;struct food{ int j; int f; double rate;}getfood[1001];bool comp(struct food a,struct food b){ return (a.rate) < (b.rate);}int原创 2021-03-28 21:25:31 · 530 阅读 · 0 评论 -
Win10下安装C&C++的IDE
我使用的Win10电脑下已经有Dev-C++以及CodeBlocks以及Vim。常用的是Dev-C++,安装简单,界面简单,编译简单,对于不追求复杂操作的人来说很友好。但是大佬们很多都用CodeBlocks,Vim,VSCode,或者CLion。今天我把这几个都安装一下,简单Hello一下。CLion 是构建项目并运行,对于单个cpp文件的编译并不支持。请看第3点Dev-C++用起来最简单,不论是新建或者编译运行调试,或者安装。原创 2021-03-22 17:35:42 · 2451 阅读 · 4 评论 -
动态规划 LCS & LIS
HDOJ 1159 Common Subsequence动态规划:最长公共子序列( Longest Common Subsequence, LCS )问题。AC代码。使用二维数组。递推公式:dp[i][j]={dp[i−1][j−1]+1Xi=Yi,i>0,j>0max{dp[i][j−1],dp[i−1][j]}Xi≠Yi,i>0,j>0dp[i][j] = \begin{cases}dp[i-1][j-1]+1{\qquad}X_i=Y_i,i>0,j&原创 2021-03-28 21:21:39 · 239 阅读 · 0 评论 -
贪心法
贪心法 C++贪心法通过局部最优争取达到全局最优,虽然并不总是能导致全局最优适用于贪心法问题的特征:1.问题的最优解包含其子问题的最优解;2.问题的最优解可以通过一系列局部最优解来得到。常见问题分类1.活动安排问题HDOJ 2037 今年暑假不AC解题思路:考虑下面三种贪心策略:1.最早开始时间(错误,如果一直不结束,后面的活动无法开始)2.最早结束时间(正确,早结束早开始)(重点要想到这个)3.用时最少(错误)算法步骤如下:1.把所有活动按照结束时间从早到晚排序2.原创 2021-03-16 21:46:15 · 245 阅读 · 0 评论 -
HDOJ 2051-2060
2051 Bitset十进制转二进制#include<bits/stdc++.h>using namespace std;int main(){ int n; while(~scanf("%d",&n)){ stack<int>s; while(n!=0){ s.push(n%2); n = n/2; } while (!s.empty(原创 2021-04-11 23:40:54 · 165 阅读 · 0 评论 -
STL介绍
一、容器1.顺序式容器vector 动态数组list 列表deque 双向队列queue 队列priority_queue 优先队列stack 栈vector函数v.begin()2.关联式容器set 集合multiset 快速查找map 一对一映射multimap 一对多映射...原创 2021-03-20 17:54:00 · 154 阅读 · 0 评论 -
HDOJ 1237 简单计算器
核心部分伪代码:stark 符栈,数栈;c=getchar()while(c!='\n' || !符栈.empty()){ if(c是操作数) 数栈.push();c=getchar(); else if(符栈.empty()) 符栈.push(c);c=getchar(); else switch(precede(符栈.top(),c)){//比较栈运算符和当前运算符的优先级 case '<': 符栈.push(c); c=getchar();break; case '原创 2021-03-18 20:58:49 · 217 阅读 · 0 评论 -
HDOJ 2041-2050
2041 超级楼梯技巧:登上第10级台阶的走法=登上第9级台阶的走法+登上第8级台阶的走法。是斐波那契数列。递归方法:#include<bits/stdc++.h>int time(int n){ if(n==2 || n==1) return 1; return time(n-1)+time(n-2);}int main(){ int n; scanf("%d",&n); while(n--){ int m; scanf("%d",&m);原创 2021-03-17 21:47:37 · 150 阅读 · 0 评论 -
HDOJ 2031-2040
2031 进制转换最恶心我的是int类型转char类型。int类型的1加上48等于char类型的1。原来是int类型的1的十六进制是0x01、十进制是1、八进制是0001,加上48分别变成变成0x31、49、0061。正好就是1的ASCII码。如果结果是字符类型,正好就是字符1。#include<bits/stdc++.h>int main(){ int n,r; char num[34]; while(~scanf("%d %d",&n,&r)){ if原创 2021-03-16 22:20:46 · 101 阅读 · 0 评论 -
HDOJ 2021-2030
2021 发工资咯:)#include<bits/stdc++.h>int main(){ int n; while(~scanf("%d",&n)){ if(n==0) break; int sum=0,individual=0; for(int i=0;i<n;i++){ scanf("%d",&individual); int bai = individual/100; int wushi = (individual-bai*10原创 2021-03-15 14:06:47 · 186 阅读 · 0 评论 -
HDOJ 2011-2020
2011 多项式求和#include<bits/stdc++.h>int main(){ int n; while(~scanf("%d",&n)){ int m; for(int i=0;i<n;i++){ scanf("%d",&m); double addition=0; for(int j=1;j<=m;j++){ addition += pow(-1,j-1)*1/j; } printf("%.2f\n"原创 2021-03-14 18:17:52 · 101 阅读 · 0 评论 -
HDOJ 2000-2010
Output Limit Exceeded可能是while死循环出不来。修改:while(~scanf(可能是输入数据的类型错误。2000 ASCII码排序#include<bits/stdc++.h>int main(){ char ch[3]; while(~scanf("%c%c%c",&ch[0],&ch[1],&ch[2])){ for(int i=0;i<3-1;i++){ //冒泡 for(int j=0;j<3-i-.原创 2021-03-14 14:07:08 · 146 阅读 · 0 评论 -
HDOJ 3233
HDOJ 3233 Download ManagerProblem DescriptionJiaJia准备下载20,000个文件。如果这些文件一起下载那么所有文件都不能正常下载。所以他找了一个下载器。设T为要下载的文件数量,下载器会遵循以下原则:1.最小的文件有最高的优先下载权。所以在刚开始会下载最小的n个文件。如果遇到相同大小的文件,选择文件中剩余量较小的文件进行下载。假设带宽至少有50MB/s,n个文件一定可以同时下载。2.可用带宽平均分配给所有正在下载的文件。当一个文件被下载完毕之后,它占原创 2021-03-13 18:43:28 · 97 阅读 · 0 评论