自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(101)
  • 收藏
  • 关注

原创 C++primer[习题][第四章][11-20]

4.11 a>b && b>c && c>d;4.12 i != j

2017-11-29 20:40:15 291

原创 C++primer[习题][第四章][1-10]

4.15 + 10 * 20 / 2 = 1054.2 *vec.begin() //*(vec.begin()) *vec.begin()+1 //(*(vec.begin()))+14.3可以接受,代码效率提高比较难,但是程序的缺陷可以通过努力克服。4.4((12 / 3) * 4) + (5 * 15) + ((24 % 4) / 2)4.5 -30

2017-11-26 21:30:36 269

原创 C++primer[习题][第三章][31-45]

3.31int main(){ int arr[10]; for (int ix = 0; ix < 10; ix++) arr[ix] = ix; return 0;}3.32#include <vector>using std::vector;int main(){ int arr1[10], arr2[10]; for (i

2017-11-26 21:11:48 332

原创 C++primer[习题][第三章][21-30]

3.21 #include <iostream>#include <vector>using std::cin;using std::cout;using std::endl;using std::vector;int main(){ vector<int> ivec(10, 42); for (auto i = ivec.begin(); i != ivec.end(

2017-11-26 18:35:08 254

原创 C++primer[习题][第三章][11-20]

