A.
k-Factorization

题意:将n分解成k个大于1的数相乘的形式。如果无法分解输出-1。

思路:先打个素因子表,然后暴力判,注意最后跳出的条件。

int len,a[N],b[N];
void init()
{
memset(a,-1,sizeof(a));
a[0]=a[1]=0;
memset(b,0,sizeof(b));
len=0;
for(int i=2; i<N; i++)
if(a[i])
{
b[len++]=i;
if(N/i<i) continue;
for(int j=i*i; j<N; j+=i) a[j]=0;
}
}
int main()
{
init();
int n,k;
while(~scanf("%d%d",&n,&k))
{
if(k==1)
{
printf("%d\n",n);
continue;
}
if(a[n])
{
puts("-1");
continue;
}
int num=0,l=0;
int tmp[35];
while(k>1&&n>=b[num])
{
while(k>1&&n>=b[num]&&n%b[num]==0)
{
tmp[l++]=b[num];
// printf("%d ",b[num]);
k--;
n/=b[num];
}
num++;
}
if(k>1||n==1) puts("-1");
else
{
tmp[l++]=n;
for(int i=0;i<l;i++)
printf("%d ",tmp[i]);
puts("");
}
}
return 0;
}

B.
Odd sum

题意:给出n个数,求最大的奇数和是多大。

思路:注意:偶数=奇数+奇数。先将所有大于0的数加起来,如果是奇数直接输出,否则需要减去一个正奇数或者负奇数。于是输入的时候需要求出一个最大的负奇数和一个最小的正奇数。

int len,a[N],b[N];
int main()
{
int n;
while(~scanf("%d",&n))
{
int mi=-INF,ma=INF,sum=0,x;
for(int i=0;i<n;i++)
{
scanf("%d",&x);
if(x>=0)
{
sum+=x;
if(x&1) ma=min(ma,x);
}
else
{
x=-x;
if(x&1) mi=max(mi,-x);
}
}
if((sum&1)==0)
{
int sum1=0,sum2=0;
// printf("%d %d\n",mi,ma);
sum1=sum-ma;
sum2=sum+mi;
sum=max(sum1,sum2);
}
printf("%d\n",sum);
}
return 0;
}

C.
Minimal string

对这题至今仍存在未解之谜。

题意:最开始给出一个串s,和两个空串t,u。每次操作可以将s的首字符加入t的尾部,也可以将t的尾字符加入u的尾部。输出字典序最小的串u。

贪心思想,只要当前字符的后面有比当前小的先将当前字符入栈,如果后面没有比当前字符更小的则将栈顶比当前字符小的输出来,再输出当前字符。思想貌似很正确,然后第25组数据死活过不去。看了一下别人的代码,感觉没什么区别,只是实现方式不同,真是玄学。。

代码一:WA 20:

char s[N],b[N];
int main()
{
while(~scanf("%s",s))
{
int len=strlen(s);
b[len-1]=s[len-1];
for(int i=len-2; i>=0; i--) b[i]=min(s[i],b[i+1]);
b[len]='\0';
stack<char>q;
while(!q.empty()) q.pop();
for(int i=0; i<len; i++)
{
q.push(s[i]);
while(!q.empty()&&q.top()<=b[i])
{
printf("%c",q.top());
q.pop();
}
}
while(!q.empty())
{
printf("%c",q.top());
q.pop();
}
puts("");
}
return 0;
}

代码二:AC:

char s[N],b[N];
int main()
{
while(~scanf("%s",s))
{
int len=strlen(s);
b[len-1]=s[len-1];
for(int i=len-2; i>=0; i--) b[i]=min(s[i],b[i+1]);
b[len]='z';
stack<char>q;
while(!q.empty()) q.pop();
for(int i=0; i<len; i++)
{
q.push(s[i]);
while(!q.empty()&&q.top()<=b[i+1])//这里改成b[i+1]就过了
{
printf("%c",q.top());
q.pop();
}
}
while(!q.empty())
{
printf("%c",q.top());
q.pop();
}
puts("");
}
return 0;
}

代码三:WA 25:

char s[N],b[N];
int main()
{
while(~scanf("%s",s))
{
int len=strlen(s);
b[len-1]=s[len-1];
for(int i=len-2; i>=0; i--) b[i]=min(s[i],b[i+1]);
b[len]='z';
stack<char>q;
while(!q.empty()) q.pop();
for(int i=0; i<len; i++)
{
if(b[i]==s[i])//后面的没有比当前更小的;
{
while(!q.empty()&&q.top()<=b[i])
{
printf("%c",q.top());
q.pop();
}
printf("%c",s[i]);
}
else q.push(s[i]);
}
while(!q.empty())
{
printf("%c",q.top());
q.pop();
}
puts("");
}
return 0;
}

如果有路过的大牛,请帮忙指点迷津。

E.
Array Queries

题意:给出n个数的数列a[](a[i]>=1&&a[i]<=n),然后q次查询,每次输入一个p,k,每次操作可以将p变换成p+a[p]+k。求需要变换多少次才能使p大于n。

思路:暴力。注意到数据只有1e5。用一个数组b[p][k]表示输出数据为p,k的时候需要变换的次数。但第一维可达1e5,所以第二维能开到300到400的样子,这样先预处理出k在400一下的,至于k在400以上的,我们发现,p的变换是递增的,k越大递增越快,所以如果k为400,最坏也就在260左右次就可以达到条件,这样暴力判就行。

