A-C

直接放代码吧。

A

int n,k;
int main()
{
n=read();k=read();
puts(k<=(n+1)/2?"YES":"NO");
return 0;
}

B

int d[N];pair<int,int>s[10];
int main()
{
for(int i=1,u,v;i<=3;i++){
u=read();v=read();
s[i].first=u;s[i].second=v;
d[u]++;d[v]++;
}
sort(s+1,s+3+1);
for(int i=2;i<=3;i++)if(s[i]==s[i-1])return puts("NO"),0;
for(int i=1;i<=4;i++)if(d[i]>=3)return puts("NO"),0;
return puts("YES"),0;
}

C

int main()
{
int k=read(),a=read(),b=read();ll ans=0;
if(b<=a+2||k<=a-1)printf("%d\n",k+1);
else{
k-=a-1;ans=a;if(k&1)k--,ans++;
printf("%lld\n",ans+1ll*(k/2)*(b-a));
}
return 0;
}

D - Ears

zsy在一条\([0,L]\)的数轴上来回走路。

zsy可以任选\([0,L]\)中的整点作为起点和终点,并且zsy走路时只能在整数位置(\(0,1,2,...,L\))调整方向。

每当zsy向左或向右经过一条\([i,i+1]\ (i\in[0,L))\)的线段时,zsy就会往这条线段的中间放上一个球。

当zsy走完路后,yyb会来到这条数轴。她会进行若干次操作:打爆一个球或在一条线段的中间放上一个球。

现在给出数轴每条线段中间最终球的个数\(a_1,...,a_n\),求出zsy的一种行走方式,使得yyb的操作次数最小。

因为zsy可以反复横跳来回地走,所以可以把\(a_i\)减去若干个2,最后只剩下\(0,1,2\)三种状态。

可以知道对应简化数组的一种最优方案里zsy不会重复走过一条路超过2次。

既然是回路问题,考虑插头dp。

设\(f[i][j][k]\)表示考虑轮廓线到达\(i\),插头有\(j\)个,已经用了\(k\)个单插头的最少代价,

直接转移即可。

int n,t[N];ll suft[N],dp[N][3][3],ans;
inline void upd(ll &a,ll b){a=a<b?a:b;}
inline int calc(int x,int r){
if(r==0)return x;
if(r==1)return x&1?0:1;
if(r==2){if(!x)return 2;else return x&1?1:0;}
}
int main()
{
n=read();for(int i=1;i<=n;i++)t[i]=read();
for(int i=n;i;i--)suft[i]=suft[i+1]+t[i];ans=suft[1];
memset(dp,63,sizeof(dp));dp[0][0][0]=0;
for(int i=0;i<=n;i++)
for(int a=0;a<3;a++)
for(int b=0;b<3;b++){
if(a==0){
upd(dp[i+1][a][b],dp[i][a][b]+t[i+1]);
if(b!=2)upd(dp[i+1][a+1][b+1],dp[i][a][b]+calc(t[i+1],1));
upd(dp[i+1][a+2][b],dp[i][a][b]+calc(t[i+1],2));
}
if(a==1){
if(b!=2)upd(ans,dp[i][a][b]+suft[i+1]);
upd(dp[i+1][a][b],dp[i][a][b]+calc(t[i+1],1));
if(b!=2)upd(dp[i+1][a+1][b+1],dp[i][a][b]+calc(t[i+1],2));
}
if(a==2){
upd(ans,dp[i][a][b]+suft[i+1]);
if(b!=2)upd(dp[i+1][a-1][b+1],dp[i][a][b]+calc(t[i+1],1));
upd(dp[i+1][a][b],dp[i][a][b]+calc(t[i+1],2));
}
}
printf("%lld\n",ans);
return 0;
}

E - Odd Subrectangles

考虑给定行后选出列集合的方案数:

如果行的异或和不为0,那么总有一半的方案选出来异或和为1,另一半为0,因此方案为\(2^{m-1}\)

