题意:有一个整数\(n\),每次可以对加\(10^x\)或减\(10^x\),问最少操作多少次能得到\(n\). 题解:对于某一位上的数,我们可以从\(0\)加几次得到,或者从前一位减几次得到.所以对于每一位,我们都要求得一个最优解,所以用dp来写. dp数组的一维表示当前的位置,二维表示是用第一种情况还是第二种情况. 而对于第二种情况,我们还要判断上一个位置用的是哪种,如果上一个位置用的是第一种情况,那么状态就应该是\(dp[i-1][0]+1\)(上一位要多补一个1),反之,状态应该是\(d…
Problem H. ICPC QuestTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100500/attachments Description Noura Boubou is a Syrian volunteer at ACM ACPC (Arab Collegiate Programming Contest) since 2011. She graduated from Tishreen Un…
Gym - 102307C Common Subsequence 题意:给你两个相同长度的DNA序列,判断这两个的最长公共子序列长度是不是0.99*n,n为序列的长度(n<=1e5). 嗯,正常dp的想法是n2,肯定是会超时的,那么我们把目光放到0.99*n这里,反过来不就是最多只能失配0.01*n,最大也就是1000个字符. 所以接下来就是不看大佬做法,自己完全没想到的dp设法.dp[i][j]就代表s1串抛弃了i个字符,s2抛弃了j个字符的最长公共子序列长度. 那么此时,s1串已经匹配了的序…
题目链接: http://codeforces.com/gym/101161/attachments 题意: 总共有n瓶药可供选择 每瓶药可以增加$e_i$点体力,和$p_i$点毒性 每分钟消耗1点毒性,毒性不能大于99,体力不能小于0大于100 击败一只怪物消耗$k$点体力,花费$m$分钟 计算不最大击败怪物的数量 数据范围: $1\leq n\leq 8$ 分析: 定义$dp[i][j][k]$为药物状态为$i$,体力为$j$,毒性为$k$的最大击败数 初始化$dp[0][100][0]=0…
链接:http://codeforces.com/gym/102263 A: 签到题:A * B . B: 题意:类似取石子游戏,每个人可以取max(1, n(当前剩余) - k)个,最后取完的人赢,Kilani先取,问谁能获胜. 思路:一眼就看出是博弈论,找了几种情况推了下发现只有 (n - k <= 1 && n不是偶数 )的情况下 后手才能赢. AC代码: #include<bits/stdc++.h> using namespace std; int main()…
cl少用在for循环里 #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #include<queue> #include<map> using namespace std; #define MOD 1000000007 const int INF=0x3f3f3f3f; ; typedef l…
这是我第一次写$dp \; of \; dp$,大致思路参考了xyx的做法,可能有些地方不太一样,但也许会详细一点. 考虑给你一副牌,如何判断这副牌是否是胡的. 容易发现相同的顺子不会选三个以上,于是考虑花色从小到大进行$dp$.令$dp_{0/1, i, j, k}$表示是否有对子,考虑了前$i$种花色的牌,以花色$i - 1$的牌为开头的顺子准备选$j$个,以花色$i$的牌为开头的顺子准备选$k$个,此时能选的最大的面子数.转移只要枚举以花色$i + 1$的牌开头的顺子准备选几个,剩下的牌组…
题意:x轴上有n个人,让你放置m个集合点,使得每个人往离他最近的集合点走,所有人走的距离和最短. 把距离视为花费,设$dp[i][k]$表示前i个人分成k段的最小花费,则有递推式$dp[i][k]=min\{dp[j][k-1]+w(j,i)\}$,其中$w(j,i)$可以$O(1)$求出. 显然,如果考虑段数的话,光状态数就有n^2个,肯定行不通.不过这题的最优解对段数的函数是凸的,因此可以用WQS二分来打破段数的限制. 给每个集合点加上一个额外的花费c,然后忽略段数的限制,这样递推式就变成了…
 题意:给你一个n和k 要你找到长度为n 字典序第k小的字符串 定义一个字符串合法:第i的字符的范围只能是前i-1个字符中的最大值+1 思路:我们dp[n][i][j]表示长度为n 在第i位 最大值为j的序列有多少个 随后我们可以直接模仿找第k大一样找到第k个字符串 #include <bits/stdc++.h> using namespace std; const int inf = 0x3f3f3f3f; const double eps = 1e-6; const int N = 1e…
The least round way 题目链接:http://codeforces.com/contest/2/problem/B ——每天在线,欢迎留言谈论.PS.本题有什么想法.建议.疑问 欢迎留言!! 题目大意: ①第一行给你一个n,表示接下来将给你一个n阶方阵的数据 ②要求你从左上方出发到右下方,路径上所有数字乘积 的末尾0的个数最少 ③输出最少0的个数,并输出路径 PS:①每次只能向右或向走 ②D表示向下走,R表示向右 ③0乘任何数的结果 末尾都是一个0: 知识点: ①多个数字相乘,…
Clarke and math 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5628 Description Clarke is a patient with multiple personality disorder. One day, he turned into a mathematician, did a research on interesting things. Suddenly he found a interesting fo…
The dragon and the princess are arguing about what to do on the New Year's Eve. The dragon suggests flying to the mountains to watch fairies dancing in the moonlight, while the princess thinks they should just go to bed early. They are desperate to c…
题目链接:http://codeforces.com/problemset/problem/264/B 题意:给出一个严格递增的一串数字,求最长的相邻两个数的gcd不为1的序列长度 其实这题可以考虑一下素因数,将每一个数都已是分解为几个不重复的素数,设dp[i]为含有因数i的最长序列有多长 然后遍历一下这串数字,每次更新dp[a[i]]=max(dp[j]+1,dp[a[i]]),j表示a[i]的素因数,再将每个素因数更新为 最大值. for(int i = 1 ; i <= n ; i++)…
题目描述 有$n+2$个座位等距地排成一排,从左到右编号为$0$至$n+1$.最开始时$0$号以及$n+1$号座位上已经坐了一个小$G$,接下来会有$n$个小$G$依次找一个空座位坐下.由于小$G$们坐得太近就容易互相搏弈,每个小$G$会找一个当前离最近的小$G$距离最远的座位坐下.如果有多个备选的座位,这个小$G$会等概率选择其中一个.给出$n$,求第$i$个坐下的小$G$坐在$j$号座位的概率,对$P$取模.具体来说,如果答案化为最简分数可以表示为$\frac{a}{b}$,你需要输出$a\…
题目背景 小奇总是在数学课上思考奇怪的问题. 题目描述 给定一个$n\times m$的矩阵,矩阵中的每个元素$a_{i,j}$为正整数.接下来规定:    $1.$合法的路径初始从矩阵左上角出发,每次只能向右或向下走,终点为右下角.    $2.$路径经过的$n+m-1$个格子中的元素为$A_1,A_2...A_{(n+m-1)}$,$Aavg$为$A_i$的平均数,路径的$V$值为$(n+m-1)\times \sum \limits_{i=1}^{n+m-1}{(A_i-Advg)}^2$…
Sasha and Kolya decided to get drunk with Coke, again. This time they have k types of Coke. i-th type is characterised by its carbon dioxide concentration . Today, on the party in honour of Sergiy of Vancouver they decided to prepare a glass of Coke…
题意:给你一组数,问你最少删去多少数,使得剩下的数,每个数都能整除数组中其它某个数或被数组中其它某个数整除. 题解:我们直接枚举所有因子,\(dp[i]\)表示\(i\)在数组中所含的最大因子数(当我们枚举到\(i\)时),然后用\(dp[i]\)更新以\(i\)作为因子的更大的数,注意,更新的时候\(dp[j]=max(dp[i],dp[j])\),而不是\(dp[j]+=dp[i]\),因为这样会把之前的因子重复计算. 代码: #include <bits/stdc++.h> #defin…
E. Mahmoud and Ehab and the xor-MST dp/数学/找规律 题意 给出一个完全图的阶数n(1e18),点由0---n-1编号,边的权则为编号间的异或,问最小生成树是多少 思路 由于一个数k和比他小的数异或,一定可以取到k与所有正整数形成的异或值的最小值.这里简单得形式化证明一下 假设一个数为1000110 那么他的最佳异或和为010(即留下最靠近右边的1其他全部置0) 我们定义\(lsb(x)=x\And(-x)\)由字符形的变量编码我们可以知道,这就可以取得x最…
J. Killing everything time limit per test 4 seconds memory limit per test 64 megabytes input standard input output standard output There are many enemies in the world such as red coders and hackers. You are trying eliminate everybody. Everybody is st…
题目链接:https://ac.nowcoder.com/acm/contest/992/J 题意:题意很清晰,就是求任意两点距离的和,结果对1e9+7取模. 思路:裸的树形DP题,一条边的贡献值=这条边的权值×左端连接的顶点数×右端连接的顶点数,所以我们dfs算出点y的子树大小siz[y],x为y的父结点,则x与y连线这条边的一端点的个数为siz[y],另一端点的个数为n-siz[y] ,贡献值即为dis[x,y]*siz[y]*(n-siz[y]),注意取模. AC代码: #include<…
每次循环向下寻找孩子时,随机选取一个孩子,设dp[u]为从u出发,不能得出正确答案的概率,则从u出发,走一次的情况下不能得出正确答案的概率是 P = (dp[v1]+dp[v2]+dp[v3]+--dp[vk]) / cnt_son[u] ,则从u出发,要走cnt_son[u]次,那么dp[u]=P^cnt_con[u] dp的意义也可以改成能得出正确答案的概率,下面的式子稍微改改就行了 为了避免除法的精度问题,num/k %mod,它等于 num * ni %mod ,ni等于k在模mod意义…
Fighting for Triangles 题目连接: http://codeforces.com/gym/100015/attachments Description Andy and Ralph are playing a two-player game on a triangular board that looks like the following: 1 2 3 4 5 7 8 6 9 10 11 13 14 16 17 12 15 18 At each turn, a playe…
D. Selection Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100114 Description When selecting files in an application dialog, Vasya noted that he can get the same selection in different ways. A simple mouse click selects a sing…
原文链接 https://www.cnblogs.com/cly-none/p/ECFINAL2018J.html 题意:给出一个长度为\(n\)的字符串\(s\),要求给\(s\)的每个后缀\(s[i:]\)分配权值\(k_i\)(实数),满足\(0 \leq k_i \leq 1\),且\(\sum_i k_i = 1\).再此基础上,最大化 \[ \min_{i=1}^n \left( \sum_{j=1}^n k_j {\rm {lcp}} (s[i:],s[j:]) \right) \…
A. Thanos Sort time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Thanos sort is a supervillain sorting algorithm, which works as follows: if the array is not sorted, snap your fingers* to rem…
题意:求一个有向图上的最长路(每个强连通分量的点不超过5个) 首先对强连通分量缩点,暴力预处理出len[k][i][j]表示第k个强连通分量里的第i个点和第j个点之间的最长路径,设状态(k,i,f)表示在第k个强连通分量的第i个点,f表示是否已经在内部发生了转移(每个强连通分量内部只允许转移一次),然后记忆化搜索即可. #include<bits/stdc++.h> using namespace std; ; int n,m,hd[N],ne,low[N],dfn[N],nscc,scc[N…
题目:https://nanti.jisuanke.com/t/41420 思路:当a(a∈S′)为最小值 如果Sum(S′)−a≤Sum(S−S′)成立 那么(∀t∈S′,Sum(S′)−t≤Sum(S−S′))恒成立            先算01背包方案数 再从小到大排序进行退背包 #include<bits/stdc++.h> using namespace std; ; ]; ]; int main() { int T; scanf("%d",&T); i…
\(\text{Day 0}\) 试机, 总体感觉不错, 至少不像初一时候的紧张, 毕竟是中青年选手了 ( ? )         当晚睡得挺好, 虽然是冲着一等奖去的, 但还是没有给自己过多的思想包袱. 策略 琢磨很久了.         我按照去年\(S\)组\(330\)的分数线大概估算了一下, 理想的得分状态应该是\((200^+) + (150^-)=350\). \(\text{Day 1}\) 尽力磕出一两道正解, \(\text{Day 2}\) 稳健骗暴力. 事实证明, 这样的…
Problem F. Fibonacci SystemTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=86821#problem/B Description Little John studies numeral systems. After learning all about fixed-base systems, he became inte…
题目 [题目描述] #### 题目背景一年一度的综艺节目<中国好码农>又开始了.本季度,好码农由 Yazid.Zayid.小 R.大 R 四位梦想导师坐镇,他们都将组建自己的梦想战队,并率领队员向梦想发起冲击. 四位导师的**派系**不尽相同,节目组为了营造看点,又将导师分成了不同的**阵营**,与此同时对不同阵营.不同派系都作出了战队总人数限制: - 四位导师分成两个**阵营**: - Yazid.小 R 两位导师组成**蓝阵营**,他们两位的战队人数**总和**不得超过 $C_0$. -…