随笔分类 - HDU
摘要:题目:Park Visit原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4607分析:求树的直径。所谓树的直径,指的是一棵树里任意两点之间的最远距离。方法为选定一点,然后从该点bfs,则最后一个出栈的点必为直径的一端,然后以该点为起点bfs,求出直径即可。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define maxn 10000510 int T,n,m;11 vectorg[ma
阅读全文
摘要:题目:Revenge of Fibonacci原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4099分析:字典树的应用。在求Fibonacci的前40位时,可以只记录下前60位,舍去后面的,这样不会因为进位而产生误差。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define maxn 6000005 9 using namespace std; 10 char s[44],s1[101],s2[101],s3[1...
阅读全文
摘要:题目:Stone原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4764 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 int main() 8 { 9 int n,k;10 while(scanf("%d%d",&n,&k)==2)11 {12 if(n==0&&k==0)break;13 if((n-1)%(k+1)==0)printf("Jiang\n");1
阅读全文
摘要:题目:小希的迷宫原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272分析:并查集的应用。判断有无环以及是否都在一个集合里即可! 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define maxn 100005 7 #define ll long long 8 #define inf 0x7fffffff 9 using namespace std;10 int fa[maxn],vis[maxn];11 void make_set()12 {13 for(int i...
阅读全文
摘要:题目:Flyer原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4768分析:二分。只需要注意到最多只有一个为奇数,则可以首先求出学生获得的总的传单数,为奇数时,二分找到答案。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define LL long long 8 #define maxn 20005 9 struct N10 {11 LL now,lim,add;12 }p[maxn];13 int n;14 int ma...
阅读全文
摘要:题目:Y原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4705分析:树形dp的思想,枚举中间点。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define maxn 10000510 #define LL __int6411 #pragma comment(linker, "/STACK:16777216")12 vectore[maxn];13 LL ans,sum
阅读全文
摘要:题目:Sum原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4704分析:实际上就是求2^(n-1)mod(1e9+7).因为2与1e9+7互素,所以可以用费马小定理。参考:http://baike.baidu.com/view/263807.htm(a,p)=1,则a^(p-1)Ξ1(modp).可得:2^(n-1)%mod=2^((n-1)%(mod-1)) %mod;证明:(n-1)=(n-1)%mod+k*(mod-1).则:2^(n-1)=2^((n-1)%(mod-1)) * 2^(k*(mod-1));可知结论成立。 1 #inclu
阅读全文
摘要:题目:Good Numbers原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4722分析:找规律,每十个数中有一个。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define maxn 100005 8 #define LL __int64 9 int main()10 {11 int T,cas=1;12 cin>>T;13 LL l,r;14 while(T--)15 {16 ...
阅读全文
摘要:题目:Minimum palindrome原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4731分析:找规律。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 int n,m; 8 9 int main()10 {11 int T,cas=1;12 cin>>T;13 while(T--)14 {15 scanf("%d%d",&m,&n);16 printf("Case...
阅读全文
摘要:原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003分析:定义dp[i][1]表示到第i个数时的最大连续和,dp[i][1]表示dp[i][0]取到最大值时的左边起始位。Max Sum 1 #include 2 #include 3 #include 4 #include 5 #define maxn 100005 6 using namespace std; 7 int num[maxn],dp[maxn][2]; 8 int main() 9 {10 int T,cas=1;11 scanf("%d",&T);1
阅读全文

浙公网安备 33010602011771号