Educational Codeforces Round 19 题解【ABCDE】
A. k-Factorization
题意:给你一个n,问你这个数能否分割成k个大于1的数的乘积。
题解:因为n的取值范围很小,所以感觉dfs应该不会有很多种可能……
#include<bits/stdc++.h>
using namespace std;
long long n;
int k;
vector<int> ans;
void dfs(int x,long long now,int st){
if(x==k&&now==n){
for(int i=0;i<ans.size();i++){
cout<<ans[i]<<" ";
}
cout<<endl;
exit(0);
}
for(int i=st;i<=n;i++){
if(i*now>n)break;
ans.push_back(i);
dfs(x+1,now*i,i);
ans.pop_back();
}
}
int main(){
cin>>n>>k;
dfs(0,1,2);
cout<<"-1"<<endl;
}
B. Odd sum
题意:让你找到一个子序列,要求和为奇数,且和最大。
题解:首先让所有正数都加起来,如果答案此时为奇数,直接输出。否则你要么减去一个正奇数,要么加上一个负奇数。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+7;
long long a[maxn];
int n;
long long sum = 0;
int main(){
scanf("%d",&n);
long long Tmp = 1e18;
for(int i=1;i<=n;i++){
cin>>a[i];
if(a[i]>0)sum+=a[i];
if(abs(a[i])%2==1)Tmp=min(Tmp,abs(a[i]));
}
if(sum%2==1)cout<<sum<<endl;
else cout<<sum-Tmp<<endl;
}
C. Minimal string
题意:你有一个串s,你有两个操作。第一个操作是从s的开头扔一个串到t的结尾。第二个操作是扔t的结尾到u的结尾。
问你怎么操作,才能使得u的字典序最小。
题解:贪心,记录后缀最小值。如果当前t存的已经是后缀最小值的最小了,那就直接输出就好了。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+7;
char s[maxn],t[maxn],u[maxn],mn[maxn];
int main(){
scanf("%s",s);
int len = strlen(s);
mn[len]='z'+1;
int len2 = 0;
for(int i=len-1;i>=0;i--)
mn[i]=min(mn[i+1],s[i]);
int len3 = 0;
for(int i=0;i<len;i++){
t[len2++]=s[i];
while(len2&&t[len2-1]<=mn[i+1])
u[len3++]=t[--len2];
}
printf("%s\n",u);
}
D. Broken BST
题意:给你一个二叉树,让你用题目中的代码(搜索二叉树)去找每一个节点的值,问你哪些值找不到。
题解:就模拟就好了。唯一的坑点就是节点的val会有相同的情况,这种只需要找到val一样的点就好,并不需要找到同样的那个点。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+7;
int n,v[maxn],l[maxn],r[maxn];
int ans,vis[maxn];
set<int> S;
void dfs(int x,int L,int R){
if(L<v[x]&&v[x]<R){
S.insert(v[x]);
}
if(l[x]!=-1)dfs(l[x],L,min(R,v[x]));
if(r[x]!=-1)dfs(r[x],max(L,v[x]),R);
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d%d%d",&v[i],&l[i],&r[i]);
if(l[i]!=-1)vis[l[i]]++;
if(r[i]!=-1)vis[r[i]]++;
}
for(int i=1;i<=n;i++){
if(vis[i]==0){
dfs(i,-2e9,2e9);
}
}
for(int i=1;i<=n;i++)
if(S.find(v[i])!=S.end())
ans++;
cout<<n-ans<<endl;
}
E. Array Queries
题意:给你n个数a[i]。然后q个询问,每个询问给你一个p和k,每次p = p + a[p] + k,直到p>n,问你会经过多少步。
题解:根据k分块即可,小于sqrt的dp预处理,否则直接暴力……
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+7;
int a[maxn],n;
int b[maxn][350];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=n;i>=1;i--){
for(int j=1;j<350;j++){
if(i+j+a[i]>n)b[i][j]=1;
else b[i][j]=b[i+a[i]+j][j]+1;
}
}
int q;scanf("%d",&q);
for(int i=1;i<=q;i++){
int x,y;scanf("%d%d",&x,&y);
if(y<350)printf("%d\n",b[x][y]);
else{
int ans = 0;
int now = x;
while(now<=n){
ans = ans + 1;
now = now + a[now] + y;
}
printf("%d\n",ans);
}
}
}
Educational Codeforces Round 19 题解【ABCDE】的更多相关文章
- Educational Codeforces Round 19 A, B, C, E(xjb)
题目链接:http://codeforces.com/contest/797 A题 题意:给出两个数n, k,问能不能将n分解成k个因子相乘的形式,不能输出-1,能则输出其因子: 思路:将n质因分解, ...
- Educational Codeforces Round 55 题解
题解 CF1082A [Vasya and Book] 史上最难A题,没有之一 从题意可以看出,翻到目标页只有三种办法 先从\(x\)到\(1\),再从\(1\)到\(y\) 先从\(x\)到\(n\ ...
- Codeforces Educational Codeforces Round 54 题解
题目链接:https://codeforc.es/contest/1076 A. Minimizing the String 题意:给出一个字符串,最多删掉一个字母,输出操作后字典序最小的字符串. 题 ...
- Educational Codeforces Round 19
A. k-Factorization 题目大意:给一个数n,求k个大于1的数,乘积为n.(n<=100,000,k<=20) 思路:分解质因数呗 #include<cstdio> ...
- Codeforces Educational Codeforces Round 57 题解
传送门 Div 2的比赛,前四题还有那么多人过,应该是SB题,就不讲了. 这场比赛一堆计数题,很舒服.(虽然我没打) E. The Top Scorer 其实这题也不难,不知道为什么这么少人过. 考虑 ...
- Educational Codeforces Round 57题解
A.Find Divisible 沙比题 显然l和2*l可以直接满足条件. 代码 #include<iostream> #include<cctype> #include< ...
- 【Educational Codeforces Round 19】
这场edu蛮简单的…… 连道数据结构题都没有…… A.随便质因数分解凑一下即可. #include<bits/stdc++.h> #define N 100005 using namesp ...
- Educational Codeforces Round 19 A+B+C+E!
A. k-Factorization 题意:将n分解成k个大于1的数相乘的形式.如果无法分解输出-1. 思路:先打个素因子表,然后暴力判,注意最后跳出的条件. int len,a[N],b[N]; v ...
- Educational Codeforces Round 19 C
Description Petya recieved a gift of a string s with length up to 105 characters for his birthday. H ...
随机推荐
- C#实现图片叠加,图片上嵌入文字,文字生成图片的方法
/// <summary> /// 图片叠加 /// </summary> /// <param name="sender"& ...
- Ex 6_9 某个字符串处理语言提供了一个将字符串一分为二的基本操作..._第六次作业
设字符串的长度为n,整型数组arr[0. . .n-1]的第一个数和最后一个数为开始点与结束点的位置,中间的数为拆分点的位置,设cost[i,j]为第i个分割点到第j个分割点的最小代价,两个分割点之间 ...
- == 和 equal 区别
在初学 Java 时,可能会经常碰到下面的代码: String str1 = new String("hello"); String str2 = new String(" ...
- jQuery性能优化指南
总是从ID选择器开始继承在jQuery中最快的选择器是ID选择器,因为它直接来自于JavaScript的getElementById()方法. 例如有一段HTML代码:代码 <div id=&q ...
- 使用@font-family时各浏览器对字体格式(format)的支持情况
说到浏览器对@font-face的兼容问题,这里涉及到一个字体format的问题,因为不同的浏览器对字体格式支持是不一致的,这样大家有必要了解一下,各种版本的浏览器支持什么样的字体,前面也简单带到了有 ...
- jq中Deferred对象的使用
var d=$.Deferred(); //deferred下面的方法有: // ["resolve", "resolveWith", "reject ...
- 2018-2019 2 20165203 《网络对抗技术》 Exp2 后门原理与实践
2018-2019 2 20165203 <网络对抗技术> Exp2 后门原理与实践 实验内容 1.使用netcat获取主机操作Shell,cron启动 (0.5分) 2.使用socat获 ...
- 二.hadoop环境搭建
目录: 目录见文章1 文章:官方文档hadoop2.7.4 目的 这篇文档的目的是帮助你快速完成单机上的Hadoop安装与使用以便你对Hadoop分布式文件系统(HDFS)和Map-Reduce框架有 ...
- 胖哈勃杯Pwn400、Pwn500详解
概述 这次的胖哈博杯我出了Pwn400.Pwn500两道题目,这里讲一下出题和解题的思路.我个人感觉前两年的Pwn题更多的是考察单一的利用技巧,比我这有个洞怎么利用它拿到权限.但是我研究了一些最近的题 ...
- vtiger二次开发
搞了快两个星期的vtiger,慢慢的摸索到了一些东西 数据库相当的复杂,已有的模块我只是分析了下页面的加载,方法的调用 大部分时间在研究怎么添加新的功能模块,今天才知道模块可以通过输入命令的方式来添加 ...