EOJ Monthly 2019.2 题解(B、D、F)
EOJ Monthly 2019.2 题解(B、D、F)
官方题解:https://acm.ecnu.edu.cn/blog/entry/320/
单测试点时限: 2.0 秒
内存限制: 1024 MB
“我把房门上锁,并非为了不让她进去,而是为了防止自己逃到她身边”。
她又被数学难住了。QQ 小方当然是不会对女生说”不”的。
她的数学题是这样的,她得到了一个十进制大整数,这个大整数只包含 1 - 9 这 9 个数字。
现在,要求选出其中连续的一段数字,把其他未被选中的数字全部变成 0,并且使得变换以后的大整数恰好是 m 的倍数。
QQ 小方为了表现自己的能力,所以一口答应给她写出在所有可能的数里面最小的一个。
但是她的问题太多了,她对于这一个大整数,需要对于 q 个不尽相同的 m 分别给出答案。
但是 QQ 小方自己不会。只能来求助你了,你能帮他解答吗?
输入
第一行包含一个大整数,这个整数的位数为 n (1≤n≤106)。
第二行一个整数 q (1≤q≤500) 代表询问次数。
对于每一个询问,包含一行一个整数,表示第 i 次询问的 mi (1≤mi≤5×107)。
保证 ≤5×107 。
输出
对于每一个询问输出两个整数 l,r 表示保留第 l 到第 r 位。保证一定有解。
样例
1249
4
7
3
2
83
3 4
4 4
3 3
2 4
提示
对于样例:
1249 这个数中,可选出的最小的7的倍数是49,最小的3的倍数是9,2的倍数是40,83的倍数是249。
题解:
对于该题,很明显可以想到对于所有的可能的解一定可以写成:ai - aj 的形式,设 ai 是从第 i 位到末位代表的整数。
n是一个大整数,显然ai 不能完全表示具体的数,而若ai - aj ≡0(mod m)可以得出ai % m = aj % m,而如何让这个答案ai - aj 最小呢?就要使得ai 越小,aj 越大就好,就是i越靠近后面,j是从末尾到i的所有a[j]中最靠近i的,显然a[j]要从最后面一位+1开始枚举,因为比如说答案是最后一位,那么i=len(整个长度),j=len+1,所以i要从len开始往前枚举,j再从len+1枚举到i+1。
这就是大概的思路,然后,如果像上述的方法去做,时间就变成了预处理len次,枚举len2 ,时间就变成了o(len+len2),len就是n,n最多为1e6,显然会超时。
其实对于mod m,根据鸽巢原理(抽屉原理),你最多枚举m+1次我就能找到两个相同的a[i]和a[j],然后找a[i]和a[j] 时,我们可以这样,先从a[len+1]开始往前枚举,如果枚举到某个a[i],发现这个数已经出现过了,那么这就是我们想要的答案,这样你在找可以边找处理a[i],就可以边找答案,最多处理m+1次,这样就不会超时。具体看代码
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+;
const int maxm=5e7+;
int n,m,t;
char s[maxn];
int a[maxn];
struct node{
int num;
int have;
}vis[maxm];
int main(){
int len=;
char c;
while(c=getchar()){
if(c>='' && c<='') s[len++]=c;
else{
s[len]='\0';
break;
}
}
len--;
scanf("%d",&t);
while(t--){
scanf("%d",&m);
for(int i=; i<=m; i++){
vis[i].num=;
vis[i].have=;
}
a[len+]=;
vis[a[len+]].num=len+;
vis[a[len+]].have=;
int tmp=;
for(int i=len; i>&&i>=len-m; i--){
a[i]=((s[i]-'')*tmp+a[i+])%m;
tmp=(tmp*)%m;
if(vis[a[i]].have==){
vis[a[i]].num=i;
vis[a[i]].have=;
}
else{
printf("%d %d\n",i,vis[a[i]].num-);
break;
}
}
}
}
单测试点时限: 2.0 秒
内存限制: 256 MB
“他觉得一个人奋斗更轻松自在。跟没有干劲的人在一起厮混,只会徒增压力。”
QQ 小方决定一个人研究研究进制转换。
很快,QQ 小方就遇到问题了。他现在想知道在十进制范围 [l,r] 内有多少整数满足在 k 进制下末尾恰好有 m 个 0。
比如在十进制下的 24 在二进制下是 11000,我们称十进制下的 24 在二进制下末尾恰好有 3 个 0。
QQ 小方一筹莫展,你能帮他解决问题吗?
输入
第一行包含一个整数 T (1≤T≤105) 表示数据组数。
对于每组数据包含一行,四个整数 l,r,k,m ( 1≤l≤r≤1018, 2≤k,m≤100),含义如题目所述。
输出
对于每组数据输出一行,包含一个整数,表示答案。
样例
2
1 10 2 3
1 100 2 3
1
6
提示
例如,在 100 进制下,末位是 90 的数不算作有末尾 0。
#include<bits/stdc++.h>
using namespace std;
typedef long long llx;
llx t,l,r,k,m;
int main(){
cin>>t;
while(t--){
cin>>l>>r>>k>>m;
l--;
llx ll=l,rr=r;
for(llx i=; i<m; i++){
rr=(llx)(rr/k);
ll=(llx)(ll/k);
}
llx rrr=(llx)(rr/k);
llx lll=(llx)(ll/k);
cout<<rr-ll-rrr+lll<<endl;
}
}
单测试点时限: 2.0 秒
内存限制: 256 MB
“放弃不难,但坚持一定很酷。”
QQ 小方已经在体育馆苦练一天射箭了,但他还在坚持。
QQ 小方每天都要在朋友圈晒自己的训练记录。他一共进行了 n 次射箭,成绩分别是 x1,x2,⋯,xn。为了表现自己的发挥十分稳定,QQ 小方决定选出其中的 m 次成绩,使得他们的方差是所有可以选择的方案中最小的。
对于 m 个元素组成的数列 a1,a2,⋯,am,我们知道他们的方差 σ2=(a1−a¯)2+(a2−a¯)2+⋯+(am−a¯)2m ,其中 a¯=a1+a2+⋯+amm。
但是这个问题对 QQ 小方来说太难了,你需要去帮助 QQ 小方。
为了方便,现在你需要输出这个最小的 σ2 乘以 m2 以后的结果。
输入
输入一行包含两个正整数 n (1≤n≤106) 和 m (1≤m≤n)。接下来一行包含 n 个整数 x1,x2,⋯,xn (1≤xi≤103)。
输出
输出一行包含一个整数,表示答案。为了方便,我们需要输出最小的 σ2 乘以 m2 以后的结果。
样例
5 3
1 2 3 4 5
6
题解:
这题就是公式的变形
(=_=)直接看上面的题解吧,注意用long long。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll maxn=1e6+;
ll a[maxn],sum1[maxn],sum2[maxn];
int main(){
ll n,m;
scanf("%lld %lld",&n,&m);
for(ll i=; i<=n; i++) scanf("%lld",&a[i]);
sort(a+,a+n+);
for(ll i=; i<=n; i++){
sum1[i]=sum1[i-]+a[i];
sum2[i]=sum2[i-]+a[i]*a[i];
}
ll minn=LONG_LONG_MAX;
for(ll i=m; i<=n; i++){
ll tmp=(sum2[i]-sum2[i-m])*m-(sum1[i]-sum1[i-m])*(sum1[i]-sum1[i-m]);
minn=min(minn,tmp);
}
printf("%lld\n",minn);
}
EOJ Monthly 2019.2 题解(B、D、F)的更多相关文章
- EOJ Monthly 2019.2 (based on February Selection) F.方差
题目链接: https://acm.ecnu.edu.cn/contest/140/problem/F/ 题目: 思路: 因为方差是用来评估数据的离散程度的,因此最优的m个数一定是排序后连续的,所以我 ...
- EOJ Monthly 2019.2
题解 A 回收卫星 #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #include<bits/s ...
- EOJ Monthly 2019.11 E. 数学题(莫比乌斯反演+杜教筛+拉格朗日插值)
传送门 题意: 统计\(k\)元组个数\((a_1,a_2,\cdots,a_n),1\leq a_i\leq n\)使得\(gcd(a_1,a_2,\cdots,a_k,n)=1\). 定义\(f( ...
- eoj monthly 2019.11
原题 T1 纸条 题目大意: 给出一个长度为n的字符串,其中m位未知,对于每一位未知的字母,有k个备选字母,最终答案为备选字母按字典序排序后的第x个. 题解: 签到题-- 按照题目意思直接写就可以了. ...
- EOJ Monthly 2019.2 E 中位数 (二分+中位数+dag上dp)
题意: 一张由 n 个点,m 条边构成的有向无环图.每个点有点权 Ai.QQ 小方想知道所有起点为 1 ,终点为 n 的路径中最大的中位数是多少. 一条路径的中位数指的是:一条路径有 n 个点,将这 ...
- EOJ Monthly 2019.2 (based on February Selection) D.进制转换
题目链接: https://acm.ecnu.edu.cn/contest/140/problem/D/ 题目: 思路: 我们知道一个数在某一个进制k下末尾零的个数x就是这个数整除kx,这题要求刚好末 ...
- EOJ Monthly 2019.2 (based on February Selection) D 进制转换 【数学 进制转换】
任意门:https://acm.ecnu.edu.cn/contest/140/problem/D/ D. 进制转换 单测试点时限: 2.0 秒 内存限制: 256 MB “他觉得一个人奋斗更轻松自在 ...
- EOJ Monthly 2019.1 唐纳德先生与这真的是签到题吗 【数学+暴力+multiset】
传送门:https://acm.ecnu.edu.cn/contest/126/ C. 唐纳德先生与这真的是签到题吗 单测试点时限: 6.0 秒 内存限制: 1024 MB 唐纳德先生在出月赛的过程中 ...
- EOJ Monthly 2019.3 A
A. 钝角三角形 单点时限: 3.0 sec 内存限制: 512 MB QQ 小方以前不会判断钝角三角形,现在他会了,所以他急切的想教会你. 如果三角形的三边长分别为 a, b, c (a≤b≤c), ...
随机推荐
- c++ 线程间通信方式
一:两个进程间的两个线程通信,相当于进程间通信 二:一个进程中的两个线程间通信 通信方式: 1.互斥锁 mutex; lock_guard (在构造函数里加锁,在析构函数里解锁) unique_loc ...
- 给web请求加遮罩动画
效果预览: css: /*#fountainG{ position:relative; margin:10% auto; width:240px; height:29px }*/ #fountainG ...
- 【转】RTP学习笔记
转自:https://www.cnblogs.com/yoyotl/p/5650101.html 一.定义 实时传输协议(Real- time Transport Protocol,RTP)是在Int ...
- python3 doc2vec文本聚类实现
import sys #doc2vev import gensim import sklearn import numpy as np from gensim.models.doc2vec impor ...
- Angular7.1.4+Typescript3.1框架学习(一)
起因:学习ionic4之前先学习下angular+ts 以win10为开发平台:当前最新版本为angular7;根据官网资料做如下总结: 1. angular安装 前提:Node.js 的 8.x 或 ...
- kindle完结书单
1.一个人的好天气---青山七惠 2.嫌疑人X的献身---东野圭吾 3.活着---余华 4.最漫长的旅行---Nicholas Sparks 5.解忧杂货店---东野圭吾 6.追风筝的人---卡勒德· ...
- QT中添加工具条QToolBar
项目用的QT5.3,设计师中没有直接拖工具条的控件,那要怎么加工具条呢? 其实.ui文件是xml类型的文本文件,用uedit或记事本打开,找到之前有的工具条段落,复制粘贴一个,保存,再在vs中用设计师 ...
- Linux中安装tomcat后,window中访问不到tomcat的欢迎界面问题
首先,可以通过xftp把下载的tomcat的tar.gz包传输到Linux中. 然后进行解压,tar -zxvf tomcat的压缩包名称(可以使用tab键快速补齐) 解压后,可以使用修改/con ...
- 苹果手机的SB系列(3)超级烦人的账户解锁?
不知道大家有没有这种体验,Iphone 每隔一段时间后账户就被锁定了,也不告诉你原因,就是要解锁? 我怎么感觉比做的比支付宝差多了,我注册支付宝十几年,也没有动不动就告诉了有安全原因,要解锁,要重置密 ...
- CodeForce-955C
C. Sad powerstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutput ...