
hdu
取竹
Hai capito?
展开
-
[2017百度之星程序设计大赛- 复赛] C - hdu6146
我们设 Bn 代表从某个角出发,然后走遍所有格子回到同一列的方案数目。 Bn=2×Bn−1=2n−1 同样,我们设 An 代表从某个角出发,然后走遍所有格子的方案数。 则 An=Bn+2×An−1+4×An−2 其中 Bn 代表回到了当前列的方案数, An−1 代表先填满当前列然后走到相邻的列处理同样的一个子问题, An−2 代表通过对角线方式先走完当前列与相邻列的格子,然后剩下的 n原创 2017-08-30 21:39:02 · 355 阅读 · 0 评论 -
[2017百度之星程序设计大赛 - 复赛]D - hdu6147
乱搞一下,可以推出如果相交,必定是这条边之前的8条内的一条,那么对于每条边,暴力判断一下。 就可以得出答案了,复杂度是O(跑的过)。 #include #include #define C (c=getchar()) using namespace std; int T; inline void read(int &a) { a=0;static char c;C; while (原创 2017-08-30 21:40:59 · 298 阅读 · 0 评论 -
[2017百度之星程序设计大赛 - 复赛]E - hdu6148
裸的数位DP,只需要判断之前是否已经改变过递增减就行了。 直接上模板。 #include #include #include #include #define ll long long using namespace std; const int N=110,P=1000000007; ll f[N][2][10],a[N],n; ll dfs(ll pos,ll st,ll lim,ll p原创 2017-09-11 19:56:15 · 237 阅读 · 0 评论 -
[2017百度之星程序设计大赛 - 复赛]F - hdu6149
因为是三元组<x,y,z><x,y,z> 暴力枚举处于x位置的高谷,然后建网络流的图,每次跑dinic取最大流。 枚举位置时直接dfs,上界是高谷总数的一半。 可以证明答案一定在dfs出的结果内。#include <cstdio> #include <queue> #include <cstring> using namespace std; int T,n,m,k,kd; int hi[10原创 2017-09-11 20:10:43 · 310 阅读 · 0 评论 -
HDU 1568 Fibonacci
HDU 1568 Fibonacci先看对数的性质,loga(bc)=c∗loga(b),loga(b∗c)=loga(b)+loga(c)loga(b^c)=c*loga(b),loga(b*c)=loga(b)+loga(c); 假设给出一个数10234432,那么log10(10234432)=log10(1.0234432∗107)=log10(1.0234432)+7log10(1023原创 2017-12-05 21:06:31 · 204 阅读 · 0 评论 -
HDU 5241 Friends
HDU 5241 Friends各种语言相互独立故而答案是2的乘方由样例可知是32的n次方剩下的是一个大数乘法#include<iostream> #include<stdio.h> #include<stdlib.h> #include<string.h> using namespace std; const int N=9999; const int DLEN=4; class BigNum {原创 2017-12-05 21:09:30 · 250 阅读 · 0 评论