AtCoder Grand Contest 017
noi前橙名计划失败。全程搞C而gg……
A - Biscuits
题意:背包,求价值为奇/偶的方案数。
#include<cstdio>
#include<queue>
#include<algorithm>
#define ld long double
#define MN 21000000
using namespace std; int read_p,read_ca;
inline int read(){
read_p=;read_ca=getchar();
while(read_ca<''||read_ca>'') read_ca=getchar();
while(read_ca>=''&&read_ca<='') read_p=read_p*+read_ca-,read_ca=getchar();
return read_p;
}
int n,p,a;
long long mmh[];
int main(){
mmh[]=;
n=read();p=read();
while(n--){
a=read()&;
if (a&){
mmh[]=mmh[]=mmh[]+mmh[];
}else mmh[]<<=,mmh[]<<=;
}
printf("%lld\n",mmh[p]);
}
B - Moderate Differences
题意:询问是否可以把B-A表示成n-1个绝对值在C和D之间的数的和。
#include<cstdio>
#include<queue>
#include<algorithm>
#define ld long double
#define MN 21000000
using namespace std; int read_p,read_ca;
inline int read(){
read_p=;read_ca=getchar();
while(read_ca<''||read_ca>'') read_ca=getchar();
while(read_ca>=''&&read_ca<='') read_p=read_p*+read_ca-,read_ca=getchar();
return read_p;
}
long long n,a,b,c,d,w;
int main(){
scanf("%lld%lld%lld%lld%lld",&n,&a,&b,&c,&d);
b-=a;n--;
for (int i=;i<=n;i++){
w=-d*i+c*(n-i);
if (b-w<=(d-c)*n&&b>=w) return /*printf("%d %lld %lld %lld\n",i,w,n,b-w),*/puts("YES"),;
}
puts("NO");
}
C - Snuke and Spells
题意:定义一种操作为当序列长度为k时把所有等于k的元素删去,问将给定序列至少修改多少元素,序列能进行不断操作后为空。
题解:有一个结论:如果等于 $i$ 的数有$N_{i}$个,那么看成区间$[i-N_{i}+1,i]$,未被区间覆盖的位置数量即为答案。
#include<cstdio>
#include<algorithm>
#define MN 210000
using namespace std; int n,m,x,y,c[MN<<],t[MN],a[MN],mmh=;
int main(){
scanf("%d%d",&n,&m);
for (int i=;i<=n;i++){
scanf("%d",&a[i]);
if (a[i]-t[a[i]]>) mmh+=(c[a[i]-t[a[i]]]++)==;
t[a[i]]++;
}
while (m--){
scanf("%d%d",&x,&y);
t[a[x]]--;
if (a[x]-t[a[x]]>)mmh-=(--c[a[x]-t[a[x]]])==;
a[x]=y;
if (a[x]-t[a[x]]>)mmh+=(c[a[x]-t[a[x]]]++)==;
t[a[x]]++;
printf("%d\n",n-mmh);
}
}
D - Game on Tree
题意:裸删边游戏。
题解:大佬论文
#include<cstdio>
#include<queue>
#include<algorithm>
#define ld long double
#define MN 210000
using namespace std; int read_p,read_ca;
inline int read(){
read_p=;read_ca=getchar();
while(read_ca<''||read_ca>'') read_ca=getchar();
while(read_ca>=''&&read_ca<='') read_p=read_p*+read_ca-,read_ca=getchar();
return read_p;
}
struct na{int y,ne;}b[MN];
int n,m,l[MN],num=,x,y,s[MN];
inline void in(int x,int y){
b[++num].y=y;b[num].ne=l[x];l[x]=num;
}
void dfs(int x,int f){
int u=;s[x]=;
for (int i=l[x];i;i=b[i].ne)
if (b[i].y!=f){
dfs(b[i].y,x);u^=s[b[i].y]+;
} s[x]=u;
/*for (int i=l[x];i;i=b[i].ne)
if (b[i].y!=f){
if ((u^s[b[i].y])==0) s[x]=1;
}*/
//printf("%d %d\n",x,s[x]);
}
int main(){
n=read();
for (int i=;i<n;i++) x=read(),y=read(),in(x,y),in(y,x); dfs(,);
puts(s[]?"Alice":"Bob");
}
E - Jigsaw
题意:问能否把拼图排成一排使得相邻拼图契合。
题解:把拼图看成边,其两段信息作为点连边然后并查集。
#include<cstdio>
#include<algorithm>
#define NO return puts("NO"),0
using namespace std; int n,m,f[],a,b,c,d,x,y,D[],bo[],C[];
int gf(int x){return x==f[x]?x:f[x]=gf(f[x]);}
int main(){
scanf("%d%d",&n,&m); for (int i=;i<;i++) f[i]=i;
while (n--){
scanf("%d%d%d%d",&a,&b,&c,&d);
if (c==) x=a;else x=-c;x+=;
if (d==) y=-b;else y=d;y+=;
f[gf(x)]=gf(y);
D[x]++;D[y]--;bo[x]=;
}
for (int i=;i<;i++) if (D[i]>) NO;
for (int i=;i<;i++) if (D[i]<) NO;
for (int i=;i<;i++)
if (bo[gf(i)]|=bo[i],D[i]) C[f[i]]=;
for (int i=;i<;i++)
if (f[i]==i&&!C[i]&&bo[i]) NO;
puts("YES");
}
F - Zigzag
题意:在$\frac{n*(n+1)}{2}$三角形上从顶到底画m条可重合,不可相交的线,某些线的部分已经确定,求方案数,、
题解:dp[i][j]表示考虑了前$i$条线,第$i$条线的位置状态为$j$的方案数。转移起来有点麻烦,窝看并抄了dalao的代码,实现得非常优雅,大约是从高往低考虑往左走的线可以向往右的线转移。
#include<cstdio>
#include<algorithm>
#define MN 1000
using namespace std; const int MOD=1e9+;
int n,m,k,le[MN],ri[MN],x,y,z,mmh[<<],MMH=;
inline void M(int &x){while(x>=MOD)x-=MOD;}
int lowbit(int x) { return x & -x; }
int main(){
scanf("%d%d%d",&n,&m,&k);n--;
for (int i=;i<=m;i++) le[i]=(<<n)-,ri[i]=;
while(k--){
scanf("%d%d%d",&x,&y,&z);y--;
if (z==) le[x]^=<<y;else ri[x]^=<<y;
}
mmh[]=;
for (int i=;i<=m;i++){
for (int k=;k<n;k++)
for (int j=;j<(<<n);j++) if (~j>>k&)
M(mmh[j+(<<k)-lowbit(j&~((<<k)-))]+=mmh[j]);
for (int j=;j<(<<n);j++)
if (!((j&ri[i])==ri[i]&&(j&le[i])==j)) mmh[j]=;
}
for (int j=;j<(<<n);j++) M(MMH+=mmh[j]);
printf("%d\n",MMH);
}
AtCoder Grand Contest 017的更多相关文章
- AtCoder Grand Contest 017 F - Zigzag
		
