A. Antipalindrome

还以为是什么神dp结果就是分情况讨论啊

原串是一串一样的字符的话输出0,是回文串的话输出n-1,否则直接输出原串长度

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=55;
int n;
char s[N];
int main()
{
scanf("%s",s+1);
n=strlen(s+1);
int f=1;
for(int i=1;i<n;i++)
if(s[i]!=s[i+1])
{
f=0;
break;
}
if(f)
{
puts("0");
return 0;
}
f=1;
for(int i=1;i<=n/2;i++)
if(s[i]!=s[n-i+1])
{
f=0;
break;
}
printf("%d\n",n-f);
return 0;
}

B. Businessmen Problems

hash一下,然后对每个化学元素取收入最大值即可

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<map>
using namespace std;
const int N=200005;
int n,m,a[N],b[N],c[N],d[N],g[N],tot,has,ans[N];
long long sum;
map<int,int>mp;
int read()
{
int r=0,f=1;
char p=getchar();
while(p>'9'||p<'0')
{
if(p=='-')
f=-1;
p=getchar();
}
while(p>='0'&&p<='9')
{
r=r*10+p-48;
p=getchar();
}
return r*f;
}
int main()
{
n=read();
for(int i=1;i<=n;i++)
a[i]=read(),c[i]=read(),g[++tot]=a[i];
m=read();
for(int i=1;i<=m;i++)
b[i]=read(),d[i]=read(),g[++tot]=b[i];
sort(g+1,g+1+tot);
for(int i=1;i<=tot;i++)
if(i==1||g[i]!=g[i-1])
mp[g[i]]=++has;
for(int i=1;i<=n;i++)
ans[mp[a[i]]]=c[i];
for(int i=1;i<=m;i++)
ans[mp[b[i]]]=max(ans[mp[b[i]]],d[i]);
for(int i=1;i<=has;i++)
sum+=1ll*ans[i];
printf("%lld\n",sum);
return 0;
}

C. Useful Decomposition

有三种可能情况:所有链在某一点上相交,也就是只有一个点度数>2;只有一条链,就是两个点度数为1,其他点度数为2;不符合要求的情况,就是有超过一个点度数>2

#include<iostream>
#include<cstdio>
using namespace std;
const int N=200005;
int n,d[N],sum,con,p,ans[N],tot;
int read()
{
int r=0,f=1;
char p=getchar();
while(p>'9'||p<'0')
{
if(p=='-')
f=-1;
p=getchar();
}
while(p>='0'&&p<='9')
{
r=r*10+p-48;
p=getchar();
}
return r*f;
}
int main()
{
n=read();
for(int i=1;i<n;i++)
{
int x=read(),y=read();
d[x]++,d[y]++;
}
for(int i=1;i<=n;i++)
{
if(d[i]>2)
p=i,sum++;
if(d[i]==1)
ans[++tot]=i,con++;
}
if(sum>1)
{
puts("No");
return 0;
}
if(sum==0)
{
printf("Yes\n1\n%d %d\n",ans[1],ans[2]);
return 0;
}
printf("Yes\n%d\n",con);
for(int i=1;i<=n;i++)
if(d[i]==1)
printf("%d %d\n",p,i);
return 0;
}

D. Bookshelves

很好的dp

或许应该叫按位贪心?从高位到低位枚举,然后f[i][j]表示到j为止分为i段能否让当前枚举的位为1,转移的时候也要注意满足之前枚举的位能不变为0

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=55;
int n,k;
long long a[N],ans;
bool f[N][N];
int main()
{
scanf("%d%d",&n,&k);
for(int i=0;i<n;i++)
scanf("%lld",&a[i]);
for(int i=60;i>=0;i--)
{
memset(f,0,sizeof(f));
f[0][0]=1;
for(int j=0;j<k;j++)
for(int l=0;l<n;l++)
if(f[j][l])
{
long long sum=0;
for(int d=l;d<n;d++)
{
sum+=a[d];
if((sum&ans)==ans&&(sum&(1ll<<i)))
f[j+1][d+1]=1;
}
}
if(f[k][n])
ans|=1ll<<i;
}
printf("%lld\n",ans);
return 0;
}

E. Addition on Segments

还是非常好的dp

设f[i]为i为最大值时出现的最右位置,然后把修改操作按r排序,每次用修改操作更新f即可

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=10005;
int n,q,f[N];
struct qwe
{
int l,r,x;
}a[N];
bool cmp(const qwe &a,const qwe &b)
{
return a.r<b.r;
}
int read()
{
int r=0,f=1;
char p=getchar();
while(p>'9'||p<'0')
{
if(p=='-')
f=-1;
p=getchar();
}
while(p>='0'&&p<='9')
{
r=r*10+p-48;
p=getchar();
}
return r*f;
}
int main()
{
n=read(),q=read();
for(int i=1;i<=q;i++)
a[i].l=read(),a[i].r=read(),a[i].x=read();
sort(a+1,a+1+q,cmp);
for(int i=1;i<=q;i++)
{
for(int j=n-a[i].x;j>=1;j--)
if(f[j]>=a[i].l)
f[j+a[i].x]=max(f[j+a[i].x],f[j]);
f[a[i].x]=a[i].r;
}
int ans=0;
for(int i=1;i<=n;i++)
if(f[i]>0)
ans++;
printf("%d\n",ans);
for(int i=1;i<=n;i++)
if(f[i]>0)
printf("%d ",i);
return 0;
}

