Atcoder Tenka1 Programmer Contest 2019
C
签到题,f[i][0/1]表示以i结尾最后一个为白/黑的最小值,转移显然。
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+;
int n,f[N][];
char s[N];
int main()
{
scanf("%d",&n);
scanf("%s",s+);
for(int i=;i<=n;i++)
if(s[i]=='.')
{
f[i][]=f[i-][];
f[i][]=min(f[i-][],f[i-][])+;
}
else{
f[i][]=f[i-][]+;
f[i][]=min(f[i-][],f[i-][]);
}
printf("%d\n",min(f[n][],f[n][]));
}
D
方案数=总方案数-不能拼成三角形的方案数。不能拼成三角形,即最长边大于等于边总和的一半。于是可以f[i]表示以i为最长边能组成三角形的方案数,g[i]表示凑成长度为i的边方案。f[0]=2^n,g[0]=1,然后每次转移f除以2即可。注意讨论最长边为总和一半的情况(没讨论WA了一发)。
#include<bits/stdc++.h>
using namespace std;
const int N=,mod=,inv2=,inv3=;
int n,ans,sum,lim,pw2[N],pw3[N],a[N],f[N*N],g[N*N];
int main()
{
scanf("%d",&n);
ans=f[]=g[]=;
for(int i=;i<=n;i++)f[]=2ll*f[]%mod;
for(int i=;i<=n;i++)
{
ans=3ll*ans%mod;
scanf("%d",&a[i]);
sum+=a[i];
for(int j=sum;j>=a[i];j--)
f[j]=(f[j]+1ll*f[j-a[i]]*inv2)%mod,g[j]=(g[j]+g[j-a[i]])%mod;
}
lim=(sum+)/;
for(int i=lim;i<=sum;i++)ans=(ans-3ll*f[i]%mod+mod)%mod;
if(sum%==)ans=(ans+3ll*g[lim])%mod;
printf("%d\n",ans);
}
E
很容易发现答案只有2种:1、所有系数的gcd的质因数。2、1~n以内符合条件的数(具体证明是看官方题解的)。第一种无脑枚举,第二种直接O(n^2)暴力即可。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+;
int n,m,a[N],h[N];
set<int>ans;
void check(int p)
{
for(int i=;i<p-;i++)h[i]=;
for(int i=,x;i<=n;i++)x=i%(p-),h[x]=(h[x]+a[i])%p;
for(int i=;i<p-;i++)if(h[i])return;
ans.insert(p);
}
int main()
{
scanf("%d",&n);
for(int i=n;i>=;i--)scanf("%d",&a[i]),m=__gcd(m,abs(a[i]));
for(int i=;i*i<=m;i++)
if(m%i==)
{
ans.insert(i);
while(m%i==)m/=i;
}
if(m!=)ans.insert(m);
for(int i=;i<=n;i++)
if(a[]%i==)
{
int flag=;
for(int j=;j*j<=i;j++)if(i%j==){flag=;break;}
if(flag)check(i);
}
for(auto x:ans)printf("%d\n",x);
}
F
咕
rank=105,rating+=108,因为原本rating过低。
Atcoder Tenka1 Programmer Contest 2019的更多相关文章
- Atcoder Tenka1 Programmer Contest 2019 题解
link 题面真简洁 qaq C Stones 最终一定是连续一段 . 加上连续一段 # .直接枚举断点记录前缀和统计即可. #include<bits/stdc++.h> #define ...
- Atcoder Tenka1 Programmer Contest 2019 E - Polynomial Divisors
题意: 给出一个多项式,问有多少个质数\(p\)使得\(p\;|\;f(x)\),不管\(x\)取何值 思路: 首先所有系数的\(gcd\)的质因子都是可以的. 再考虑一个结论,如果在\(\bmod ...
- Atcoder Tenka1 Programmer Contest 2019 D Three Colors
题意: 有\(n\)个石头,每个石头有权值,可以给它们染'R', 'G', 'B'三种颜色,如下定义一种染色方案为合法方案: 所有石头都染上了一种颜色 令\(R, G, B\)为染了'R', 染了'G ...
- Atcoder Tenka1 Programmer Contest 2019题解
传送门 \(C\ Stones\) 最后肯定形如左边一段白+右边一段黑,枚举一下中间的断点,预处理一下前缀和就可以了 int main(){ // freopen("testdata.in& ...
- 【AtCoder】Tenka1 Programmer Contest 2019
Tenka1 Programmer Contest 2019 C - Stones 题面大意:有一个01序列,改变一个位置上的值花费1,问变成没有0在1右边的序列花费最少多少 直接枚举前i个都变成0即 ...
- Atcoder Tenka1 Programmer Contest D: IntegerotS 【思维题,位运算】
http://tenka1-2017.contest.atcoder.jp/tasks/tenka1_2017_d 给定N,K和A1...AN,B1...BN,选取若干个Ai使它们的或运算值小于等于K ...
- Atcoder Tenka1 Programmer Contest C C - 4/N
http://tenka1-2017.contest.atcoder.jp/tasks/tenka1_2017_c 我怀疑我是不是智障.... 本来一直的想法是能不能构造出答案,把N按奇偶分,偶数好办 ...
- Tenka1 Programmer Contest 2019
C:即要使前一部分为白色后一部分为黑色,枚举分割点前缀和计算答案取min即可. #include<bits/stdc++.h> using namespace std; #define l ...
- Tenka1 Programmer Contest 2019 D - Three Colors
Three Colors 思路:dp 设sum为所有边的总和 不能组成三角形的情况:某条边长度>=ceil(sum/2),可以用dp求出这种情况的方案数,然后用总方案数减去就可以求出答案. 注意 ...
随机推荐
- Servlet工作原理解析 《深入分析java web 技术内幕》第九章
参考关于servblet的相关文章 侧重概况:https://blog.csdn.net/levycc/article/details/50728921 ibm的相关:https://www.ibm. ...
- C#中Windows窗体工具栏
标签(Label):用于显示用户不能编辑的文本或图像.常使用它对窗体上的其他各种控件进行标注或说明. 文本框(TextBox):用于获取用户名输入的信息或向用户显示的文本. 组合框(ComboBox) ...
- 指定IP地址进行远程访问服务器设置方法(windows系统)
我们有很多服务器经常受到外界网络的干扰,入侵者们通过扫描3389端口爆破密码非法进入我们的服务器,这时,我们可以配置服务器IP 安全策略来限制一些IP访问,大大提高了服务器的安全. 实验环境: ...
- Ubuntu下crontab启动、重启、关闭命令
在Ubuntu14.04环境下,利用crontab编写shell脚本程序,定时执行php相关程序.在这个过程中,经常使用到的crontab命令如下: (root权限下) crontab启动:/etc/ ...
- Eclipse启动报错,解决办法
打开log日志,发现如下错误.原因是修改了计算机用户名导致 !SESSION Thu Aug 30 08:55:41 CST 2018 -------------------------------- ...
- Python标准库之ConfigParser模块
配置文件的格式 a) 配置文件中包含一个或多个 section, 每个 section 有自己的 option: b) section 用 [sect_name] 表示,每个option是一个键值对, ...
- Editplus5.0 注册码
EditPlus5.0注册码 注册名 Vovan 注册码 3AG46-JJ48E-CEACC-8E6EW-ECUAW EditPlus3.x注册码 注册名 linzhihui 注册码 5A2B6-69 ...
- pip install urllib3[secure] 报错 error: ffi.h: No such file or directory
解决 sudo apt-get install build-essential autoconf libtool pkg-config python-opengl python-imaging pyt ...
- 正益移动推出新产品正益工作 实现PaaS+SaaS新组合
近期,正益移动不仅将其AppCan 移动平台云化,还通过发布全新 SaaS 产品 -- 正益工作,这款集合了企业信息聚合.应用聚合.社交聚合为一体的企业移动综合门户,与 AppCan 平台一起实现了P ...
- uiautomator2 使用Python测试 Android应用
GitHub地址:https://github.com/openatx/uiautomator2 介绍 uiautomator2 是一个可以使用Python对Android设备进行UI自动化的库.其底 ...