AGC031 A~C
A题意:给定字符串s,求无重复字符子序列个数(子序列相同位置不同算不同)
在最后加一串a~z表示选了这些就是不选这个字符了,然后答案就是每次选每个字符位置的方案数的积
#include<iostream>
#include<cstdio>
using namespace std;
const int N=100005,mod=1e9+7;
int n;
char s[N];
long long ans=1,a[30];
int main()
{
scanf("%d%s",&n,s+1);
for(int i=1;i<=n;i++)
a[s[i]-'a']++;
for(int i=0;i<26;i++)
ans=ans*(a[i]+1)%mod;
printf("%lld\n",(ans-1+mod)%mod);
return 0;
}
B题意:给定一个颜色序列,可以操作0~inf次,每次操作选两个相同色把中间全涂成这个色
最后结果一定是若干个色块,设f[i]为涂完前i个并且i点保持原来颜色的方案数,枚举和i颜色相同的j表示涂这一段,f[i]=Σf[j-1],为避免重复计数,j-1和i必须不同色(保证色块最长),然后前缀和优化即可
#include<iostream>
#include<cstdio>
using namespace std;
const int N=200005,mod=1e9+7;
int n,a[N],f[N],s[N];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
f[0]=1,s[a[1]]=1;
for(int i=1;i<=n;i++)
{
// for(int j=1;j<=i;j++)
// if(a[i]==a[j]&&a[j-1]!=a[i])
// f[i]=(f[i]+f[j-1])%mod;
f[i]=s[a[i]];
if(a[i+1]!=a[i])
s[a[i+1]]=(s[a[i+1]]+f[i])%mod;
}
printf("%d\n",f[n]);
return 0;
}
C题意:给定n,s,t,求一个0~2^n-1的排列使得相邻两个数二进制下有且只有一个位不同,或者输出无解(格雷码那样)
首先st二进制下不同位有偶数个是无解,因为没走一位,和t二进制下不同位的数量的奇偶性就会变一次,最后第2^n-2个和t二进制下不同位的数量是偶数,不符合要求
然后证明其他的一定能构造出来,首先n=1是可行的,假设当先n=k都可以,那么证明n=k+1可以;
把st不同的最后一位抠掉(操作的时候是变成0),造出s't',设c为s'抠掉最后一位,d为c抠掉不同的最后一位,这样长为2^(n-1)的(s',c)和(d,t')就可以求了,递归实现
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,a,b;
void prin(int a,int b,int v)
{
if(a==b)
{
printf("%d ",a);
return;
}
int x=(a^b)&(-(a^b));
v^=x;
int y=v&(-v);
prin(a,a^y,v);
prin(a^y^x,b,v);
}
int main()
{
scanf("%d%d%d",&n,&a,&b);
if(__builtin_popcount(a^b)&1)
{
puts("YES");
prin(a,b,(1<<n)-1);
}
else
puts("NO");
return 0;
}
AGC031 A~C的更多相关文章
- AtCoder Grand Contest 031 (AGC031) D - A Sequence of Permutations 其他
原文链接https://www.cnblogs.com/zhouzhendong/p/AGC031D.html 前言 比赛的时候看到这题之后在草稿纸上写下的第一个式子就是 $$f(p,q) = pq^ ...
- agc031
T1 题意:给你一个串,求所有子序列个数,满足没有相同字符.1e5,2s. 解:考虑一个合法的子序列.其中每个字母的出现位置都有(出现次数)种选择.还可以不选,要 + 1. 然后乘起来就做完了.如果变 ...
- 【AtCoder】AGC031
A - Colorful Subsequence 答案是 \(\prod_{c = 'a'}^{'z'} (cnt[c] + 1)\) #include <bits/stdc++.h> # ...
- AtCoder Grand Contest 031 B - Reversi
https://atcoder.jp/contests/agc031/tasks/agc031_b B - Reversi Time Limit: 2 sec / Memory Limit: 1024 ...
- AtCoder Grand Contest 031 B - Reversi(DP)
B - Reversi 题目链接:https://atcoder.jp/contests/agc031/tasks/agc031_b 题意: 给出n个数,然后现在你可以对一段区间修改成相同的值,前提是 ...
- Atcoder AGC031C Differ By 1 Bit (构造、二进制)
哎呀这个C怎么比B还水....(我现在大概也就会做点这种水题了吧) 题目链接 https://atcoder.jp/contests/agc031/tasks/agc031_c 题目大意 符号约定: ...
- Atcoder AGC031B Reversi (DP计数)
简单的计数题.(总算做出一道AGC的B题了,然而这场比赛我忘记打了233333) 题目链接: https://atcoder.jp/contests/agc031/tasks/agc031_b 题意: ...
- AtCoder整理(持续更新中……)
做了那么久的atcoder觉得自己的题解发的很乱 给有想和我一起交流atcoder题目(或者指出我做法的很菜)(或者指责我为什么整场比赛只会抄题解)的同学一个索引的机会??? 于是写了个爬虫爬了下 A ...
- 【做题记录】AtCoder AGC做题记录
做一下AtCoder的AGC锻炼一下思维吧 目前已做题数: 75 总共题数: 239 每一场比赛后面的字母是做完的题,括号里是写完题解的题 AGC001: ABCDEF (DEF) AGC002: A ...
随机推荐
- leetcode Valid Palindrome C++&python 题解
题目描写叙述 Given a string, determine if it is a palindrome, considering only alphanumeric characters and ...
- [LeetCode][Java] Container With Most Water
题目: Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, a ...
- antd 如何让 Row 中的 Col 自动换行?
1.解决方案 在需要换行处,设置一个空的 Col // 空白(特殊情况处理) const empty = ( <Col md={6} sm={24}></Col> ); .
- github 新建远程仓库 及 删除远程仓库
一.新建远程仓库 1.点击 ' + ' 号 2.选择 ' new repository ' 3.填写信息 创建仓库 二.删除远程仓库 1.点击 ' Settings ' 按钮 2.滑动到最底部,点击 ...
- npm的常用配置
第一次使用需要初始化 npm init -y npm-tut { "requires": true, "lockfileVersion": 1, "d ...
- HDU 2601An easy problem-素数的运用,暴力求解
id=17433" target="_blank" style="color:blue; text-decoration:none">An ea ...
- UIPanGestureRecognizer上下左右滑动方向推断算法
CGFloat const gestureMinimumTranslation = 20.0; typedef enum :NSInteger { kCameraMoveDirectionNone, ...
- 把x指针指向的4个字节次序颠倒过来
举例:x指向的内存地址,其字节内容从低到高依次分别为c1,c2,c3,c4(Delphi读取一个integer的时候,结果是c4c3c2c1,其排列规则是"高高低低"),那么结果是 ...
- hadoop配置错误总结
2016-06-02 17:33:04,163 ERROR org.apache.hadoop.yarn.server.resourcemanager.ResourceManager: RECEIVE ...
- oracle 错误代码表
ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出 ...