A.

/*
发现每次反转或者消除都会减少一段0
当0只有一段时只能消除
这样判断一下就行 */ #include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<set>
#include<map>
#define M 300010
#define ll long long using namespace std;
int read() {
int nm = , f = ;
char c = getchar();
for(; !isdigit(c); c = getchar()) if(c == '-') f = -;
for(; isdigit(c); c = getchar()) nm = nm * + c - '';
return nm * f;
}
ll n,x,y;
char s[M];
int main() {
n = read(), x = read(), y = read();
scanf("%s", s + );
int len = strlen(s + );
s[] = '?';
ll tot = ;
for(int i = ; i <= len; i++) if(s[i] != s[i - ] && s[i] == '') tot++;
if(tot == ) return puts("");
cout << min(tot * y, tot * x - x + y);
return ;
}

B.

/*
可能这种题是打表克星
小数据部分没有规律 数据大了有规律 //一个显然的结论 ,如果数字总数确定的话我们求 1, 5, 10, 50 加起来的不同和的个数相当于求0, 4, 9, 49 的
好吧打打表就出来了
对于前12的数据 直接暴力 ,后面的线性增加  */ #include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<set>
#include<map>
#define M 30
#define ll long long using namespace std;
int read() {
int nm = , f = ;
char c = getchar();
for(; !isdigit(c); c = getchar()) if(c == '-') f = -;
for(; isdigit(c); c = getchar()) nm = nm * + c - '';
return nm * f;
}
const ll dx[]={,,,,,,,,,,,,,,,};
int main() {
ll n = read();
if(n <= ) cout << dx[n];
else cout << dx[] + (n - ) * ;
return ;
}

C.

显然同色的一行在哪一行对答案贡献是一样的,于是我们可以直接得出容斥的式子

/*
difficult 看题解啦 */ #include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<set>
#include<map>
#define M 1231231
#define ll long long
const int mod = ;
using namespace std;
int read() {
int nm = , f = ;
char c = getchar();
for(; !isdigit(c); c = getchar()) if(c == '-') f = -;
for(; isdigit(c); c = getchar()) nm = nm * + c - '';
return nm * f;
}
ll poww(ll a, ll b) {
ll as = , tmp = a;
for(; b; b >>= , tmp = tmp * tmp % mod) if(b & ) as = as * tmp % mod;
return as;
}
ll c[M]; inline ll ni(ll a) {
return poww(a, mod - );
}
void shai(ll n) {
c[] = ;
for(int i = ; i <= n; i++) c[i] = c[i - ] * (n - i + ) % mod * ni(i) % mod;
}
int main() {
ll n = read();
ll ans = ;
shai(n);
for(int i = , j = ; i <= n; i++, j = -j) ans += j * c[i] % mod * poww(, (n - i) * n + i) % mod, ans %= mod;
ans = ans * % mod;
for(int i = , j = -; i < n; i++, j = -j) ans += 3ll * c[i] * j % mod * (poww(1ll - poww(, i), n) - poww(-1ll * poww(3ll, i), n)) % mod, ans %= mod;
cout << (ans + mod) % mod;
return ;
}

Codeforces Round #493 (Div. 1)的更多相关文章

  1. Codeforces Round #493 (Div 2) (A~E)

    目录 Codeforces 998 A.Balloons B.Cutting C.Convert to Ones D.Roman Digits E.Sky Full of Stars(容斥 计数) C ...

  2. Cutting Codeforces Round #493 (Div. 2)

    Cutting There are a lot of things which could be cut — trees, paper, “the rope”. In this problem you ...

  3. Codeforces Round #493 (Div. 2)

    C - Convert to Ones 给你一个01串 x是反转任意子串的代价 y是将子串全部取相反的代价 问全部变成1的最小代价 两种可能 一种把1全部放到一边 然后把剩下的0变成1  要么把所有的 ...

  4. Codeforces Round #493 (Div. 2)D. Roman Digits 第一道打表找规律题目

    D. Roman Digits time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  5. 【Codeforces Round #493 (Div. 2) B】Cutting

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 显然只有在前i个位置奇数偶数出现次数都相同的地方才能切. (且不管前面怎么切,这里都能切的. 那么就相当于有n个物品,每个物品的代价 ...

  6. Codeforces Round #493 (Div. 2) A. Balloons 贪心水题

    由于是输出任意一组解,可以将价值从小到大进行排序,第一个人只选第一个,第二个人选其余的.再比较一下第一个人选的元素和第二个人所选元素和是否相等即可.由于已将所有元素价值从小到大排过序,这样可以保证在有 ...

  7. Codeforces Round #493 (Div. 1) B. Roman Digits 打表找规律

    题意: 我们在研究罗马数字.罗马数字只有4个字符,I,V,X,L分别代表1,5,10,100.一个罗马数字的值为该数字包含的字符代表数字的和,而与字符的顺序无关.例如XXXV=35,IXI=12. 现 ...

  8. Codeforces Round #493 (Div. 2) C. Convert to Ones 乱搞_构造_好题

    题意: 给你一个长度为 nnn 的 010101串 ,你有两种操作: 1.将一个子串翻转,花费 XXX 2.将一个子串中的0变成1,1变成0,花费 YYY 求你将这个01串变成全是1的串的最少花费. ...

  9. Codeforces Round #493 (Div. 2) B. Cutting 前缀和优化_动归水题

    不解释,题目过水 Code: #include<cstdio> #include<cmath> #include<algorithm> using namespac ...

随机推荐

  1. vue监听路由变化

    使用 watch,观察路由,一旦发生变化便重新获取数据 watch: { // 如果路由有变化,会再次执行该方法 '$route': 'fetchData' }

  2. Go语言加解密--AES简单实践

    AES加解密的简单实现,代码如下. package main import ( "crypto/aes" "crypto/cipher" "encod ...

  3. python slave status 2

    #!/usr/bin/env python import MySQLdbimport contextlib @contextlib.contextmanagerdef mysql(Host,Port, ...

  4. kali 创建用户

    root登录 adduser 用户名 passwd 用户名

  5. mysql++ 3.2.3 源码安装

    https://tangentsoft.com/mysqlpp/home 下载 wget https://tangentsoft.com/mysqlpp/releases/mysql++-3.2.3. ...

  6. 黄聪:C#“多线程线程间操作无效: 从不是创建控件的线程访问它。”,跨线程修改控件属性解决方案

    解决方案就是使用代理,在代理中调用主线程的方法来控制控件 /// <summary> /// 声明代理 /// </summary> delegate void SetText ...

  7. eclipse 修改 项目的git地址

    在项目的隐藏目录.git 文件夹下面 修改config配置文件 [core] symlinks = false repositoryformatversion = 0 filemode = false ...

  8. leedcode_贪心算法系列

    861. 翻转矩阵后的得分 思路: 行首的权值最大,故首先将其置1; 每列由于权值相同,故只需要将0多于1的情况反转即可 763. 划分字母区间 思路: 1.计算每个字母的最右边界下标,并记录到新数组 ...

  9. Easyloggingpp的使用

    对于有开发经验的程序员来说,记录程序执行日志是一件必不可少的事情.通过查看和分析日志信息,不仅可以有效地帮助我们调试程序,而且当程序正式发布运行之后,更是可以帮助我们快速.准确地定位问题.在现在这个开 ...

  10. 记使用vue-awesome-swiper遇到的一些问题

    一.vue-awesome-swiper的使用   1.在项目中全局引用  import VueAwesomeSwiper from 'vue-awesome-swiper' // require s ...