AcWing算法基础课题解目录

第一讲 基础算法

快速排序88

AcWing 785. 快速排序

AcWing 786. 第k个数

归并排序

AcWing 787. 归并排序

AcWing 788. 逆序对的数量

二分

AcWing 789. 数的范围

AcWing 790. 数的三次方根

高精度

AcWing 791. 高精度加法

AcWing 792. 高精度减法

AcWing 793. 高精度乘法

AcWing 794. 高精度除法

前缀和与差分

AcWing 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 @   糖豆爸爸  阅读(226)  评论(1编辑  收藏  举报
抱歉!发生了错误!麻烦反馈至contact@cnblogs.com

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 @   ldMCA  阅读(35)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
点击右上角即可分享
微信分享提示