自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

bufan的博客

记录自己的一些学习心得.

  • 博客(59)
  • 收藏
  • 关注

原创 颜色的设定

用matlab画图可以修改很多东西的颜色改变线的颜色:plot(x, y, 'color', 'g');line(P([2 3],1), P([2 3],2), 'color', 'b');常用颜色有r             红g            绿b            蓝c          蓝绿m         紫红y

2015-11-30 11:40:41 291

原创 UVA 12571 Brother & Sisters!

暴力打表不解释,看开始没看清数据范围卡了好久#include int main(){ int T; scanf("%d", &T); for(int ca = 1; ca <= T; ca++) { int n, q, t, ans[230] = {0}; scanf("%d%d", &n, &q); wh

2015-11-29 11:02:13 324

原创 UVA 12576 Simply Loopy

一道有意思的组合数学 由于五个变量等价,只需考虑 i2i^2 的贡献 固定 i ,其它数的和为 n - i ,由隔板法得剩下4个数的取值有C3n−i−1C_{n-i-1}^3种方案 于是i2的贡献=∑i=1n−4i2×C3n−i−1于是i^2的贡献=\sum_{i=1}^{n-4} i^2 \times C_{n-i-1}^3 乘5得最终答案,注意数据范围,会爆int#include <cs

2015-11-29 10:52:29 303

原创 UVA 12575 Sin Cos Problem

题意:求f(θ)f(\theta)的最小正极大值点和最大值,f(θ)=A×sin(θ)+B×sin(θ)f(\theta)=A \times sin(\theta)+B \times sin(\theta) 我能说这是高中题吗 (1)B=0B = 0,各种分类讨论 (2)B≠0B \ne 0,求个导得 f′(θ)=A×cos(θ)−B×sin(θ)f'(\theta)=A \times co

2015-11-28 19:57:33 306

原创 HDU 5546 Ancient Go

数据范围小,可以写得很暴力#include #include char maze[12][12];bool vis[12][12];bool dfs(int r, int c){ vis[r][c] = true; if(maze[r][c] == '.') return true; if(maze[r][c] == 'x') return false;

2015-11-27 13:00:33 249

原创 HDU 5534 Partial Tree

题意:已知f(i),(i∈[1,n−1])f(i),(i \in [1,n-1]),求 max{∑i=1nf(xi)|∑i=1nxi=2×n−2,xi>0}max\{ \sum_{i = 1}^n f(x_i) | \sum_{i = 1}^n x_i = 2\times n-2,x_i>0 \} 先给每个xix_i分配1,还剩下n-2 dp[i]:把 i 分配完的最大和#include <

2015-11-26 19:26:34 213

原创 HDU 5543 Pick The Sticks

01背包变形,需压缩空间题目可以理解为有两次折叠金条的机会(长度减半,价值不变)dp[k][i][j]:使用 k 次折叠金条的机会,前 i 个金条放入长度为 j 的容器的最大价值注意最后一个样例,要特判一下#include #include #include using namespace std;typedef long long ll;const int MAXN =

2015-11-26 17:24:34 254

原创 HDU 5547 Sudoku

数据弱,直接搜#include #include int r[5], c[5], block[5];int mr[4] = {1, 1, 3, 3};int mc[4] = {1, 3, 1, 3};char mat[8][8];int num;int pr[20], pc[20];int f(int nr, int nc){ if(nr <= 2) {

2015-11-26 16:02:13 270

原创 CodeForcesGym 100735D Triangle Formation

状压dpdp[s]:用s所对应的木条最多能构成的三角形转移时枚举选三根木条的选法#include #include #include using namespace std;int n, len[15], dp[1 << 15];int solve(){ memset(dp, 0, sizeof(dp)); for(int s = 0; s < (1 <

2015-11-26 14:39:55 320

原创 LightOJ 1037 Agent 47

状压dpdp[s]:干掉s所对应敌人的最少开枪数转移时枚举下一个目标#include #include #include using namespace std;int dp[1 << 15];int n, hp[15], att[15][15];int solve(){ dp[0] = 0; for(int s = 1; s < (1 << n);

2015-11-26 14:05:53 240

原创 LightOJ 1047 Neighbor House

dp[i][j]:涂前i的房子, 第i间房涂第j种颜色的最小花费#include #include using namespace std;int main(){ int T; scanf("%d", &T); for(int ca = 1; ca <= T; ca++) { int n, dp[25][3]; sca

2015-11-26 00:29:24 250

原创 LightOJ 1046 Rider

搜一搜即可#include using namespace std;const int INF = 1e9;struct P{ int r, c; P(){} P(int _r, int _c){r = _r; c = _c;}};int n, m;int num, step[105][12][12];int rm[8] = {1, 1, 2, 2,

2015-11-26 00:14:55 357

原创 LightOJ 1045 Digits of Factorial

基础数论,可以Stirling公式,我是打的表#include #include double fac[1000005] = {0, 0};void init(){ for(int i = 2; i <= 1000000; i++) fac[i] = log(i) + fac[i - 1];}int main(){ int T; sc