int a[N],b[N][321];
int main()
{
int n;
while(~scanf("%d",&n))
{
for(int i=1;i<=n;i++) scanf("%d",&a[i]),a[i]+=i;
memset(b,0,sizeof(b));
for(int i=n;i>=1;i--)
for(int j=1;j<=320;j++)
if(j+a[i]>n) b[i][j]=1;
else b[i][j]=b[a[i]+j][j]+1;
int q,p,k;
scanf("%d",&q);
while(q--)
{
scanf("%d%d",&p,&k);
if(k<=320)
{
printf("%d\n",b[p][k]);
continue;
}
int ans=0;
while(p<=n) p=a[p]+k,ans++;
printf("%d\n",ans);
}
}
return 0;
}

E题挺有意思,奥,为什么D题不做,嘿嘿,不(我)告(好)诉(菜)你(a)。

Educational Codeforces Round 19 A+B+C+E!的更多相关文章

  1. Educational Codeforces Round 19 A, B, C, E(xjb)

    题目链接:http://codeforces.com/contest/797 A题 题意:给出两个数n, k,问能不能将n分解成k个因子相乘的形式,不能输出-1,能则输出其因子: 思路:将n质因分解, ...

  2. Educational Codeforces Round 19

    A. k-Factorization 题目大意:给一个数n,求k个大于1的数,乘积为n.(n<=100,000,k<=20) 思路:分解质因数呗 #include<cstdio> ...

  3. Educational Codeforces Round 19 题解【ABCDE】

    A. k-Factorization 题意:给你一个n,问你这个数能否分割成k个大于1的数的乘积. 题解:因为n的取值范围很小,所以感觉dfs应该不会有很多种可能-- #include<bits ...

  4. 【Educational Codeforces Round 19】

    这场edu蛮简单的…… 连道数据结构题都没有…… A.随便质因数分解凑一下即可. #include<bits/stdc++.h> #define N 100005 using namesp ...

  5. Educational Codeforces Round 19 C

    Description Petya recieved a gift of a string s with length up to 105 characters for his birthday. H ...

  6. Educational Codeforces Round 19 B

    Description You are given sequence a1, a2, ..., an of integer numbers of length n. Your task is to f ...

  7. Educational Codeforces Round 19 A

    Description Given a positive integer n, find k integers (not necessary distinct) such that all these ...

  8. Educational Codeforces Round 19 E. Array Queries(暴力)(DP)

    传送门 题意 给出n个数,q个询问,每个询问有两个数p,k,询问p+k+a[p]操作几次后超过n 分析 分块处理,在k<sqrt(n)时,用dp,大于sqrt(n)用暴力 trick 代码 #i ...

  9. Educational Codeforces Round 17

    Educational Codeforces Round 17 A. k-th divisor 水题,把所有因子找出来排序然后找第\(k\)大 view code //#pragma GCC opti ...

随机推荐

  1. Windows服务管理

    按键:win+R 输入:services.msc “服务和应用程序”界面选项打开 * sc命令的使用:create(创建) delete(删除)等 * service可执行文件路径的修改:win+R ...

  2. 2018.3.11 Java DEBUG 调试的方法

    F5:Step Into:跳进当前执行的方法中 F6:Step Over:跳过该行继续执行 F7:Step Return:从方法中跳出继续执行 F8:Resume:全部运行通过,从调试状态恢复 Ctr ...

  3. Sublime 安装Boxy + OmniMarkupPreviewer

    Sublime 安装Boxy + OmniMarkupPreviewer Package Install 安装 网络安装 ctrl+反引号打开控制台,在控制台中输入代码 import urllib.r ...

  4. targetcli save error

    iscsi configuration unable to save python error “ValueError: 'Implict and Explict' is not in list” / ...

  5. 如何远程连接Windows server上的MySQL服务

    废话不多说,直接开干 首先要打开服务器的MySQL端口号:3306(当然,也可以把服务器的防火墙直接关闭,不过不安全) 1.打开服务器管理器,有个高级安全Windows防火墙,下面有一个入站规则, 右 ...

  6. c#—OpenFileDialog

    OpenFileDialog是什么? OpenFileDialog是一个类,实例化此类可以设置弹出一个文件对话框.比如:我们发邮件时需要上传附件的时候,就会弹出一个让我们选择文件的对话框, 我们可以根 ...

  7. mysql 主从数据校验

    使用工具pt-table-checksum: /usr/bin/pt-table-checksum --user=root --password='mysqlpass' --host=127.0.0. ...

  8. Ubuntu 18.04安装显卡驱动

    安装完双系统,我遇到好几次开机或关机有问题,导致我重装了3次系统,第三次我才知道是显卡驱动问题,Ubuntu预装的开源Nvidia驱动太烂了,需要换官方驱动. 把 nouveau 驱动加入黑名单 $s ...

  9. 封装一个优雅的element ui表格组件

    现在做后台系统用vue + elementUI 的越来越多,那element ui的 el-table 组件肯定也离不开.虽然element ui的table组件很好.但是表格和分页是分离的.每次写表 ...

  10. selenium +python web自动化测试环境搭建

    基础框架搭建 1.安装python 2.安装selenium cmd输入pip install selenium 问题:在python中输入from selenium import webdriver ...