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的更多相关文章

  1. Atcoder Tenka1 Programmer Contest 2019 题解

    link 题面真简洁 qaq C Stones 最终一定是连续一段 . 加上连续一段 # .直接枚举断点记录前缀和统计即可. #include<bits/stdc++.h> #define ...

  2. Atcoder Tenka1 Programmer Contest 2019 E - Polynomial Divisors

    题意: 给出一个多项式,问有多少个质数\(p\)使得\(p\;|\;f(x)\),不管\(x\)取何值 思路: 首先所有系数的\(gcd\)的质因子都是可以的. 再考虑一个结论,如果在\(\bmod ...

  3. Atcoder Tenka1 Programmer Contest 2019 D Three Colors

    题意: 有\(n\)个石头,每个石头有权值,可以给它们染'R', 'G', 'B'三种颜色,如下定义一种染色方案为合法方案: 所有石头都染上了一种颜色 令\(R, G, B\)为染了'R', 染了'G ...

  4. Atcoder Tenka1 Programmer Contest 2019题解

    传送门 \(C\ Stones\) 最后肯定形如左边一段白+右边一段黑,枚举一下中间的断点,预处理一下前缀和就可以了 int main(){ // freopen("testdata.in& ...

  5. 【AtCoder】Tenka1 Programmer Contest 2019

    Tenka1 Programmer Contest 2019 C - Stones 题面大意:有一个01序列,改变一个位置上的值花费1,问变成没有0在1右边的序列花费最少多少 直接枚举前i个都变成0即 ...

  6. Atcoder Tenka1 Programmer Contest D: IntegerotS 【思维题,位运算】

    http://tenka1-2017.contest.atcoder.jp/tasks/tenka1_2017_d 给定N,K和A1...AN,B1...BN,选取若干个Ai使它们的或运算值小于等于K ...

  7. Atcoder Tenka1 Programmer Contest C C - 4/N

    http://tenka1-2017.contest.atcoder.jp/tasks/tenka1_2017_c 我怀疑我是不是智障.... 本来一直的想法是能不能构造出答案,把N按奇偶分,偶数好办 ...

  8. Tenka1 Programmer Contest 2019

    C:即要使前一部分为白色后一部分为黑色,枚举分割点前缀和计算答案取min即可. #include<bits/stdc++.h> using namespace std; #define l ...

  9. Tenka1 Programmer Contest 2019 D - Three Colors

    Three Colors 思路:dp 设sum为所有边的总和 不能组成三角形的情况:某条边长度>=ceil(sum/2),可以用dp求出这种情况的方案数,然后用总方案数减去就可以求出答案. 注意 ...

随机推荐

  1. 第三篇 Html-label标签

    label标签 用户获取文字,使得关联的标签获取光标 <!DOCTYPE html> <html lang="en"> <head> <m ...

  2. nexus3.X环境搭建

    nexus3比以前的版本相比 多支持了管理不同的格式 比如Docker npm NuGet maven …等 下载编译好的二进制安装 wget https://sonatype-download.gl ...

  3. c#核心基础-委托

    委托是一个类型.C#中的委托是面向对象的,并且它是类型安全的 当创建委托实例的时候,创建的实例会包含一个调用列表,在调用列表中可以包含多个方法.每个方法称作一个调用实体.调用实体可以是静态方法,也可以 ...

  4. 高端内存映射之kmap_atomic固定映射--Linux内存管理(二十一)

    1 固定映射 1.1 数据结构 linux高端内存中的临时内存区为固定内存区的一部分, 对于固定内存在linux内核中有下面描述 x86 arm arm64 arch/x86/include/asm/ ...

  5. c/c++ 重载运算符 ==和!=的重载

    重载运算符 ==和!=的重载 问题:假如有一个类似于vector的类,这个类只能存放string,当有2个这个类的对象时,如何比较这2个对象. 自己重载==和!= 代码(重载==,!=) #inclu ...

  6. Linux Collection:网络配置

    PAS 缺少ifconfig 安装相应软件[不推荐],尽量使用 ip 命令 sudo apt install gnome-nettool 补充,显示IP地址: ip show address PAS ...

  7. 英语口语练习系列-C14-常用片语

    句子 1. Some ads are extremely persuasive and we find we buy products we don't really need. 有一些广告非常有说服 ...

  8. B

    baababblebabblerbabebabelbaboonbabybabyhoodBabylonBabylonianbacchanalbacchanalianbachelorbacillusbac ...

  9. c++中 . 和 -> 的区别是什么?

    主要用于访问类的成员,->主要用于类类型的指针访问类的成员,而.运算符,主要用于类类型的对象访问类的成员. 例如: class A { public :int a } A ma; A *p=&a ...

  10. FutureTask并发详解,通俗易懂

    最近做项目,使用到了FutureTask和主线程并发,应用到实际中还是挺实用的,特在此总结一下. 有不对之处,忘各位多多指出. package com.demo; import java.util.c ...