AcWing算法基础课题解目录

第一讲 基础算法

快速排序88

\(AcWing\) \(785\). 快速排序

\(AcWing\) \(786\). 第\(k\)个数

归并排序

\(AcWing\) \(787\). 归并排序

\(AcWing\) \(788\). 逆序对的数量

二分

\(AcWing\) \(789\). 数的范围

\(AcWing\) \(790\). 数的三次方根

高精度

\(AcWing\) \(791\). 高精度加法

\(AcWing\) \(792\). 高精度减法

\(AcWing\) \(793\). 高精度乘法

\(AcWing\) \(794\). 高精度除法

前缀和与差分

\(AcWin\)g \(795\). 前缀和

\(AcWing\) \(796\). 子矩阵的和

前缀和专题

\(AcWing\) \(797\). 差分

\(AcWing\) \(798\). 差分矩阵

差分专题

双指针算法

\(AcWing\) \(799\). 最长连续不重复子序列

\(AcWing\) \(800\). 数组元素的目标和

\(AcWing\) \(2816\). 判断子序列

位运算

\(AcWing\) \(801\). 二进制中\(1\)的个数

离散化

\(AcWing\) \(802\). 区间和

区间合并

\(AcWing\) \(803\). 区间合并

第二讲 数据结构

单链表

\(AcWing\) \(826\). 单链表

双链表

\(AcWing\) \(827\). 双链表

\(AcWing\) \(828\). 模拟栈

\(AcWing\) \(3302\). 表达式求值

队列

\(AcWing\) \(829\). 模拟队列

单调栈

\(AcWing\) \(830\). 单调栈

单调队列

\(AcWing\) \(154\). 滑动窗口

KMP

\(AcWing\) \(831\). \(KMP\)字符串

Trie

\(AcWing\) \(835\). \(Trie\)字符串统计

\(AcWing\) \(143\). 最大异或对

并查集

\(AcWing\) \(836\). 合并集合

\(AcWing\) \(837\). 连通块中点的数量

\(AcWing\) \(240\). 食物链

\(AcWing\) \(838\). 堆排序

\(AcWing\) \(839\). 模拟堆

哈希表

\(AcWing\) \(840\). 模拟散列表

\(AcWing\) \(841\). 字符串哈希

第三讲 搜索与图论

DFS

\(AcWing\) \(842\). 排列数字

\(AcWing\) \(843\). \(n\)-皇后问题

BFS

\(AcWing\) \(844\). 走迷宫

\(AcWing\) \(845\). 八数码

树与图的深度优先遍历

\(AcWing\) \(846\). 树的重心

树与图的广度优先遍历

\(AcWing\) \(847\). 图中点的层次

拓扑排序

\(AcWing\) \(848\). 有向图的拓扑序列

Dijkstra

\(AcWing\) \(849\). \(Dijkstra\)求最短路\(I\)

\(AcWing\) \(850\). \(Dijkstra\)求最短路\(II\)

bellman-ford

\(AcWing\) \(853\). 有边数限制的最短路

spfa

\(AcWing\) \(851\). \(spfa\)求最短路

\(AcWing\) \(852\). \(spfa\)判断负环

Floyd

\(AcWing\) \(854\). \(Floyd\)求最短路

Prim

\(AcWing\) \(858\). \(Prim\)算法求最小生成树

Kruskal

\(AcWing\) \(859\). \(Kruskal\)算法求最小生成树

染色法判定二分图

\(AcWing\) \(860\). 染色法判定二分图

匈牙利算法[月佬算法]

\(AcWing\) \(861\). 二分图的最大匹配

第四讲 数学知识

质数

\(AcWing\) \(866\). 试除法判定质数

\(AcWing\) \(867\). 分解质因数

\(AcWing\) \(868\). 筛质数

约数

\(AcWing\) \(869\). 试除法求约数

\(AcWing\) \(870\). 约数个数

\(AcWing\) \(871\). 约数之和

\(AcWing\) \(872\). 最大公约数

欧拉函数

\(AcWing\) \(873\). 欧拉函数

\(AcWing\) \(874\). 筛法求欧拉函数

快速幂

\(AcWing\) \(875\). 快速幂

\(AcWing\) \(876\). 快速幂求逆元

扩展欧几里得算法

\(AcWing\) \(877\). 扩展欧几里得算法

\(AcWing\) \(878\). 线性同余方程

中国剩余定理

\(AcWing\) \(204\). 表达整数的奇怪方式

高斯消元

\(AcWing\) \(883\). 高斯消元解线性方程组

\(AcWing\) \(884\). 高斯消元解异或线性方程组

求组合数

\(AcWing\) \(885\). 求组合数 I

\(AcWing\) \(886\). 求组合数 II

\(AcWing\) \(887\). 求组合数 III

\(AcWing\) \(888\). 求组合数 IV

\(AcWing\) \(889\). 满足条件的01序列

容斥原理

\(AcWing\) \(890\). 能被整除的数

博弈论

\(AcWing\) \(891\). \(Nim\) 游戏

\(AcWing\) \(892\). 台阶-\(Nim\)游戏

\(AcWing\) \(893\). 集合-\(Nim\)游戏

\(AcWing\) \(894\). 拆分-\(Nim\)游戏

第五讲 动态规划

背包问题

\(AcWing\) \(2. 01\)背包问题

\(AcWing\) \(3\). 完全背包问题

