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求出这种情况的方案数,然后用总方案数减去就可以求出答案. 注意 ...
随机推荐
- eclipse开发创建web项目
1.打开eclipse,界面如下: 2.首先配置tomcat,操作:Windows--->perferences 如下: 3.操作:server--->Runtime Environmen ...
- macos 安装sublime text 3,如何安装插件
1. 上面的代码如下: import urllib.request,os,hashlib; h = '2915d1851351e5ee549c20394736b442' + '8bc59f460fa1 ...
- 启动期间的内存管理之引导分配器bootmem--Linux内存管理(十)
在内存管理的上下文中, 初始化(initialization)可以有多种含义. 在许多CPU上, 必须显式设置适用于Linux内核的内存模型. 例如在x86_32上需要切换到保护模式, 然后内核才能检 ...
- Chrome浏览器清除缓存
1.功能列表点击历史记录 可以是按时间清除 自动清除: 使用谷歌的无痕模式可以自动清除缓存
- maven-assembly-plugin打包可执行的jar包
pom.xml添加 <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</a ...
- OpenResty:通过 Lua 扩展 NGINX 实现的可伸缩的 Web 平台
关于 http://openresty.org/cn/about.html 这个开源 Web 平台主要由章亦春(agentzh)维护.在 2011 年之前曾由淘宝网赞助,在后来的 2012 ~ 201 ...
- fastjson List转JSONArray以及JSONArray转List
1.fastjson List转JSONArrayList<T> list = new ArrayList<T>();JSONArray array= JSONArray.p ...
- 极光推送JAVA代码示例
一. 准备工作 1. 登录极光推送官网https://www.jpush.cn/,注册账号并登录 2. 创建应用 创建应用过程,详见百度经验:http://jingyan.baidu.com/arti ...
- 用python实现的一个自动聊天的机器人
因为之前想过 如果每天早上微信能够发送天气预报给我,给我老婆多好,然后就动手看网上的教程做了一个可以定时发送天气预报的程序, 最近又想到折腾,做了一个更加详细的版本.但是需要主动操作 具体操作看图. ...
- 程序员修神之路--🤠分布式高并发下Actor模型如此优秀🤠
写在开始 一般来说有两种策略用来在并发线程中进行通信:共享数据和消息传递.使用共享数据方式的并发编程面临的最大的一个问题就是数据条件竞争.处理各种锁的问题是让人十分头痛的一件事. 传统多数流行的语言并 ...