这个应该是第一场有英文的atcoder吧??不过题解却没有英文的。。。
从前往后慢慢做。。。

C こだわり者いろはちゃん / Iroha's Obsession

数据范围这么小,直接暴力

#include <bits/stdc++.h>
using namespace std;bool rec[10];bool check(int num)
{while(num){if(rec[num%10]) return false;num /= 10;}return true;
}int main()
{int n,k,num;cin >> n >> k;for(int i = 0; i < k; ++i){cin >> num;rec[num] = true;}while(true){if(check(n)){cout << n << endl;break;}++n;}return 0;
}

D - いろはちゃんとマス目 / Iroha and a Grid

在H * W的矩阵中,左下角有一个A * B的矩阵不能走,求左上角走到右下角方法数。
建议一道题: 51nod 1486 大大走格子
这题容斥原理,比上边那个题简单。没有障碍时,总方法数是C(H+W-2,H-1)总方法数
求出来所有走过障碍处的走法, 用总的减掉就好了。
走过障碍处的方法数就是走到A*B矩阵上方一行的时候,选择向下走,就是非法的。减掉这些就好。

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MAXN = 100010;
const LL mod = 1e9+7;
typedef long long LL;
LL H,W,A,B;
LL fac[MAXN*2],inv[MAXN*2];LL modPow(LL a, LL b)
{LL ret = 1;while(b){if(b&1) ret = ret*a%mod;a = a*a%mod;b >>= 1;}return ret;
}void init()
{fac[0] = 1;inv[0] = 1;for(LL i = 1; i <= H+W; ++i)fac[i] = fac[i-1]*i%mod;inv[H+W] = modPow(fac[H+W],mod-2);for(LL i = H+W-1; i >= 1; --i)inv[i] = (inv[i+1]*(i+1))%mod;
}LL C(LL n, LL m)
{LL ret = (fac[n]*inv[m]%mod)*inv[n-m]%mod;return ret;
}int main()
{cin >> H >> W >> A >> B;init();LL res = C(H+W-2,H-1);LL minu = 0;for(int i = 1; i <= B; ++i)minu = (minu + C(H-A+i-2, H-A-1)*C(A+W-i+1-2,A-1)%mod)%mod;cout << ((res-minu)%mod+mod)%mod << endl;return 0;
}

E - 和風いろはちゃん / Iroha and Haiku

没有找到英文题解和中文题解。。。。。
这个题,感觉有点难。起初思路是算组合数,毕竟数据范围很小,算出1-7的拆分数的每种情况,然后算组合数和排列呗。
算了好久,不知道哪里错了,看了http://imulan.hatenablog.jp/entry/2016/07/24/233524这个题解,才发现有地方重复计算了。
然后又看了https://kimiyuki.net/blog/2016/07/23/arc-058-e/这个题解,还有官方题解,理解的模模糊糊。
比如说1用1表示,2用10表示,3用100表示,即i用(1<<(i-1))表示。
在这里是计算出不合法的数量,总数量-不合法数量=结果。
比如说要的X,Y,Z是5,7,5,表示这个结果的状态就是10000100000010000。
然后枚举每种情况。。。
还是有点懵。。。路过的大佬求解答。。
感觉日语翻译成英语比翻译成汉语读着顺一点。。

