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. Web端 session cookies Application viewstate

    URL传值/QueryString1.不占用服务器内存2.保密性差,传递值的长度有限 因为  上篇文章 保密性差,长度有限   传值有限只能传string类型的值 这篇文章学的知识是 session ...

  2. MovieReview—Transformers.The.Last.Knight.(变形金刚5:最后的骑士.)

     Gorgeous Effect & Bad Plot   I can only say that the movie's effects are shocking. However, the ...

  3. UVA 11997 K Smallest Sums (多路归并)

    从包含k个整数的k个数组中各选一个求和,在所有的和中选最小的k个值. 思路是多路归并,对于两个长度为k的有序表按一定顺序选两个数字组成和,(B表已经有序)会形成n个有序表 A1+B1<=A1+B ...

  4. bat文件设置环境变量

    ::获取管理员权限 @echo off%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute(" ...

  5. Python封装补充

    property属性 property实际是setter getter deleter是集合体,并不是一个单独的方法 import math # 使用的库 class Circle: def __in ...

  6. js实现23种设计模式(收藏)

    js实现23种设计模式 最近在学习面向对象的23种设计模式,使用java 和 javascript 实现了一遍,但是因为目前大三,还没有比较正规的大项目经验,所以学习的过程种我觉得如果没有一定的项目经 ...

  7. PAT (Basic Level) Practise (中文)- 1018. 锤子剪刀布 (20)

    http://www.patest.cn/contests/pat-b-practise/1018 大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统 ...

  8. Bootstrap滚动监听(Scrollspy)插件

    Bootstrap滚动监听(Scrollspy)插件,即自动更新导航插件,会根据滚动条的位置自动更新对应的导航目标

  9. 01_3_创建一个Action

    01_3_创建一个Action 1. 定义一个action 具体视图的返回可以由用户自己定义的Action来决定 具体的手段是根据返回的字符串找到相应的配置项,来决定视图的内容 具体Action的实现 ...

  10. iOS 解决ipv6问题

    解决ipv6的方法有很多种,由于现在国内的网络运营商还在使用ipv4的网络环境,所以appstore应用不可能大范围去修改自己的服务器, 而且国内的云服务器几乎没有ipv6地址. 这里附上苹果开发平台 ...