于是答案变成\(2^{m-1}S\),其中\(S\)表示行向量选出来的异或和不为\(0\)的方案数。

求解选取行向量集合,使其异或和不为0的方案数是一个经典问题:

考虑求出\(n\)个行向量的线性基,设其大小为\(r\)。

如果仅选取线性基中的元素,显然无法使得异或和为\(0\);

那么考虑先选取不在线性基中的元素:

对于这样的一组方案,在线性基中都有唯一的一种选取元素的方案,使得所有元素的异或和为0.

因此\(S=2^n-2^{n-r}\)。

int n,m,a[N][N],now[N],in[N],p[N][N],r;
inline int poww(int a,int b){
int res=1;
for(;b;b>>=1,a=1ll*a*a%mod)
if(b&1)res=1ll*res*a%mod;
return res;
}
int main()
{
n=read();m=read();
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)a[i][j]=read();
for(int i=1;i<=n;i++){
memcpy(now,a[i],sizeof(now));
for(int j=1;j<=m;j++)
if(now[j]){
if(in[j])for(int k=j;k<=m;k++)now[k]^=p[j][k];
else{in[j]=1;memcpy(p[j],now,sizeof(p[j]));r++;break;}
}
}
printf("%lld\n",1ll*(poww(2,n)-poww(2,n-r)+mod)%mod*poww(2,m-1)%mod);
return 0;
}

F - Pass

考虑直接构造最终序列。由传球方式可以知道,第\(i(i\le n)\)个球只会在\(1-i\)个人的手中出现,后\(n\)个求随意。

因此直接设\(f[i][j]\)dp,最后组合数乘一下即可。

char s[N];int n,dp[N][N],c[N][N],ans;
inline void upd(int &a,int b){a+=b;if(a>=mod)a-=mod;}
int main()
{
scanf("%s",s+1);n=strlen(s+1);
for(int i=0;i<=n;i++)
for(int j=c[i][0]=1;j<=i;j++)upd(c[i][j]=c[i-1][j],c[i-1][j-1]);
dp[0][0]=1;
for(int i=1;i<=n;i++)
for(int j=0,c=s[i]-48;j<=i;j++){
if(j>=c-1)upd(dp[i][j],dp[i-1][j-c+1]);
if(j>=c)upd(dp[i][j],dp[i-1][j-c]);
}
for(int i=0;i<=n;i++)upd(ans,1ll*dp[n][i]*c[n][i]%mod);
printf("%d\n",ans);
return 0;
}

Atcoder Yahoo Programming Contest 2019 简要题解的更多相关文章

  1. [AtCoder] Yahoo Programming Contest 2019

    [AtCoder] Yahoo Programming Contest 2019   很遗憾错过了一场 AtCoder .听说这场是涨分场呢,于是特意来补一下题. A - Anti-Adjacency ...

  2. [AtCoder] NIKKEI Programming Contest 2019 (暂缺F)

    [AtCoder] NIKKEI Programming Contest 2019   本来看见这一场的排名的画风比较正常就来补一下题,但是完全没有发现后两题的AC人数远少于我补的上一份AtCoder ...

  3. 【AtCoder】Yahoo Programming Contest 2019

    A - Anti-Adjacency K <= (N + 1) / 2 #include <bits/stdc++.h> #define fi first #define se se ...

  4. AtCoder NIKKEI Programming Contest 2019 C. Different Strokes (贪心)

    题目链接:https://nikkei2019-qual.contest.atcoder.jp/tasks/nikkei2019_qual_C 题意:给出 n 种食物,Takahashi 吃下获得 a ...

  5. AtCoder NIKKEI Programming Contest 2019 E. Weights on Vertices and Edges (并查集)

    题目链接:https://atcoder.jp/contests/nikkei2019-qual/tasks/nikkei2019_qual_e 题意:给出一个 n 个点 m 条边的无向图,每个点和每 ...

  6. Yahoo Programming Contest 2019 补题记录(DEF)

    D - Ears 题目链接:D - Ears 大意:你在一个\(0-L\)的数轴上行走,从整数格出发,在整数格结束,可以在整数格转弯.每当你经过坐标为\(i-0.5\)的位置时(\(i\)是整数),在 ...

  7. Yahoo Programming Contest 2019.F.Pass(DP)

    题目链接 惊了这是什么F题...怎么我都能做出来...以后atcoder的比赛也不能走神了万一有个这样的F呢(CF已有多次了= =) \(f[i][j]\)表示Takahashi现在一共有\(i\)个 ...

  8. Yahoo Programming Contest 2019 自闭记

    A:签到. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> ...

  9. atcoder NIKKEI Programming Contest 2019 E - Weights on Vertices and Edges

    题目链接:Weights on Vertices and Edges 题目大意:有一个\(n\)个点\(m\)条边的无向图,点有点权,边有边权,问至少删去多少条边使得对于剩下的每一条边,它所在的联通块 ...

