摘要:
题意: 思路: 感觉这个积分我以前是会积的,但是过了一年多的时间,我发现我忘干净了。真是惭愧! 代码: #include <bits/stdc++.h> using namespace std; typedef long long LL; const int M = 2e6 + 10; const 阅读全文
摘要:
题意:给定原点及n个点,找到一个圆使得尽可能多的点在圆上 题解:三点可以确定一个圆,原点固定,遍历两个点去确定圆心,并用map保存圆心,当再次得到一个相同的圆心时,map++(圆心相同,且有共点必定为同一个圆) #include<iostream> #include<stdio.h> #includ 阅读全文
摘要:
思路: 用类似于DFS序的方法将每个叶子节点编号,求出叶子结点个数ans,链的条数就是ans/2向上取整,考虑到每一条边都要被链覆盖,所以第i个叶子节点需要和第ans/2+i个叶子节点相匹配 #include<iostream> #include<stdio.h> #include<vector> 阅读全文
摘要:
本题所用到的算法:二维单调队列 一维单调队列: 首先不难分析窗口是这样滑动的: 如果我们使用尺取/滑动窗口,时间复杂度为O(n*k),当k很大时容易超时。本题采用单调队列优化所谓单调队列即双端队列,队列中的值是单调的,在每次滑动之后维持队列的单调性对于本题来说,每次都是最左端的数移除队列,最右边的数 阅读全文
摘要:
思路: 用dp,比赛的时候完全没想到dp,太难受了,其实是一道基础dp;注意的地方当pre[s[i]-'a']不为0时,更新dp[i][j]的时候要+mod,这个会卡20%的数据, 代码: #include<iostream> #include<stdio.h> #include<string.h> 阅读全文
摘要:
Number SequenceTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 42846 Accepted Submission(s): 176 阅读全文
摘要:
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 数组A中共有n个元素,初始全为0。你可以对数组进行两种操作:1、将数组中的一个元素加1;2、将数组中所有元素乘2。求将数组A从初始状态变为目标状态B所需要的最少操作数。 输入格式 第一行一个正整数n表示数组中元素的个数 第二行n个正整 阅读全文
摘要:
思路: 当时比赛的时候思路正确,可是就是超时。 代码: #include<iostream> #include<stdio.h> #include<algorithm> using namespace std; typedef long long ll; const int maxn = 1e6+5 阅读全文
摘要:
资源限制 时间限制:2.0s 内存限制:256.0MB 问题描述 研究组正在开发一个计算机程序,这个程序会从一个服务获得历史股票市场价格数据。而这个服务每提供一天的股市数据,都要收取一个固定的费用。这个研究组检查了过去请求的价格数据,发现有着大量的重复,也就浪费了不少的研究经费。所以新的程序需要维护 阅读全文
摘要:
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 北大附中书院有m个同学,他们每次都很民主地决策很多事情。按罗伯特议事规则,需要一个主持人。同学们民主意识强,积极性高,都想做主持人,当然主持人只有一人。为了选出主持人,他们想到了一个办法并认为很民主。方法是: 大家围成一圈,从1到m为 阅读全文