牛客编程语言练习赛第十场全题解
出生日期输入输出题目描述输入一个人的出生日期(包括年月日),将该生日中的年、月、日分别输出。输入描述:输入只有一行,出生日期,包括年月日,年月日之间的数字没有分隔符。输出描述:三行,第一行为出生年份,第二行为出生月份,第三行为出生日期。输出时如果月份或天数为1位数,需要在1位数前面补0。示例1输入20130225输出year=2013month=02date=25备注:通过scanf函数的%m格式控制可以指定输入域宽,输入数据域宽(列数),按此宽度截取所需数据;通过printf
C++离散化总结【附模板&例题&代码】
/*离散化的特点:数据的值域比较大,个数比较少【一般l和 r较小的话,比如<=10^5,用前缀和】把值域里的数映射到连续的自然数序列里整个的值域跨度很大,但是值比价稀疏这个映射其实就是把数组的值映射到对应的下标可能存在的问题(我们用一个数组来存储值域里的那些数);a[]中可能有重复的元素,需要去重如何做到快速映射(也就是如何快速算出x离散化后的值,即x对应的下标)【这部分的算法:二分】离散化:vector alls; //***** 存储所有待离散化的值sort( all
Codeforces Round #660 (Div. 2)【A—D思路及题解】
A. Captain Flint and Crew Recruitmenttime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputDespite his bad reputation, Captain Flint is a friendly person (at least, friendly to animals). Now Captain Flint
UPC 2020年夏混合个人训练第七十五场
// A.#include <bits/stdc++.h>#define MAXNUM 101#define MAX(a,b) a>b?a:b int m; //建筑的种类数 int n; //土地的面积 int k; //使用的金钱数 int q[MAXNUM]; //建筑i的占地面积 int p[MAXNUM]; //建筑i的价格int v[MAXNUM]; //建筑i的魅力值 int f[MAXNUM][MAXNUM]; //f表示前
做题 (problem) 题解
#include <bits/stdc++.h>#define ll long long using namespace std;int n,m,a[1010],sum,k;int main(){ cin>>n>>m; for(int i=1; i<=n; i++) cin>>a[i]; for(int i=1; i<=n; i++) { k=i; if(a[i]<m) sum++; else break
区间合并模板【彩色图示版&附例题+AC代码(全注释)】
与区间有关的问题有很多,大部分都是用贪心的策略去解决,不是按照左端点排序,就是按照右端点排序,或者按照左右端点双关键字排序。先讲一下按照左端点进行排序的,其他的后续跟新。区间合并的应用场景:给出很多个区间,把有交集的区间合并为一个【特殊规定:端点处相交,也算有交集】。这类题目往往让我们输出最终的区间数目或者区间长度的最值,又或者是将所有区间合并的最小花费。要求我们快速实现把有交集的区间合并为一个区间。规定左端点为st,右端点为ed。按照左端点排序,进行区间合并时会遇到下面4种情况,还会遇到特殊的边界处
求斐波那契前n项平方和 ——矩阵快速幂模板(几何&构造证明题【附图】)
根据图示,我们可以知道:后面的大正方形的边长总是等于前面的小正方形组成的矩形的长;前面几个斐波那契数的平方之和(也就是前面几个小正方形的面积之和)在数值上等于最后出现的一个和下一个紧接着未出现的斐波那契数的乘积(也就是已经出现的小正方形组成的矩形的面积等于其中最大的一个小正方形的边长乘以下一个紧接着未出现的正方形的边长)。对应的公式化简后如下:#include <bits/stdc++.h>#define ll long long#define MOD 1000000007usin..
2020年校内ACM排位赛 NO.1场 题解&反思
J总设置的中午12点到傍晚17点的比赛时间,属实让一个每天要睡午觉的菜菜懵逼+难熬啊。途中差点睡着,小错误不断,题目难度也判断失误(预估高了题目难度QAQ,某些题目怎么着也得来点dp、快速幂或者卡数据啥的东东啊)。好了,废话太多了,还是自己定位不够准确导致罚时飙升,不太想继续切题了,突突突…话说这是手速场(大型茶话会)吧…Problem A:numberDescription300iq loves numbers who are multiple of 300.One day he got a .
C++求平面上不重合的n个点最多构成多少条两两互不平行(包括重合)的直线
对应题目UPC NO.78场 问题 E: 阅兵队形 plane题目描述70 周年阅兵的时候,飞机在空中排练着队形,Yyx 很好奇,他想知道这么训练有素的队形到底是如何造就的呢?他记录下了飞行路径上的各个端点。他发现:把整个天空看做一个平面直角坐标系,飞行路径是所有过任意两个端点的直线。如果这些飞机可能会撞在一起,或者说只要这些直线有交点,就可能发生事故。在所有直线中应该最少删除多少条直线使得剩下的直线两两都不相互平行(重合也是平行)。求出最多可以构成多少条两两互不平行的直线。输入第一行,整
UPC 2020秋组队真题训练赛第八场【A&B&C&D&G】
问题 A:Alphabet Animals题目描述You are playing a game in which a group of players take turns saying animal names. The animal name you say when it is your turn must start with the same letter as the previously said animal ends with and it must not have been sai
动态规划之01背包【从暴力到优化】
动态规划 ——DP 的介绍动态规划 (DP) 是一种算法技术,它将大问题分解为更简单的子问题,对整体问题的最优解决方案取决于子问题的最优解决方案。有的问题有 2个特征:重叠子问题、最优子结构。用 DP可以高效率地处理具有这 2个特征的问题。处理 DP的大问题和小问题,有两种实现方式 ——自顶向下与记忆化递归 / 自下而上与制表递推。以斐波那契为例,两种实现方式的代码分别如下:// 自顶向下与记忆化递归int memoize[maxn]; //保存结果int fib (int n){
蓝桥历届真题——小数第n位 (循环小数的循环节)
试题 历届试题 小数第n位 循环小数的循环节时间限制:1.0s 内存限制:256.0MB问题描述 我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数。 如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式。 本题的任务是:在上面的约定下,求整数除法小数点后的第n位开始的3位数。 输入格式 一行三个整数:a b n,用空格分开。a是被除数,b是除数,n是所求的小数后位置(0<a,b,n<1e9)输出格式 一行3位数字,表示:a除以b,小数后第
周排行