随机推荐

  1. c语言数字图像处理(九):边缘检测

    背景知识 边缘像素是图像中灰度突变的像素,而边缘是连接边缘像素的集合.边缘检测是设计用来检测边缘像素的局部图像处理方法. 孤立点检测 使用<https://www.cnblogs.com/Gol ...

  2. ats 分层缓存

    了解缓存层次结构 缓存层次结构由彼此通信的缓存级别组成.ats支持多种类型的缓存层次结构. 所有缓存层次结构都识别父和子的概念. 父缓存是层次结构中较高的缓存, ats可以 将请求转发到该缓存.子缓存 ...

  3. windows的滚动条使用

    背景 在毕业快一年的工作时间中,对windows编程的某些特性并不够熟悉,例如滚动条的使用.在一次需求中需要用到滚动条,在开发过程中走了不少弯路,因此需要做一些笔记总结一下学习到的内容. 先推荐几个写 ...

  4. 如何批量删除QQ浏览器指定历史记录和导出指定的历史记录

    QQ浏览器的历史记录只有清空历史记录和删除选中项两个功能.有时我不想删除所有的历史记录,只是想删除指定的历史记录保留对自己有用的历史记录,方便自己以后查找.但是删除选中项功能只能一项一项的选择,才能批 ...

  5. 2019 年软件开发人员必学的编程语言 Top 3

    AI 前线导读:这篇文章将探讨编程语言世界的现在和未来,这些语言让新一代软件开发者成为这个数字世界的关键参与者,他们让这个世界变得更健壮.连接更加紧密和更有意义.开发者要想在 2019 年脱颖而出,这 ...

  6. 【推荐系统】neural_collaborative_filtering(源码解析)

    很久没看推荐系统相关的论文了,最近发现一篇2017年的论文,感觉不错. 原始论文 https://arxiv.org/pdf/1708.05031.pdf 网上有翻译了 https://www.cnb ...

  7. mysql添加一个字段(

    mysql添加一个字段(在指定的一个字段后面) 举个栗子:alter table inquiry add error_code varchar(3) after add_time; 说明:alter ...

  8. centos7安装oracle的一些问题

    在配置监听的时候尝试了很多次都是不能创建,最后将 /data/oracle/product/11.2.0/db_1/network/admin目录下的listener.ora和tnsname.ora两 ...

  9. Notes of Daily Scrum Meeting(11.17)

    Notes of Daily Scrum Meeting(11.17) 今天是第四周的周一,也就是说距离最后发布也只剩下一周的时间,但我们的工程里面还有很多的问题没有解决,我关注过 其他一两个小组,他 ...

  10. TeamWork#1,Week 5,Suggestions for Team Project

    我们团队联系到了我们六班的直系学长,并向他咨询了软件工程基础这门课的团队项目相关的问题.他们团队的名字命名为Z-XML,团队中的几个学长也都是我平时所熟识的.虽然学长已经大四,忙着考研工作等各种事务, ...