Avito Code Challenge 2018 A~E的更多相关文章

  1. Codeforces Avito Code Challenge 2018 D. Bookshelves

    Codeforces Avito Code Challenge 2018 D. Bookshelves 题目连接: http://codeforces.com/contest/981/problem/ ...

  2. Codeforces - Avito Code Challenge 2018

    Portal A. Antipalindrome 暴力. B. Businessmen Problems 暴力. C. Useful Decomposition 居然不是C打头的?! 将一棵树划分成若 ...

  3. cf掉分记——Avito Code Challenge 2018

    再次作死的打了一次cf的修仙比赛感觉有点迷.. 还好掉的分不多(原本就太低没法掉了QAQ) 把会做的前三道水题记录在这.. A: Antipalindrome emmmm...直接暴力枚举 code: ...

  4. Avito Code Challenge 2018

    第一次打CF,很菜,A了三道水题,第四题好像是是数位DP,直接放弃了.rateing从初始的1500变成了1499,还是绿名,这就很尴尬.之后觉得后面的题目也没有想象的那么难(看通过人数)过两天吧剩下 ...

  5. Avito Code Challenge 2018 C

    C. Useful Decomposition time limit per test 1 second memory limit per test 256 megabytes input stand ...

  6. [Avito Code Challenge 2018 G] Magic multisets(线段树)

    题目链接:http://codeforces.com/contest/981/problem/G 题目大意: 有n个初始为空的‘魔法’可重集,向一个‘可重集’加入元素时,若该元素未出现过,则将其加入: ...

  7. Avito Cool Challenge 2018 E. Missing Numbers 【枚举】

    传送门:http://codeforces.com/contest/1081/problem/E E. Missing Numbers time limit per test 2 seconds me ...

  8. Avito Cool Challenge 2018 C. Colorful Bricks 【排列组合】

    传送门:http://codeforces.com/contest/1081/problem/C C. Colorful Bricks time limit per test 2 seconds me ...

  9. Avito Cool Challenge 2018 B. Farewell Party 【YY】

    传送门:http://codeforces.com/contest/1081/problem/B B. Farewell Party time limit per test 1 second memo ...

随机推荐

  1. AutoMapper 使用总结1

    初识AutoMapper 在开始本篇文章之前,先来思考一个问题:一个项目分多层架构,如显示层.业务逻辑层.服务层.数据访问层.层与层访问需要数据载体,也就是类.如果多层通用一个类,一则会暴露出每层的字 ...

  2. java成员变量

      成员变量是在类范围内定义的变量   局部变量是在一个方法内定义的变量 https://www.cnblogs.com/zhengchenhui/p/5762966.html

  3. jsp学习之如何在web层创建Servlet

    jsp动态网页的文件目录结构如下: 1.src下存放java代码 2.包web_xx为web层 3.webcontent里面是jsp文件 jsp页面中的请求交付给servlet处理,在实际中 jsp的 ...

  4. 洛谷 P2285 BZOJ 1207 [HNOI2004]打鼹鼠

    题目描述 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的.根据这个特点阿牛编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某些时刻鼹鼠会在某一个网格探出头来透透气. ...

  5. codeforces 362A找规律

    刚开始以为是搜索白忙活了原来是个简单的找规律,以后要多想啊 此题是两马同时跳 A. Two Semiknights Meet time limit per test 1 second memory l ...

  6. BZOJ 1225: [HNOI2001] 求正整数 高精度+搜索+质数

    题意:给定n求,有n个因子的最小正整数. 题解:水题,zcr都会,我就不说什么了. 因数个数球求法应该知道,将m分解质因数,然后发现 a1^p1*a2^p2....an^pn这样一个式子, (1+p1 ...

  7. 安装K/3 Cloud过程中发现的两个新问题。

    卸载掉K/3 Cloud然后重装时出现下面的错误提示: 可能原因: 1.安装目录下的Setup.exe会检查操作系统版本.有些操作系统可能是被串改过注册信息,所以取不到版本信息(有些是因为盗版的原因) ...

  8. 共享一个NOI用过的vimrc [rc][vimrc]

    set nocp set nu set ru set noet set ai set cin set mouse =a set mp=g++\ %\ -o\ %<\ -g\ -Wall\ -Ws ...

  9. Pagodas 等差数列

    nn pagodas were standing erect in Hong Jue Si between the Niushou Mountain and the Yuntai Mountain, ...

  10. DELPHI IDFTP

    FTP是一个标准协议,它是在计算机和网络之间交换文件的最简单的方法. FTP也是应用TCP/IP协议的应用协议标准.FTP通常于将作者的文件上传至服务器,或从服务器上下传文件的一种普遍的使用方式作为用 ...