题目传送门:https://agc017.contest.atcoder.jp/tasks/agc017_f 题目大意: 找出\(m\)个长度为\(n\)的二进制数,定义两个二进制数的大小关系如下:若 ...
 - AtCoder Grand Contest 017 (VP)
		
contest link Official Editorial 比赛体验--之前做题的时候感觉 AtCoder 挺快的,现在打了VP之后发现还是会挂的--而且不是加载缓慢或者载不出来,直接给你一个无法 ...
 - AtCoder Grand Contest 017 题解
		
A - Biscuits 题目: 给出 \(n\) 个物品,每个物品有一个权值. 问有多少种选取方式使得物品权值之和 \(\bmod\space 2\) 为 \(p\). \(n \leq 50\) ...
 - AtCoder Grand Contest 017 迟到记
		
晚上去操场上浪. 回来以后看到好几个人开着 \(AtCoder\) 在打代码. ... ... 今天有 \(AtCoder\) 比赛 ? 管它呢, \(Kito\) 在切西瓜,先吃西瓜... 然后看 ...
 - 题解——ATCoder AtCoder Grand Contest 017 B - Moderate Differences(数学,构造)
		
题面 B - Moderate Differences Time limit : 2sec / Memory limit : 256MB Score : 400 points Problem Stat ...
 - AtCoder Grand Contest 017 B
		
