2014年8月6日
摘要: 思路:很简单的博弈,找出每个人先拿的必胜态进行状态转移即可。#include#include#include#include#includeusing namespace std;int main(){ int t, n, CASE(0); char str[10]; scanf... 阅读全文
posted @ 2014-08-06 23:59 wangzhili 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 裸的最短路 dijkstra#include#include#include#includeusing namespace std;const int MAXN = 101;const int INF = 0x3f3f3f3f;int dist[MAXN], vis[MAXN], mat[MAXN]... 阅读全文
posted @ 2014-08-06 23:59 wangzhili 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 设dp[s]表示状态s下所需要的线段的个数,s的二进制中第x位为1就表示该状态下第x个点没被线段覆盖。需要预处理出来在任意两点之间连线所覆盖点的状态O(n^3),然后记忆化搜索即可。#include#include#include#include#includeusing namespace std... 阅读全文
posted @ 2014-08-06 23:52 wangzhili 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 思路:动态规划,设dp[i][j]表示在前j个dusts中用了i刷子刷掉dusts的个数:状态转移方程就是:dp[i][j] = max(dp[i][j-1], dp[i-1][j-len[j]] + len[j]); len[j]表示刷第j个dust时需要覆盖其前面dusts的个数,可以在O(n... 阅读全文
posted @ 2014-08-06 23:48 wangzhili 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 水题,排个序直接搞。#include#include#include#include#includeusing namespace std;const int MAXN = 50010;int y[MAXN];int main(){ int t, x, n, w, CASE(0); sc... 阅读全文
posted @ 2014-08-06 23:46 wangzhili 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 水题,统计大于0的和。#includeint main(){ int t, n, tmp; scanf("%d", &t); for(int i = 1;i 0 ? tmp : 0; } printf("Case %d: %d\n", i, sum);... 阅读全文
posted @ 2014-08-06 23:44 wangzhili 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 判断到根号n即可,另外使用dfs输出,不需要另开数组再排序。#include#includeint P, L, len, cnt;void dfs(int dep){ if(dep > len) return; if(dep > L){ if(P % dep == 0){ if(... 阅读全文
posted @ 2014-08-06 23:39 wangzhili 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 思路:动态规划。设dp[i][j][k]表示用第一个串的前i隔字符和第二个串的前k隔字符组成长度为i的串的个数,那么:若s1[j+1] == s2[k+1] dp[i+1][j+1][k+1] += dp[i][j][k],否则:dp[i+1][j+1][k]+=dp[i][j][k];dp[i+1... 阅读全文
posted @ 2014-08-06 23:37 wangzhili 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 水题,dfs#include#include#include#include#includeusing namespace std;const int MAXN = 22;int W, H;char str[MAXN][MAXN], vis[MAXN][MAXN];int dir[4][2] = {... 阅读全文
posted @ 2014-08-06 23:32 wangzhili 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 水题,开根号判断大致范围,再找即可。#include#include#includeusing namespace std;int main(){ int t, CASE(0); long long int n; scanf("%d", &t); while(t--){ ... 阅读全文
posted @ 2014-08-06 23:30 wangzhili 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 预先处理好phi数组和前缀和,水题。#include#include#include#include#includeusing namespace std;const int MAXN = 5e6+10;unsigned long long int phi[MAXN];void init(){ ... 阅读全文
posted @ 2014-08-06 23:26 wangzhili 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 组合数学,ans = C(n,k)*A(n,k).#include#include#include#include#include#define LL long longusing namespace std;LL work(int n, int k){ if(k > n) return 0;... 阅读全文
posted @ 2014-08-06 23:24 wangzhili 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 记忆化搜索下即可。#include#include#include#include#includeconst int MAXN = 10010;const int MOD = 10000007;using namespace std;long long int dp[MAXN];int a, b, ... 阅读全文
posted @ 2014-08-06 23:23 wangzhili 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 题意,在一个n*n的棋盘上放置一些马,使这些马不能互相攻击,问最多能放多少。思路:从第一行每隔一个放置一个马即可,注意n=1和n=2的情况要特判.#includeint main(){ int n, m, t; scanf("%d", &t); for(int i = 1;i 1... 阅读全文
posted @ 2014-08-06 23:19 wangzhili 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 很水的一个dp#include#include#include#includeusing namespace std;const int N=100;int a[2*N+5][N+5],dp[2*N+5][N+5];int main(){ int T,n,i,j,ca=0; cin>>T... 阅读全文
posted @ 2014-08-06 23:17 wangzhili 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 有向图拓扑排序,判段是否存在。#include#include#include#include#include#includeusing namespace std;const int MAXN = 20010;struct Edge{ int to, next;};Edge edge[MAX... 阅读全文
posted @ 2014-08-06 23:13 wangzhili 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 最短路的变形,使用spfa做。#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace... 阅读全文
posted @ 2014-08-06 23:11 wangzhili 阅读(104) 评论(0) 推荐(0) 编辑