摘要://第一次用Tarjan求强连通分量//先求强连通分量,再重新构图,找出度为0的点,并且出度为0的点只有1个//这题不能求入度,不能判断重新构图后的点的入度为n-1//因为存在单链的情况,这时,链尾的点就是答案,但是该入度为1#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N =...
阅读全文
摘要://这题做了一晚//很简单的dp水题,一开始超时,优化后又WA,结果发现是输出精度不够,至少要输出小数点后4位//先要预处理一下,不然dp过程中会出现很多重复计算//设dp[i]为完成路程a[1]+...+a[i]的最小时间,cost[i][j]为从站i换轮胎后,到站j所需的时间//dp[i] = min(dp[k]+cost[k][i]+b), 0 < k < i//dp[0] = 0;#inc...
阅读全文
摘要://这题一开始感觉是dp,状态转移方程为dp[i][j] = min(dp[i][j-1], dp[i-1][j]) + maze[i][j]//提交上去WA//后来发现这题不能用dp,因为题目要求的是正的最小值,状态转移方程的min会取到负数,//当求出dp[n][m]为负数时,有可能存在一条和为正的路径//注意到n,m都比较小,可以直接用bfs搜索过#include <iostream>#in...
阅读全文
摘要://设dp[i][j]为选取的第i个数为j的方案数//dp[i][j] = sum(dp[i-1][k]), i-1 <= k <= j/2//ans = sum(dp[n][k])#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int N = 15;const int M = 2005...
阅读全文
摘要://这题可以用暴力搜索//要注意减枝和各种预处理,不然各种TLE//方法是搜索s里的=s1的子串,再判断s剩下的字符是否能组成s2#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int N = 205;char s1[N], s2[N], s[N], tmp[N];int low_tim...
阅读全文
摘要://这题有几个需要特别注意的地方//不能算对应的格子的数量/总数,只能通过计算每层的概率得到//一开始用计算总数,计得5/14和sample里的7/16对不上//这里的层数有50层, 2^50次方,用unsigned long long//在计算lcm时,要先除再乘,不然会溢出。//在计算gcd时,传入的参数a,b要满足a>b//因为这些原因各种错误RE,WA#include<iostream>u...
阅读全文