#include <cstdio>
#include <vector>
#include <iostream>
typedef long long ll;
using namespace std;
const int mod = 1e9+7;
ll dp[41][1<<18];
int main()
{int n, x, y, z;scanf("%d%d%d%d", &n, &x, &y, &z);int l = x+y+z-1;int mask = (1<<l)-1;int limit = (1<<l);int ok = (1 << (x+y+z-1)) | (1 << (y+z-1)) | (1 << (z-1));dp[0][0] = 1;for(int i = 0; i < n; ++i){for(int s = 0; s < limit; ++s){for(int a = 1; a < 11; ++a){int t = (s << a) | (1 << (a-1));if ((ok&t) == ok) continue;//旧的状态向新的状态转移(dp[i+1][t & mask] += dp[i][s]) %= mod;}}}ll ans = 1;for(int i = 0; i < n; ++i)ans = ans * 10 % mod;//去掉每种状态的不合法数量for(int s = 0; s < limit; ++s)ans -= dp[n][s];ans = (ans % mod + mod) % mod;printf("%lld\n", ans);return 0;
}

F - 文字列大好きいろはちゃん / Iroha Loves Strings

------不会

转载于:https://www.cnblogs.com/guoyongheng/p/7841048.html

AtCoder Regular Contest 058相关推荐

  1. AtCoder Regular Contest 065

    AtCoder Regular Contest 065 C - Daydream Score : 300300300 points 倒着来就行了,正着来会产生歧义匹配,dreamer,dreamdre ...

  2. AtCoder Regular Contest 100 D - Equal Cut 思维 + 前缀和

    传送门 文章目录 题意: 思路: 题意: 给你一个数组aaa,你要将其分成四份,让这四份中和的最大值−-−最小值最小,输出这个最小值. n≤2e5,ai≤1e9n\le2e5,a_i\le1e9n≤2 ...

  3. AtCoder Regular Contest 100 E - Or Plus Max Sos dp

    传送门 文章目录 题意: 思路: 题意: 给你一个长度为2n2^n2n的数组,让你对于所有的1≤k≤2n−11\le k\le 2^n-11≤k≤2n−1求最大的ai+aj,0≤i<j≤2n−1 ...

  4. AtCoder Regular Contest 061 E - Snuke‘s Subway Trip(建图 + dijkstra最短路 / 0/1bfs / 并查集)

    AtCoder Regular Contest 061 E - Snuke's Subway Trip problem 洛谷翻译 my idea 最近一直在做网络流,所以一读这题后,我就想到了最小费用 ...

  5. NOMURA Programming Contest 2021(AtCoder Regular Contest 121)

    文章目录 A - 2nd Greatest Distance B - RGB Matching C - Odd Even Sort D - 1 or 2 E - Directed Tree F - L ...

  6. AtCoder题解——AtCoder Regular Contest 107——B - Quadruple

    题目相关 题目链接 AtCoder Regular Contest 107 B 题,https://atcoder.jp/contests/arc107/tasks/arc107_b. Problem ...

  7. AtCoder Regular Contest 071 D - 井井井 / ###

    题目:http://arc071.contest.atcoder.jp/tasks/arc071_b 题意: 有一个二维的平面,给你xn根竖线和ym根横线,问这些线围成的长方形(正方形)的面积和(要求 ...

  8. AtCoder Regular Contest 062 E - AtCoDeerくんと立方体づくり / Building Cubes with AtCoDeer

    题目传送门:https://arc062.contest.atcoder.jp/tasks/arc062_c 题目大意: 给你\(N\)块正方形木板,每块木板四角有四种颜色(可以相同),木板中央有编号 ...

  9. AtCoder Regular Contest 120 C - Swaps 2 线段树模拟

    传送门 文章目录 题意: 思路: 题意: 给你两个序列a,ba,ba,b,每次可以执行一个操作:将a[i]a[i]a[i]与a[i+1]a[i+1]a[i+1]交换,且让交换后的a[i]+1,a[i+ ...

最新文章

  1. 【专访】PP租车创业故事二:为什么要创业?
  2. 堆空间跟栈空间的区分
  3. e语言html显示框,html marguee标签
  4. MySQL(MariaDB)之参数详解(-)
  5. 如何查看spark消耗的内存_Spark优化(三)----数据本地化及内存调优
  6. arduino 水位传感器_云南可信赖的威卡压力传感器哪里有
  7. android surfaceflinger 代码,android surfaceflinger测试程序
  8. 电脑安装python后开不了机_ubuntu 安装python3.6后,terminal终端打不开问题
  9. watch监控,对比新值和旧值做出相应判断
  10. ASP连接11种数据库的常用语法
  11. 零元学Expression Blend 4 - Chapter 7 什麽?影片不再是印象中的方框框!!!看Blend 4如何把影片镶入字里...
  12. lintcode:线段树的构造
  13. Gamma 函数与exponential power distribution (指数幂分布)
  14. ssh之雇员管理系统(4)-改进的hibernate测试
  15. [论文笔记]Augmented SBERT: Data Augmentation Method for Improving Bi-Encoders for Pairwise Sentence
  16. Docker教程小白实操入门(14)--如何使用CMD和ENTRYPOINT指令指定容器启动时要运行的命令
  17. android 开源病毒库,ClamAV+ClamTK,开源杀毒软件
  18. mysql创建数据库sql语句
  19. 手机传感器数据导出_旧手机先别扔丨简单改造秒变黑科技监测器
  20. 文件导入工具类--利用反射自动转换为list对象

热门文章

  1. 姚期智:人工智能存在三大技术瓶颈
  2. 动态规划(一)入门例子
  3. 在控制台输入一个整数,根据整数打印一个矩形 (Python)
  4. sklearn的基本用法:分类与回归
  5. TextView之二:常用属性
  6. Spark入门 - History Server配置使用
  7. 离群点(oulier)挖掘详解
  8. java终止线程的三种方法
  9. Hbase总结(四)- Hbase与传统数据库的区别
  10. 设置表字段大小写敏感