codeforces 1097 Hello 2019】的更多相关文章

又回来了.. A - Gennady and a Card Game 好像没什么可说的了. #include<bits/stdc++.h> using namespace std; char gc() { static char buf[100000],*p1,*p2; return (p1==p2)&&(p2=(p1=buf)+fread(buf,1,100000,stdin))?EOF:*p1++; return getchar(); } template<class…
题意:现在有一个数写在黑板上,它以等概率转化为它的一个约数,可以是1,问经过k次转化后这个数的期望值 题解:如果这个数是一个素数的n次方,那么显然可以用动态规划来求这个数的答案,否则的话,就对每个素因数求答案,再相乘 参考博客:https://www.cnblogs.com/birchtree/p/10234203.html ac代码: #include<bits/stdc++.h> #define ll long long #define pa pair<int,int> usi…
题目链接 一道好题. 题意:给定一棵\(n\)个点的树,求: \[\sum_{S\subseteq \{1,2,\dots,n\}}f(S)^k\] 其中\(f(S)\)代表用树边将点集\(S\)连通需要的最少边数.\(n\leq10^5\),\(k\leq 200\),对\(10^9+7\)取模. 吐槽:比赛的时候看到这道题想到的是组合数做法,然而是\(O(nk^2)\)的,但可以用任意模数\(\text{NTT}\)优化到\(O(nk\log k)\),当然由于常数巨大结果可想而知.可以说是…
传送门 除了操作 \(3\) 都可以 \(bitset\) 现在要维护 \[C_i=\sum_{gcd(j,k)=i}A_jB_k\] 类比 \(FWT\),只要求出 \(A'_i=\sum_{i|d}A_d\) 就可以直接按位相乘了 求答案就是莫比乌斯反演,\(A_i=\sum_{i|d}\mu(\frac{d}{i})A'_i\) 把每个数字的 \(\mu\) 的 \(bitset\) 预处理出来,乘法就是 \(and\) 最后用 \(count\) 统计答案 # include <bits…
构造题好评,虽然这把崩了 原题解 A 题意 二人游戏,一个人有 \(k_1\) 张牌,另一个人 \(k_2\) 张,满足 \(2\le k_1+k_2=n\le 100\),每张牌上有一个数,保证所有的牌上的数互不相同且在 \([1,n]\) 内 每回合双方都会出一张牌,牌上数小的一方的牌会给牌上数大的一方 拿到所有 \(n\) 张牌的一方赢得比赛 求两人都采取最优策略的情况下谁会赢 多组数据,数据组数 \(t\le100\) 做法:贪心 设 \(a\) 和 \(b\) 为双方的最大数 显然如果…
目录 Codeforces 1097 D.Makoto and a Blackboard(DP 期望) E.Egor and an RPG game(思路 LIS Dilworth定理) F.Alex and a TV Show(bitset) G.Vladislav and a Great Legend(斯特林数 树形DP) H. Codeforces 1097 比赛链接 咕咕了一个月...终于闲的没事想起补了... ABC代码没在本地(而且懒),就不放了... (然而当时C题FST了真是想.…
Codeforces Round #517 (Div. 2, based on Technocup 2019 Elimination Round 2) #include <bits/stdc++.h> using namespace std; int n,m,k; ; int main() { cin>>n>>m>>k; ;i<=k-;++i) { sum+=(n+(m-))*-(i)*; } cout<<sum<<endl;…
A. Right-Left Cipher time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Polycarp loves ciphers. He has invented his own cipher called Right-Left. Right-Left cipher is used for strings. To encr…
Codeforces Round 1120 这场比赛做了\(A\).\(C\)两题,排名\(73\). \(A\)题其实过的有点莫名其妙...就是我感觉好像能找到一个反例(现在发现我的算法是对的... \(C\)题的心路历程: 第一眼:这不后缀自动机吗??? 算了滚去写哈希表乱搞吧... 嗯怎么\(mle\)了???算了把数组改成\(vector\)吧... 嗯怎么又\(wa\)了???算了我还是老老实实去敲SAM吧... 嗯???\(pretest\ passed\)??!! 所以就交了\(3…
Hello 2019 手速场qwq 反正EGH太神仙了啊.jpg 考试的时候不会啊.jpg A 暴力.jpg #include <cstdio> #include <algorithm> #include <cmath> #include <cstring> #include <cstdlib> #include <queue> #include <iostream> #include <bitset> usi…
http://codeforces.com/contest/1072/problem/D bfs 走1步的最佳状态 -> 走2步的最佳状态 -> …… #include <bits/stdc++.h> using namespace std; #define ll long long #define minv 1e-6 #define inf 1e9 #define pi 3.1415926536 #define nl 2.7182818284 ; ; struct node {…
https://codeforces.com/contest/1072/problem/D 题意 给你一个n*n充满小写字母的矩阵,你可以更改任意k个格子的字符,然后输出字典序最小的从[1,1]到[n,n]的路径(1<=n<=2000) 思路 我的 定义dp[i][j]为从[1,1]到[i,j]字符串最小的字符串,然后枚举所有i-1+j-1+1<=k的点,然后字符串连接比较,代表更改前面i,j个字符 这种思路有两个问题,如何处理出从[i,j]到[n,n]的最小字典序字符串,第二假如i+j…
传送门:http://codeforces.com/contest/1087/problem/C C. Connect Three time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output The Squareland national forest is divided into equal 1×11×1 square plots al…
任意门:http://codeforces.com/contest/1058/problem/C C. Vasya and Golden Ticket time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Recently Vasya found a golden ticket — a sequence which consists…
A - Infinite Sequence  CodeForces - 622A 题目大意:给你一个这样的数列1,1,2,1,2,3,1,2,3,4,1,2,3,4,5....就是从1~n排列(n++).最后问你第n个位置是什么数字. 思路:如果你花点时间列数列的话会发现,1~n的最后一位对应的位置是1~n的和,那我们就大胆使用二分进行搜索这位数. #include<iostream> #include<algorithm> #include<cstdio> #incl…
大概目标是补到 #500 为止的 Div. 2 ,先定个小目标,寒假开始前补到 #560 为止 Codeforces Round #599 (Div. 2) 5/6 备注:0-1BFS(补图连通块) Codeforces Round #598 (Div. 3) 暂时跳过 Codeforces Round #597 (Div. 2) 6/6 备注:最小生成树,期望dp,二维数位dp Codeforces Round #596 (Div. 2, based on Technocup 2020 Eli…
题目链接:http://codeforces.com/contest/1058/problem/E 题意:给出 n 个数,对于一个选定的区间,区间内的数可以通过重新排列二进制数的位置得到一个新的数,问有多少个区间满足,区间内的数异或和为 0 . 题解:首先对于一个区间来说,区间内二进制为 1 的个数为奇数时显然不可能满足条件,先统计二进制为 1 的个数为偶数的区间总个数.而在一个区间内,如果某个数二进制下有 x 个 1 ,而区间内其他数的二进制 1 加起来小于 x ,则是不满足的,可以暴力去掉这…
题意:把一长串字符串 排成矩形形式  使得行最小  同时每行不能相差大于等于两个字符 每行也不能大于20个字符 思路: 因为使得行最小 直接行从小到大枚举即可   每行不能相差大于等于两个字符相当于  从上往下一列一列填 然后直接模拟即可 #include<bits/stdc++.h> #define FOR(i,f_start,f_end) for(int i=f_start;i<=f_end;i++) #define MS(arr,arr_value) memset(arr,arr_…
题意:给出一个数列 a1 a2......an  让你构造一个序列(该序列取值(1-5)) 如果a(i+1)>a(i) b(i+1)>b(i) 如果a(i+1)<a(i)  那么b(i+1)<b(i) 如果a(i+1)==a(i) 那么b(i+1)!=b(i) 请构造该序列 如果不存在 那么输出-1 思路: 当时想的时候是贪心 但是贪心的话对于相等的时候就很不好处理 然而该题的状态比较好定义 dp[i][x] 表示 第i个位置 取x 是否成立 那么状态总量有  n(<=5e5…
题意:给出一条直线 ax +by+c=0  给出两个整点 (x1,y1) (x2,y2) 只有在x,y坐标至少有一个整点的时 以及   给出的直线才有路径(也就是格子坐标图的线上) 问 两个整点所需要经过的最短距离 思路: 整点和整点之间的最短路径 要么 经过 直线 要么不经过直线 如果不经过直线,那么最短距离就是两者的曼哈顿距离  |x1-x2|+|y1-y2| 如果经过线段  那么一个点有两种到线段的方式  一种是和线段上的点x 相同 一个是和线段上的点y相同  2*2一共四种情况  全部算…
B. Mike and Children time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Mike decided to teach programming to children in an elementary school. He knows that it is not an easy task to interest…
A. Technogoblet of Fire 题意:n个人分别属于m个不同的学校 每个学校的最强者能够选中 黑客要使 k个他选中的可以稳被选 所以就为这k个人伪造学校 问最小需要伪造多少个 思路:记录每个学校都有哪些人 每次看黑客选中的人是不是在学校是最强者(这里要处理能力一样的情况,如果有能力一样的为了保证稳进也要伪造一个学校) 然后就是模拟了 #include<bits/stdc++.h> #define FOR(i,f_start,f_end) for(int i=f_start;i&…
A. Gennady and a Card Game a题惯例签到题 题意:给你一张牌,再给你5张牌,判断能不能出一次牌... 所以只要检查第二行中的某个卡是否与第一行中的卡具有共同字符 有就输出YES否则输出NO #include<iostream> #include<cstring> #include<cstdio> using namespace std; char a,b,s[101]; bool tf=0; int main(){ scanf("%c…
传送门 题意简述:对n个排成一排的物品涂色,有m种颜色可选. 要求相邻的物品颜色不相同,且总共恰好有K种颜色,问所有可行的方案数.(n,m≤1e9,k≤1e6n,m\le1e9,k\le1e6n,m≤1e9,k≤1e6) 思路: 容斥原理套路: 先不考虑是否选全kkk种颜色,方案数为Cmk∗k∗(k−1)n−1C_m^k*k*(k-1)^{n-1}Cmk​∗k∗(k−1)n−1. 然后枚举剩下的至少有几种颜色没选来容斥掉非法情况: 于是Ans=Cmk∑i=k1(−1)k−iCkii(i−1)n−…
传送门 题意简述:现在有一些号码由000~999中的某些数字组成(会给出),号码总长度为nnn,问有多少个号码满足前n2\frac n22n​个数码的和等于后n2\frac n22n​个数码的和(保证nnn是偶数),答案对998244353998244353998244353取模. 思路: 一道挺显然的生成函数+快速幂. 考虑到前n2\frac n22n​个数码和的生成函数和后n2\frac n22n​个数码和的生成函数是相同的,因此直接求出前n2\frac n22n​个数码和的生成函数,然后对…
传送门 题意简述:给nnn个物件,物件iii有一个权值aia_iai​,可以选任意多个.现在要求选出kkk个物件出来(允许重复)问最后得到的权值和的种类数. n,k,ai≤1000n,k,a_i\le1000n,k,ai​≤1000 思路: 这是一道很显然的生成函数,我们把选一个物件的生成函数给列出来,然后取它的kkk次方就是答案. 显然可以上一波fftfftfft 成功T飞 在博主卡场无果之后换成了nttnttntt,然后发现cfcfcf的强力数据同时卡掉了998244353998244353…
传送门 fftfftfft好题. 题意简述:给两个字符串s,ts,ts,t,问ttt在sss中出现了几次,字符串只由A,T,C,GA,T,C,GA,T,C,G构成. 两个字符匹配的定义: 当si−k,si−k+1,...,si+k−1,si+ks_{i-k},s_{i-k+1},...,s_{i+k-1},s_{i+k}si−k​,si−k+1​,...,si+k−1​,si+k​中存在至少一个字符使得sj=tls_j=t_lsj​=tl​时,我们称sis_isi​与tlt_ltl​匹配. 题目…
传送门 长链剖分模板题. 题意:给出一棵树,设fi,jf_{i,j}fi,j​表示iii的子树中距离点iii距离为jjj的点的个数,现在对于每个点iii要求出使得fif_ifi​取得最大值的那个jjj. 思路:有一个明显的状态转移式fi,j=∑v∈sonifv,j−1f_{i,j}=\sum_{v\in son_i}f_{v,j-1}fi,j​=∑v∈soni​​fv,j−1​,那么考虑对这棵树长链剖分,对于链上的信息用指针实现O(1)O(1)O(1)转移,而链与链之间的转移直接暴力转就行,因为…
A. Kitchen Utensils Water. #include <bits/stdc++.h> using namespace std; #define N 110 int n, k, cnt[N]; int main() { while (scanf("%d%d", &n, &k) != EOF) { memset(cnt, , sizeof cnt); , x; i <= n; ++i) { scanf("%d", &a…
#include<bits/stdc++.h>using namespace std;char c[2007][2007];char ans[4007];int s[2007][2007];int main(){    memset(s,-1,sizeof(s));    int n,k;    scanf("%d%d",&n,&k);    getchar();    for(int i=1;i<=n;i++){        for(int j=1…