\(AcWing\) \(4\). 多重背包问题

\(AcWing\) \(5\). 多重背包问题 II

\(AcWing\) \(9\). 分组背包问题

线性DP

\(AcWing\) \(898\). 数字三角形

\(AcWing\) \(895\). 最长上升子序列

\(AcWing\) \(896\). 最长上升子序列 II

\(AcWing\) \(897\). 最长公共子序列

\(AcWing\) \(902\). 最短编辑距离

\(AcWing\) \(899\). 编辑距离

区间DP

\(AcWing\) \(282\). 石子合并

计数类DP

\(AcWing\) \(900\). 整数划分

数位统计DP

\(AcWing\) \(338\). 计数问题

状态压缩DP

\(AcWing\) \(291\). 蒙德里安的梦想

\(AcWing\) \(91\). 最短\(Hamilton\)路径

树形DP

\(AcWing\) \(1049\). 大盗阿福 [没有上司的舞会 引入题]

\(AcWing\) \(285\). 没有上司的舞会

记忆化搜索

\(AcWing\) \(901\). 滑雪

第六讲 贪心

区间问题


\(AcWing\) \(905\). 区间选点
思路:尽可能让选择的点跨更多的区间。

\(AcWing\) \(908\). 最大不相交区间数量
思路:最大不相交区间数量与区间选点是一样的代码,因为如果某些线段有公共的点,那么它们只能取一个,换句话说,就是有距离无交叉的区间个数。


\(AcWing\) \(906\). 区间分组

\(AcWing\) \(907\). 区间覆盖

Huffman树

\(AcWing\) \(148\). 合并果子

排序不等式

\(AcWing\) \(913\). 排队打水

绝对值不等式

\(AcWing\) \(104\). 货仓选址

推公式

\(AcWing\) \(114\) 国王游戏

\(AcWing\) \(125\). 耍杂技的牛

posted @ 2021-10-11 14:44  糖豆爸爸  阅读(226)  评论(1编辑  收藏  举报

hdu2005

第几天?

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 289719    Accepted Submission(s): 99716


 

Problem Description
给定一个日期,输出这个日期是该年的第几天。
 

Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
 

Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
 

Sample Input
 
 
1985/1/20
2006/3/12
 

Sample Output
 
 
20
71
 

Author
lcy
 

Source
 

Recommend
JGShining   |   We have carefully selected several similar problems for you:  2015 2018 2017 2016 2020

解法一:scanf()函数(AC)

#include<iostream>
using namespace std;

int mdays[]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

int main(){
	int y,m,d;
	while(~scanf("%d/%d/%d", &y, &m, &d)){		
		if(y % 4 == 0 && (y % 100 || y % 400 == 0)) mdays[1] = 29;		//润年条件:4和400为y的约数,或 4为y的约数 且 100不为y的约数 
        else mdays[1] = 28;
		
		int ans = 0;
		for(int i = 0; i < m-1; i++){		//累加前m-1个月的天数 
			ans += mdays[i];
		}
		ans += d;						//加上第m个月的天数 
		
		cout<<ans<<'\n';
	}
}

解法二:sscanf()函数 (AC)

#include<iostream>
#include<string>
using namespace std;

int main(){
	string str;
	while(cin>>str){
		int y, m, d;
		sscanf(str.c_str(), "%d/%d/%d", &y, &m, &d);//注意sscanf()的第一个参数为c风格字符串,此时可用c_str()方法,将string类字符串转为cstr
		str.clear();
		
		int ans = d;
		m--;
		while(m != 0){
			switch(m){
				case 1: case 3: case 5: case 7: case  8: case 10: case 12:{
					ans += 31;
					break;
				}
				case 4: case 6: case 9: case 11:{
					ans += 30;
					break;
				}
				case 2:{
					if(y % 4 == 0 && (y % 100 || y % 400 == 0)) ans += 29;
					else ans += 28;
					break;
				}
			}
			m--;
		}
		
		cout<<ans<<'\n';
	}
} 

其他思路:getchar()函数(TLE,会超时)

#include<iostream>
#include<string>
using namespace std;

int main(){
	string str1, str2, str3;
	char c;
	while(c = getchar()){
		while(c != '/'){
			str1.push_back(c);
			c = getchar();
		}
		c = getchar();
		while(c!='/'){
			str2.push_back(c);
			c = getchar();
		}
		c = getchar();
		while(c != '\n'){
			str3.push_back(c);
			c = getchar();
		}
		
		int y, m, d;
		int ans = 0;
		sscanf(str1.c_str(), "%d", &y); sscanf(str2.c_str(), "%d", &m); sscanf(str3.c_str(), "%d", &d);			//注意 & 
		
		ans = d;
		m--;
		while(m != 0){
			switch(m){
				case 1: case 3: case 5: case 7: case  8: case 10: case 12:{
					ans += 31;
					break;
				}
				case 4: case 6: case 9: case 11:{
					ans += 30;
					break;
				}
				case 2:{
					if(y % 4 == 0 && (y % 100 || y % 400 == 0)) ans += 29;
					else ans += 28;
					break;
				}
			}
			m--;
		}
		
		cout<<ans<<'\n';
		
		str1.clear(); str2.clear(); str3.clear();
	}
} 

posted @ 2022-02-20 13:33  ldMCA  阅读(54)  评论(0)    收藏  举报