B - Moderate Differences Time limit : 2sec / Memory limit : 256MB Score : 400 points Problem Stateme ...
 - AtCoder Grand Contest 017 A
		
Problem Statement There are N bags of biscuits. The i-th bag contains Ai biscuits. Takaki will selec ...
 - AtCoder Grand Contest 017题解
		
传送门 \(A\) 直接转移就是了 typedef long long ll; const int N=55; ll f[N][2];int a[N],n,p; int main(){ scanf(& ...
 - AtCoder Grand Contest 012
		
AtCoder Grand Contest 012 A - AtCoder Group Contest 翻译 有\(3n\)个人,每一个人有一个强大值(看我的假翻译),每三个人可以分成一组,一组的强大 ...
 
随机推荐
- 2. whoami,常用包,调优selinux,七种启动模式,系统开机服务
			
1 whoami 查看当前登录用户 useradd zhang 增加用户 passwd zhang su - zhang 切换用户 e ...
 - Hibernate--使用xml配置映射关系
			
写在前面: 配置实体类与数据库的映射关系,有两种方式: 1.使用*.hbm.xml 2.使用@注解 二:xml的配置方式: eg:员工的xml配置文件: <?xml version=" ...
 - 【java设计模式】【创建模式Creational Pattern】建造模式Builder Pattern
			
package com.tn.pattern; public class Client { public static void main(String[] args) { Director dire ...
 - JAVA多线程统计日志计数时的线程安全及效率问题
			
最近工作上遇到一个需求:需要根据nginx日志去统计每个域名的qps(Query Per Second,每秒查询率)数据. 解决了日志读取等问题之后,为了写一个尽可能高效的统计模块,我决定用多线程去计 ...
 - PHP中public,private,protected,abstract等关键字用法详解
			
PHP中常用的关键字 在PHP中包含了很多对函数和类进行限制的关键字,常用的通常有abstract,final,interface,public,protected,private,static等等, ...
 - HBase0.98使用ReplicationAdmin管理集群同步
			
公司datalink平台负责从各种数据源读取数据并同步到其他的同步或者异构数据源,最近增加的HBase的reader利用到了Hbase的Replication特性. 正常情况下,我们配置HBase的R ...
 - C# 命名空间和程序集
			
一.命名空间 1.通过使用using关键字引入命名空间,减少代码量 命名空间对相关的类型进行逻辑分组,通过命名空间能快速的定位到相关的类型,例如:在System.IO命名空间下,定义了所有I/O操作的 ...
 - K:java 断言 assert 初步使用:断言开启、断言使用
			
@转自天地悠悠的个人博客 主要总结一下在eclipse中如何使用断言. (一)首先明确: java断言Assert是jdk1.4引入的. jvm 断言默认是关闭的. 断言是可以局部开启的,如:父类禁止 ...
 - 微信小程序生成带参数的二维码 小程序二维码
			
我是用php写的 先按照要求生成accesstoken $tokenUrl="https://api.weixin.qq.com/cgi-bin/token?grant_type=clien ...
 - PHP重要知识点
			
1 获取文件名或目录路径 getcwd() :显示是 在哪个文件里调用此文件 的目录 __DIR__ :当前内容写在哪个文件就显示这个文件目录 __FILE__ : 当前内容写在哪个文件就显示这个文件 ...