2015-11-25 21:33:45 239

原创 LightOJ 1042 Secret Origins

题意:给你一个n,找出最小的一个大于n的数m,使得n和m在二进制表示下的1的个数相同基本位操作#include int lowbit(int i){ return i & -i;}int get_num(int n){ int res = 0; while(n) { if(n & 1) res++; n >>= 1

2015-11-25 21:15:23 343

原创 LightOJ 1030 Discovering Gold

概率dp,从后向前更新 dp[i]:从i走到n收集的黄金数的期望 a[i]:第i个位置的黄金数 dp[i]=∑6j=1(a[i]+dp[i+j])6dp[i]=\frac{\sum_{j=1}^6 (a[i]+dp[i+j])}{6}#include <cstdio>double dp[105];int main(){ int T; scanf("%d", &T); f

2015-11-25 14:08:47 223

原创 HDU 1047 Integer Inquiry

大数加法import java.math.*;import java.util.*;public class Main{ static public void main(String[] args) { Scanner cin = new Scanner(System.in); int T = cin.nextInt(); for(int ca = 1;

2015-11-24 22:53:23 204

原创 LightOJ 1029 Civil and Evil Engineer

分别跑一次最小生成树和最大生成树#include #include using namespace std;struct Line{ int l, r, v;}L[12005];bool operator < (Line a, Line b) {return a.v < b.v;}int L_size, n, fa[105];int find(int i){

2015-11-24 17:05:03 272

原创 LightOJ 1027 A Dangerous Maze

设所需时间的期望为T,xip<0,xjp>0x_{i_p}<0,x_{j_p}>0,则 T=(xi1n+⋯+xisn)+(−xj1+Tn+⋯+−xjt+Tn)T= (\frac {x_{i_1}}{n}+\cdots+\frac {x_{i_s}}{n})+ (\frac {-x_{j_1}+T}{n}+\cdots+\frac {-x_{j_t}+T}{n})#include <cstdio>i

2015-11-24 16:28:56 169

原创 LightOJ 1028 Trailing Zeroes (I)

题意:给你一个数N,问在多少个进制下,N的末尾有0其实就是求N约数的个数素数筛法+质因数分解#include using namespace std;typedef long long ll;vector prime;void init(){ bool is_prime[1000005]; memset(is_prime, true, sizeof(is_

2015-11-24 15:58:15 379

原创 UVALive 5072 Find the Multiples

题意:给你一个数字串,问有多少个连续子串被质数Q整除 一道有趣的数论题 对于长度为n的字符串 num[i][j]:下标从i~j的子串 (1)Q=2或Q=5Q=2或Q=5,容易处理 (2)Q≠2且Q≠5Q \neq 2且Q \neq 5 num[i][n]=num[j][n]+num[i][j]×10knum[i][n] = num[j][n] + num[i][j] \times 10^

2015-11-23 13:28:16 267

原创 UVALive 5073 Test Case Tweaking

题意:给一个有向图,你可以把边的权值改为非负数,问最少需要改几条边才能让1到n的最短路等于c图上dpdp[i][k]:改k条边后,最短的从1到i的最短路对于每个k跑一次spfa,跑m次spfa后找到最小的k使得dp[n][k]#include using namespace std;const int INF = 1e9;int n, m, c;int g[105][

2015-11-22 21:52:30 418

原创 UVALive 5067 Membership Management

数据很水,各种姿势随便玩#include using namespace std;vector vec[105];map M;set S;bool vis[105];void dfs(int k){ for(int i = 0; i < vec[k].size(); i++) { string s = vec[k][i]; if

2015-11-22 20:03:03 239

原创 LightOJ 1017 Brush (III)

一道dp题我用map存的点,用数组也可以dp[i][j]:处理到第i行,刷j次所能刷去的最多垃圾数求dp[i][j]时分两类(1)不刷第i行,最大是dp[i][j-1](2)刷第i行,贪心一下,让刷子的边缘是第i行,从第i行往前扫到第一个刷不到的行数i2,扫的过程中把扫走的垃圾数记为cnt,最大是cnt+dp[i2][j-1];dp[i][j]=max(dp[i][j-1]

2015-11-21 22:37:11 328

原创 产生随机数

rand:rand:返回一个(0,1)的随机数rand(5):返回一个5×5的矩阵,每个数是(0,1)的随机数rand(2,3):返回一个2×3的矩阵,每个数是(0,1)的随机数高维类似可得

2015-11-20 22:51:13 350

原创 LightOJ 1325 Distributing Chocolates

解高次同余方程:an≡b(modp)a^n \equiv b \pmod{p} 用baby-step giant-step算法,以给力的方法遍历aka^k 复杂度logp\log p#include <bits/stdc++.h>using namespace std;typedef long long ll;const int p = 100000007;ll fast_pow(ll x

2015-11-19 12:24:09 290

原创 LightOJ 1340 Story of Tomisu Ghost

线性预处理出1~1e5的素数,nlogn的也可以对于每组n,t,把n!质因数分解再贪心即可还可以用下快速幂进行优化#include using namespace std;typedef long long ll;const int MAXN = 1e5;const ll mod = 10000019;bool is_prime[MAXN + 5];vector prim

2015-11-19 10:55:37 394

原创 LightOJ 1019 Brush (V)

最短路,有重边#include using namespace std;const int INF = 1e9;bool vis[105];int g[105][105];int n, dis[105];int spfa(){ for(int i = 1; i <= 100; i++) dis[i] = INF, vis[i] = false;

2015-11-17 21:08:40 329

原创 LightOJ 1009 Back to Underworld

贪心+搜索#include using namespace std;int fa[20005];vector g[20005];int bfs(int start){ int cnt[2] = {0}; queue q; q.push(start); fa[start] = 0; cnt[0]++; while(!q.empty()) {

2015-11-17 20:34:38 322

原创 LightOJ 1016 Brush (II)

贪心+set,代码量会很小用数组存会快一点点#include #include using namespace std;set S;int main(){ int T; scanf("%d", &T); for(int ca = 1; ca <= T; ca++) { int n, w, y; scanf("%

2015-11-17 11:27:08 229

原创 LightOJ 1012 Guilty Prince

简单广搜#include using namespace std;struct P{ int r, c; P(){} P(int _r, int _c){r = _r; c = _c;}};int r, c;char maze[25][25];bool vis[25][25];int rm[4] = {0, 0, -1, 1};int cm[4]

2015-11-17 11:09:07 303

原创 LightOJ 1011 Marriage Ceremonies

最大带权匹配由于点很少,除了KM算法,还可以状压dp

2015-11-17 10:47:42 298

原创 LightOJ 1007 Mathematically Hard

题意:求a~b的欧拉函数值的平方和先预处理出1~5e6的欧拉函数值,再预处理出前缀平方和就OK要注意空间限制,一不小心就炸空间要注意数据范围,会爆long long#include const int MAXN = 5e6 + 5;unsigned long long phi[MAXN];bool get_phi(){ phi[0] = phi[1] = 0;

2015-11-16 20:57:19 208

原创 各种线性筛法

线性筛素数:求1~n的所有素数遍历一次即可i=1:n运行到i时(1)如果i没被更新,那么i是质数,加入素数表  证明:假设i是合数,设p是i的最小素因子,记i=p*k(显然k的最小素因子>=p)            运行到k时,p已经被加入素数表,又因为k的最小素因子>=p,所以k*p被更新了,矛盾                  所以如果i没被更新,那么i是质数

2015-11-16 18:42:32 380

原创 有意思的memset

memset按字节赋值,所以可以给char和bool赋任意值根据位运算的知识发现memset可以给int,long long赋值-1,可以给无符号int,long long赋最大值可以给任意变量赋初值0(似乎是对的)其实,今天才知道bool竟然占一字节

2015-11-16 15:16:11 224

原创 LightOJ 1005 Rooks

题意:在一个n×nn \times n的棋盘上放k个车,让他们不互相攻击,有几种放法 先从n行中选k行放车,然后就是n选k的全排列 答案是CknAknC_n^k A_n^k#include <bits/stdc++.h>using namespace std;typedef long long ll;ll C(int n, int k){ if(n < k) return 0;

2015-11-16 13:47:04 240

原创 LightOJ 1004 Monkey Banana Problem

基础dp#include using namespace std;int dp[105][105];int main(){ int T; scanf("%d", &T); for(int ca = 1; ca <= T; ca++) { memset(dp, 0, sizeof(dp)); int n;

2015-11-16 13:23:36 233

原创 LightOJ 1003 Drunk

题意:判断一个有向图是否有环拓扑排序问题,如果所有结点都入队列,无环#include using namespace std;map M;vector g[20005];int degree[20005];int main(){ int T; scanf("%d", &T); for(int ca = 1; ca <= T; ca++) {

2015-11-16 13:06:50 238

原创 LightOJ 1002 Country Roads

题意:给一个图,再给个点p,求其它各点到点p的距离裸的单源最短路,新手专用#include using namespace std;const int INF = 1e9;int n;bool vis[505];int dis[505];int g[505][505];void spfa(int s){ for(int i = 0; i < n; i++)

2015-11-15 23:38:37 271

原创 HDU 4643 GSM

题意:有m个基站,手机只会接收距离最近的基站的信号,然后有k个询问,每次给你两个点a,b,问从a到b会更换几次基站find(p):返回离p点最近的基站的下标如果find(p1)==find(p2),则从p1到p2不会更换基站如果p1,p2距离很小,则从p1到p2只会更换一次基站否则二分求解#include #include const double eps = 1e-9;

2015-11-13 16:15:11 245

原创 HDU 4617 Weapon

题意:有n个圆柱,如果存在两个圆柱相交,就输出Lucky,否则输出在任意两圆柱距离的最小值算一下直线间的距离就OK#include #include #include using namespace std;const double eps = 1e-6;struct P{ double x, y, z; P(){} P(double _x, doub

2015-11-13 01:04:54 275

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除