3.11如果不改变c的值合法,改变c的值就不合法。 c的类型为const char &。3.12 vectorvector<int> ivec;int tmp;while (cin >> tmp){ ivec.push_back(tmp);}3.15vector<string> svec;string s;while (cin >> s){ svec.pus

2017-11-26 18:01:35 254

原创 C++primer[习题][第三章][1-10]

3.1using std::cin;using std::cout;using std::endl;using std::cerr;3.2#include <iostream>#include <string>using std::cin;using std::cout;using std::endl;using std::string;int main(void){

2017-11-26 18:01:04 223

原创 C++primer[习题][第二章][31-42]

2.31 r1 = v2; //合法。 p1 = p2; //不合法,p2为底层const,需要p1也为底层const。 p2 = p1; //合法,int指针可以转化为const int指针。 p1 = p3; //不合法,p3为底层const,需要p1也为底层const。 p2 = p3; //合法。2.32 int null =

2017-11-25 11:18:06 284

原创 C++primer[习题][第二章][21-30]

2.21 int i = 0; double dp = &i; //int类型的值不能初始化double*类型的实体。 int ip = i; //int类型的值不能初始化int类型的实体。 int *p = &i; //正确。2.22 if(p) //如果p不为空则为真 if(*p) //如果 *p的值非0则为真2.23首先

2017-11-25 11:17:13 764

原创 LightOJ-1033-Generating Palindromes

题目传送门题意:求这个字符串最少添加几个字符可以成为一个回文串。思路:动态规划, dp[i][j]表示第i个字符到第j个字符最少添加的字符数使其成为回文串。#include <bits/stdc++.h>using namespace std;int main(void){ int T, cas=1; scanf("%d", &T); while (T--) {

2017-10-21 10:50:27 311

原创 LightOj-1030-Discovering Gold

题目传送门题意:有一个六面体骰子,每投一次就往前走多少格,并可以获得格子上的金币,求走到最后可以获得的金币数的期望。思路:当前点的期望P[i] = A[i]+(P[i-1]+P[i-2]+P[i-3]+P[i-4]+P[i-5]+P[i-6])/6,如果不够六格, 则为P[i] = A[i]+(P[i-1]+P[i-2]+P[i-3]+…+P[i-n])/n。#include <bits/stdc+

2017-10-21 10:47:08 393

原创 LightOj-1029-Civil and Evil Engineer

题目传送门题意:给定一个无向图,求他的最小生成树与最大生成树的平均值。思路:用Kruskal正着求最小生成树,再倒着求最大生成树。#include <bits/stdc++.h>using namespace std;struct node{ int x, y, w;}edge[30000];int cnt;int n;int fa[15000];int cmp1(node a,

2017-10-21 10:41:01 280

原创 LightOj-1028-Trailing Zeroes (I)

题目传送门题意:给定一个N,求有多少种进制表示N存在后导0。比如2的二进制为10。思路:求N有多少个因子。#include <bits/stdc++.h>using namespace std;long long num[100000];int book[1000100];int len;void init(){ num[0] = 1; memset(book,0,sizeo

2017-10-21 10:38:00 267

原创 LightOj-1024-Eid

题目传送门题意:求N个数的最小公倍数。思路:结果比较大,需要用大整数去写。#include <bits/stdc++.h>using namespace std;struct bigInt{ int num[2000], len; void clear() { len=0; memset(num, 0, sizeof(num)); }

2017-10-21 10:33:27 286

原创 LightOj-1023-Discovering Permutations

题目传送门题意:输出A-Z里面前N个字母的全排列的前K个。思路:使用next_permutation()函数。#include <bits/stdc++.h>using namespace std;int main(void){ int T,cas=1; scanf("%d", &T); while (T--) { int n, k;

2017-10-21 10:31:10 298

原创 LightOj-1022-Circle in Square

题目传送门题意:给定一个圆的半径,求这个圆的外切正方形的面积与这个圆的面积差。思路:面积差为4*r*r-PI*r*r。#include <bits/stdc++.h>using namespace std;const double PI = 2*acos(0.0);int main(void){ int T, cas=1; scanf("%d", &T); while (

2017-10-21 10:29:12 294

原创 LightOJ-1020-A Childhood Game

题目传送门题意:有n个石头,一次一个人只能拿一块或者两块,如果Alice先开始拿,那么拿最后一块石头的人输,如果Bob先开始拿,那么拿最后一块石头的人赢。给出石头的个数和谁先开始拿,问谁能赢。思路:如果Bob先拿,则只要石头数是3的倍数就是Alice赢;如果Alice先拿,则只要是石头数-1是3的倍数就是Bob赢。#include <bits/stdc++.h>using namespace std

2017-10-21 10:26:14 328

原创 LightOJ-1019-Brush (V)

题目传送门题意:有N个路口和M条路,求从1路口到N路口的最短路径。思路:裸的最短路模板。#include <bits/stdc++.h>using namespace std;int mp[120][120];int n, m;const int inf = 0x3f3f3f3f;void init(){ for (int i = 0; i <120; i++) {

2017-10-21 10:18:45 310

原创 LightOJ-1017-Brush (III)

题目传送门题意:一个二维平面上有N个灰尘,有一个宽度为w的刷子,一次可以刷一个w宽度的横线范围内的所有灰尘,只能刷k次,求刷的灰尘最多有多少。思路:动态规划,dp[i][j]表示前i个灰尘刷j次最多可以刷掉的灰尘数。状态转移方程为dp[i][j] = max(dp[i][j], dp[p-1][j-1]+sum)#include <bits/stdc++.h>using namespace std;

2017-10-21 10:15:53 264

原创 LightOJ-1016-Brush (II)

题目传送门题意:有一个宽为w的刷子,刷子只能沿着x轴刷,有n个灰尘的坐标,问至少多少次才能刷完所有的灰尘。思路:排序之后直接枚举。#include <bits/stdc++.h>using namespace std;int y[50000+1000];int n, w;bool cmp(int a, int b){ return a<b;}int main(void){

2017-09-06 21:37:25 326

原创 LightOJ-1015-Brush (I)

题目传送门题意:求输入的灰尘的总体积,负数不考虑。思路:求和。#include <bits/stdc++.h>using namespace std;int main(void){ int T, cas = 1; scanf("%d", &T); while (T--) { int sum=0, n,x; scanf("%d", &n

2017-09-06 21:34:36 364

原创 LightOJ-1014-Ifter Party

题目传送门题意:给定两个数p,l,求所有x,使p%x==l。思路:注意l>x。#include <bits/stdc++.h>using namespace std;int ans[10100];int main(void){ int T, cas=1; scanf("%d", &T); while (T--) { int p, l, num =

2017-09-06 21:32:25 294

原创 LightOJ-1013-Love Calculator [LCS][DP]

题目传送门题意:给定两个字符串,求构造一个字符串包含这两个字符串,求最短的构造字符串和不同构造字符串的数量。思路:dp[x][y]数组表示从a[1]~a[x],b[1]~b[y]所能构造的最短字符串的长度,ans[x][y]表示a[1]~a[x],b[1]~b[y]所能构造的字符串的数量。#include <bits/stdc++.h>using namespace std;int main(voi

2017-09-06 21:29:03 339

原创 LightOJ-1012-Guilty Prince [DFS]

题目传送门题意:给定一个迷宫,求与’@’相连的面积一共有多大。思路:红黑砖问题,直接从’@’处DFS并记录个数。#include <bits/stdc++.h>using namespace std;char mp[30][30];int cnt, n, m;int next[4][2] = {1,0,-1,0,0,1,0,-1};void dfs(int x, int y){ cn

2017-08-28 16:03:36 372

原创 LightOJ-1011-Marriage Ceremonies [状态压缩][DP]

题目传送门题意:给n对男女两两之间的好感度,求将他们所有两两结合起来得到的最大好感度。思路:状压DP,dp[i][j]表示选前i个人的j种选法的最大好感度。#include <bits/stdc++.h>using namespace std;int dp[20][70000];int a[20][20];int main(void){ int T, cas=1; scanf(

2017-08-28 15:59:52 335

原创 LightOJ-1010-Knights in Chessboard [规律]

题目传送门题意:象棋中马是走日字形,问在m*n的棋盘中最多可以放多少个马,使他们不能互相攻击。思路:规律题。 - 如果只有一行或者一列,则所有的棋盘均可以放马。 - 如果有两行或者两列,则一个田字型可以放2*2个马,然后空出一个田字型。 - 其他情况则可以放总面积的一半。#include <bits/stdc++.h>using namespace std;int main(void){

2017-08-28 15:56:42 416

原创 LightOJ-1009-Back to Underworld [二分图染色]

题目传送门题意:给定n种对立关系,求一方的人最多有多少个。思路:二分图染色问题。如果当前节点为一种颜色,则与之相连节点全部都为另一种颜色。统计两个颜色个数,取最大值。#include <bits/stdc++.h>using namespace std;struct node{ int to, next;}edge[201000];int head[100000+1000], cnt;

2017-08-28 15:49:48 348

原创 LightOJ-1008-Fibsieve`s Fantabulous Birthday [规律]

题目传送门题意:给定一个图表,求第n个数的坐标。思路:规律题,1 * 1的方阵最外层为1,2 * 2的方阵最外层为[2,4], 3 * 3的方阵最外层为[5,9],可知n*n的方阵最外层为[(n-1)^2+1,n^2]。可求出第N个数所在的最大方阵的行数和列数,根据行数的奇偶判断是先行后列还是先列后行增加,然后根据N与对角线的比较得到行号列号,#include <bits/stdc++.h>usin

2017-08-28 15:46:06 333

原创 LightOJ-1007-Mathematically Hard [欧拉函数]

题目传送门题意:求下从a到b的所有数的欧拉函数的平方和。欧拉函数:小于n的与n互质的数的个数。思路:预处理筛选,求前缀和。#include <bits/stdc++.h>using namespace std;unsigned long long ans[5000100];void init(){ ans[0] = 0; ans[1] = 1; for (int i =

2017-08-28 15:38:05 260

原创 LightOJ-1006-Hex-a-bonacci

题目传送门题意:对递归函数进行优化。思路:易知此递归函数为一递推式,即数组第K个数为第K-6个数到第K-1个数之和,可以用循环写。#include <bits/stdc++.h>using namespace std;const int mod = 10000007;int f[10000+1000];int main(void){ int T, cas = 1; scanf(

2017-08-27 20:40:07 292

原创 LightOJ-1005-Rooks [组合数学]

题目传送门题意:N*N的棋盘放K个车,一个车所在的行列不能有第二个车,求有多少种放法。思路:简单组合数学,如果K>N则不可能放下。K<=N有C(N,K)*C(N,K)*K!表示从N行中选K行,从N列中选K列,然后全排列。#include <bits/stdc++.h>using namespace std;long long C[40][40];void init (){ for (in

2017-08-27 20:37:42 249

原创 LightOJ-1004-Monkey Banana Problem [DP]

题目传送门题意:给定一个菱形的阵列,每次只能向左下或者右下移动,问从最上边走到最下边数字之和最大为多大。思路:DP,可以分解成两个数塔。#include <bits/stdc++.h>using namespace std;int dp[210][210];int main(void){ int T, N, cas=1; scanf("%d", &T); while (T

2017-08-27 20:12:26 300

原创 LightOJ-1003-Drunk [拓扑排序]

题目传送门题意:给定一些酒和一些顺序,如果想喝B酒必须先喝A酒。问可不可以喝完所有的酒。思路:拓扑排序,用map存出现过的字符串。#include <bits/stdc++.h>using namespace std;int head[21000],ans;int book[21000],m;struct node{ int next; int to;}edge[21000

2017-08-27 20:08:47 279

原创 LightOJ-1002-Country Roads [最短路][Dijkstra]

题目传送门题意:给定无向图,求一个城市t到其他城市的最低成本,成本的定义为路径中的最大消费。思路:这个题跟POJ-2253-Frogger类似,可以用Dijkstra算法变形来写。也可以用kruskal来写。#include <bits/stdc++.h>using namespace std;int n, m;int mp[550][550];const int INF = 0x3f3f3f3

2017-08-27 20:03:41 319

原创 LightOJ-1001-Opposite Task

题目传送门题意:输入T组数据,每组数据一个数,将这个数字分解成两个数字之和,要求这两个数字范围为[0,10]。#include <bits/stdc++.h>using namespace std;int main(void){ int T; scanf("%d", &T); while (T--) { int n; scanf("

2017-08-27 19:58:43 312

原创 LightOJ-1000-Greetings from LightOJ

题目传送门题意:输入T组数据,每组数据两个数,输出这两个数的和。#include <bits/stdc++.h>using namespace std;int main(void){ int T, cas = 1; scanf("%d", &T); while (T--) { int x, y; scanf("%d %d", &x,

2017-08-27 19:55:59 288

原创 C++primer[习题][第二章][21-30]

2.21 int i = 0; a>double *dp = &i; b>int *ip = i; c>int *p = &i;a 错误, 指针类型应与指针指向对象的类型相同。b 错误, 少了取址符&c 正确2.22 if (p) //选择语句,成立条件为指针p非空。 if (*p) //选择语句,成立条件为指针所指对象非空。2.23不能,因为需要更

2017-08-27 19:52:13 331

原创 POJ-3020-Antenna Placement [二分匹配][最小路径覆盖]

题目传送门题意:一个地图由o和*组成,一个信号塔可以覆盖两个连续的*。问至少需要多少个信号塔才能覆盖所有的*。思路:先将所有的’*’hash,然后建立二分图,用匈牙利算法算出最大匹配数。最小路径覆盖数 = 顶点数 - 最大匹配数#include <algorithm>#include <iostream>#include <cstdlib>#include <cstring>#include

2017-08-24 10:13:08 300

原创 HDU-4185-Oil Skimming [二分匹配]

题目传送门题意:一个地图由’.’和’#’组成,问有多少个不重叠的’##’。思路:先将所有的’#’hash,然后建二分图,用匈牙利算法算最大匹配日数,因为边建了两次,所以结果除以二。#include <algorithm>#include <iostream>#include <cstdlib>#include <cstring>#include <cstdio>#include <cmat

2017-08-24 09:46:43 258

原创 HDU-2389-Rain on your Parade [二分匹配][Hopcroft-Carp]

题目传送门题意:有n个人的坐标和速度,有m个伞的坐标,问有多少人能在t秒内到伞底下,一个伞底下只能有一个人。思路:二分匹配,用匈牙利算法无限超时,又改用邻接表还是超时,最后查资料才知道处理数据较大的二分匹配需要用Hopcroft-Carp算法。Hopcroft-Carp算法模板:/* *********************************************二分图匹配(Hopcro

2017-08-24 08:53:38 477

原创 HDU-2819-Swap [二分匹配][输出路径]

题目传送门题意:给定一个只有0 1的矩形,问能否通过交换行列使对角线上的数全为1,如果可以输出交换的路径。思路:首先通过匈牙利算法算出最大匹配,如果最大匹配数不等于矩阵的行数,则必然不会成功。只交换行,或者只交换列都可以交换出来。#include <algorithm>#include <iostream>#include <cstdlib>#include <cstring>#includ

2017-08-23 09:17:32 269

空空如也

空空如也

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

TA关注的人

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