自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 资源 (1)
  • 收藏
  • 关注

原创 Dig or Climb

Dig or Climb . . 题意:给出一些山体,人可以用Vw的速度在表面行走,也可以用Vc的速度在山中严格水平的隧道通过,问最短的时间到达终点。 . . 解法:首先要注意的是在水平的线上是不能打隧道的。我用了两个数组记录:一个是哪些点可以往后面的点进行挖隧道转移,显然只要不是山顶,即该点高度低于下一个点的高度(严格小于),可以挖隧道。一个是哪些点可以通过打隧道转移,明显对于该点

2016-08-29 10:35:43 426

原创 Headstrong Student

Headstrong Student . . 水题,对于一个分数,要求求出其循环节的长度以及小数点后到循环节有多少位小数。因为数比较小,直接记忆化余数出现的位置就好了。 . .#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int maxn=1e6+10;int vis[ma

2016-08-29 10:26:07 333

原创 Counting Intersections

Counting Intersections . . 题意:给出平行于坐标轴的线段,保证无重叠,端点相同的情况,问有多少交点。 . . 解法:首先我把数离散化,那么数的大小不超过4*10^5,这样就可以用树状数组。首先把平行于x、y轴的分开存。对于垂直于x轴的按x坐标排序,对于垂直于y轴的按x坐标左端点进行排序。然后扫描垂直x坐标轴的线段,可以很快找到所以垂直y轴的而且左端点在该x坐标左

2016-08-29 10:21:31 357

原创 Median

Median . . 题目挺水的。注意给定的序列是有序的,所以其实只有两种情况,要么给定的两段序列无关,要么出现重叠,这两个情况分开弄一下就好了。 . .#include <stdio.h>#include <stdlib.h>#include <string.h>#include <algorithm>using namespace std;const int maxn = 10

2016-08-29 10:11:42 385

原创 Less Time, More profit

Less Time, More profit . . 题目是挺裸的网络流,也算例题了吧 源点和商铺连一条流量为收益的边,汇点和工厂连一条流量为工厂投资的花费。因为最大流等于最小割,对于每一个商铺,要么把商铺利益割掉,要么把工厂花费割掉,最后的收益为所有商铺的收益减去最小割就是最大利润。对于时间,我是利用了二分保证最小。 . .#include <stdio.h>#include <st

2016-08-29 10:06:19 395

原创 physics

physics . . 首先相同质量完全弹性碰撞即速度交换,那么其实这道题就相当于没有碰撞。而且由于C是相同的,所以如果一个速度开始是在第k位,那么经过t时间这个速度还是第k位。于是排序之后题目就变成已知一个速度,问t时间后他会变为多少。f(t)实际上就是一个积分。 f[t]=C∗∫1f[t]+V0f[t] = C*\int\frac{1}{f[t]}+V0 然后V0放到左边,两边同时对t

2016-08-24 11:16:14 269

原创 Rikka with Parenthesis II

Rikka with Parenthesis II . . 题意:给定一个由“(”,“)”组成的序列,看交换其中两个位置的符号使得序列合法(一定要交换)。 . . 解法:弄一个队列如果出现相邻的()就出队,然后记录有多少种不合法的情况,比如队列开头为),那么就把这个替换成(,并记录有一个不合法,如果最终队列不为空且最后为(,那么替换成)并记录。最后如果恰好只有两个或没有不合法那么就可以了

2016-08-24 10:58:53 181

原创 Ball

Ball . . 解法:贪心。因为相同的数字相互之间位置不交换更优,对于序列a的第一个1就期望移到序列b的第一个1的位置,一次类推。那么先把b的序列固定顺序,然后在赋给a序列每个数期望的位置。然后对于每次给的l,r就把l~r排一次序,看最后是不是1~n就行了。 . .#include <cstdio>#include <algorithm>using namespace std;

2016-08-24 10:53:05 223

原创 Windows 10

Windows 10 . . 解法:首先可以保证每次相同长度的操作不会超过一次,因为如果选择两次那么选择当前长度+1的操作会更优,然后每次都贪心搜索。先预处理出每种长度的操作所下降的值,然后每次都贪心找到尽量接近的数来操作,然后每次都判一下选择比当前数大于等于的操作是否更优,记录操作的步数以及更换的次数。注意音量小于0的情况是直接变为0的。 . .#include <iostream>#

2016-08-24 10:43:54 345

原创 A Simple Nim

A Simple Nim . . 这题写一个暴力看看每个数的sg函数的值,可以发现规律。 . .#include <cstdio>int x, y;int main(){ int t, n; scanf("%d", &t); while (t--) { scanf("%d", &n); x = 0; f

2016-08-24 10:37:46 256

原创 A Boring Question

A Boring Question . . 这题可以找规律(也可以证明这个规律),即m^0+m^1+…+m^n。用等差数列公式就可以求了,由于涉及除法,所以要用逆元。 . .#include <cstdio>const long long mo = 1000000007;long long m, n;long long mypow(long long x, long long n

2016-08-24 10:35:34 352

原创 World is Exploding

World is Exploding . . 解法:先求出所有Aa#include <iostream>#include <stdio.h>#include <stdlib.h>#include <math.h>#include <algorithm>#include <string.h>using namespace std;struct Node{ int id, va

2016-08-24 10:30:47 203

原创 Two

Two . . 题意:给出a,b两个字符串,问他们不必连续的字串中有多少对相同。 . . 解法:dp。f[i]表示对于b串当前读到的数字匹配到a串的第i个位置一共有的次数。 . .#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>using namespace std;cons

2016-08-24 10:26:17 155

原创 Divide the Sequence

Divide the Sequence . . 解法:这是道水题,因为是前缀,用一个队列来存,每次读入到一个负数,就往前面合并,知道它大于等于0为止,最后队列长度就是答案。

2016-08-23 11:30:24 270

原创 ATM Mechine

ATM Mechine . . 解法:dp。设f[i][j]为余额为0~i,剩余警告次数为j,所需要的最小取钱次数。转移可以为f[t-1][j-1]+f[i-t][j]+i+1,即在0~i中选t为划分点,那么对于0~t-1的钱数被警告一次,对于t~i的,即0~i-t个还有j次警告的次数。这个看起来是n^3的,但是其实可以保证读入的w超过了logK是没用的,打表可以看出超过10后答案都是一样的,

2016-08-23 10:58:59 157

原创 Bubble Sort

Bubble Sort . . 对于一个数它后退的最后位置为它初始位置加上排在它后面的比它小的数字的个数,这里可以用树状数组来维护。然后它往前的位置为它本身的值,都记录一下就好了。 . .#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>using namespace std;c

2016-08-22 11:23:45 177

原创 The All-purpose Zero

The All-purpose Zero . . 题意:给出一个串,0可以变换成任何数(包括负数),问最长严格上升子序列为多长。 . . 解法:用数组记录长度为i的结尾最小为多少,如果每次读入一个0,那么数组中每个数都更新为前一个数加一,长度为1的赋为负无穷。如果读入的不是0,那么二分搜索刚好比它小的值,看能不能更新下一位。注意因为读入0时如果每一位都搜会很慢,考虑用一个值来记录整个数组

2016-08-22 11:20:39 225

原创 Another Meaning

Another Meaning . . 解法:先用KMP判断哪些点是完全匹配,然后套个dp就可以了。 . .#include <cstdio>#include <cstring>int mo = 1000000007;char x[100010], y[100010];int next[100010], len, f[100010];bool ok[100010];void

2016-08-22 11:12:08 210

原创 Teacher Bo

Teacher Bo . . 因为X,Y都不超过1e5,所以总的曼哈顿距离数量很少,直接n*n搜索,如果有重复直接输出yes就好了 . .#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>bool flag[200010];int a[200010

2016-08-22 11:08:18 128

原创 Gambler Bo

Gambler Bo . . 把所有点编号,然后一个点如果进行翻,那么这个点就加2,周边的点加1,最后所有点都变成0,可以看出这就是一个取摸的高斯消元。

2016-08-22 10:58:38 193

原创 Life Winner Bo

Life Winner Bo . . 解法:每一种棋子的能否必胜都是可以找规律或者递推的,王可以写一个dp计算是否必胜,车的话只有在n!=m的状态下才能先手胜,皇后可以画图找规律或者写递推,马的话写个递推或者找规律,注意如果可以和棋那么不会选择输棋,画个图发现其实就是几乎一条直线上的某几个点有输赢。 . .#include <iostream>#include <stdio.h>#

2016-08-22 10:55:56 240

原创 Permutation Bo

Permutation Bo . . 对于边上的满足的期望为0.5,对于中间的满足的期望是0.3,直接算就行了 . . 队友代码#include<bits/stdc++.h>using namespace std;int a[1010];int main() { int n; while(~scanf("%d",&n)) { for(int i = 1;

2016-08-22 10:50:11 232

原创 Sqrt Bo

Sqrt Bo . . 给出一个数,问这个数进行不超过5次开根下取整能否变为1。 . . 只有5次,直接算就好了。 .#include <cstdio>#include <cstring>#include <cmath>char a[1000];int main(){ while (~scanf("%s", a)) { if (strlen(a

2016-08-22 10:47:37 173

原创 Keep On Movin

Keep On Movin . . 给出n个字母,问组成的回文串最短的最长为多少。 . . 对于奇数的我们拆分成1+偶数,最后得到k个1和l个偶数。然后考虑把这些1插进去偶数中,算出偶数的和除以k,即分成k组回文串,然后+1就好 . .#include <iostream>#include <stdio.h>using namespace std;int main() {

2016-08-22 10:45:05 119

原创 Eureka

Eureka . . 计算有多少组点集共线。 . . 这题卡常数当时T了多发。直接枚举一个点,然后看其他点与它的斜率,如果相同斜率就共线,然后算出这个点的贡献,再把这个点去掉就好了。 . . 队友代码#include<bits/stdc++.h>using namespace std;typedef long long ll;map<pair<ll,ll>,int> cnt

2016-08-22 10:40:09 140

原创 Acperience

Acperience . . 直接把所有数都取绝对值,然后求平均值就好了。 注意一下坑的地方,就是直接循环计算似乎会爆longlong(??,反正我们队当时wa了),然后推一下最终结果再计算就可以了,具体可以看看程序 . .#include <cstdio>#include <algorithm>#include <iostream>using namespace std;l

2016-08-22 10:35:14 169

原创 GCD

GCD . . 题意:给n个数,q次询问,问l到r之间的数的gcd的值为多少,并输出序列中所有(l<=r)的子序列中,有多少对的gcd值为询问的值 . . 解法:因为数越多,gcd值的数越小,可以用map先预处理第二问,然后第一问可以用线段树处理。 . .#include <iostream>#include <stdio.h>#include <stdlib.h>#inc

2016-08-22 10:28:14 259

原创 Chess

Chess . . 经典博弈问题,sg函数的应用,因为m<=20,用状态压缩存储就好了。 . . 队友代码#include <bits/stdc++.h>using namespace std;int a[2000002];int p[50];int b[50];int s[50];int T;int n, m;int x;int ans;void makefull()

2016-08-22 10:23:22 255

原创 Abandoned country

Abandoned country . . 利用给出的边构造一棵最小生成树,然后计算两个点之间的距离的期望。 其实对于树上的一条边,它被访问的次数就等于这条边往下子树的节点数乘以这条边往上的节点数,然后跑一次dfs就出来了 . .#include <iostream>#include <stdio.h>#include <stdlib.h>#include <algorithm>

2016-08-22 10:21:02 262

原创 Regular Triangles

Regular Triangles . . 这样的Notes也是第一次见 0.0 题意:给出一个正三角形,让你在三角形外找3个点,三角形内找三个点,使得图中总共有不少于9个正三角形。 . . 解法: 如图,一个正六边形以及重心可以贡献8个正三角形(还有两个大三角形),然后只要在正三角形中找多一个小的正三角形就好了

2016-08-17 11:07:20 231

原创 Sum of Digits

Sum of Digits . . 题意:给出s1、s2,问最小的数使得每位之和为s1,每位平方之和为s2,位数不超过100。 . . 解法:dp,因为不超过100位,用[900][8100]来记录到达当前状态最小的位数,以及同样位数尽量放小的值,先把全部预处理好即可。 . .#include <iostream>#include <stdio.h>#include <stdli

2016-08-17 10:55:16 536

原创 Cipher Message

Cipher Message . . 把字符串相邻相同的字符去掉,直至没法再去除为止,暴力模拟就好了 . .#include <cstdio>#include <cstring>char a[200010];int nextt[200010], pre[200010];int main(){ scanf("%s", a); int n = strlen(a);

2016-08-17 10:43:32 261

原创 Shortest Subchain

Shortest Subchain . . 题意:给出一条链,问第一个点到最后一个点的最短路径,要求走过的边的顺序要和链的顺序相同(即不可以先走后面的边再走前面的边)。 . . 解法:记忆化搜索就好了,记录每一个点最短路径以及从哪里转移过来的。注意的是记录转移不能直接记录从哪个点,因为记录点的话该点在后面的边加入时可能会改变该点前面的路径,所以要把路径投影到链上,记录从链的哪个点转移过来

2016-08-17 10:41:20 258

原创 Billionaires

Billionaires . . 题意:给出n个人所在的城市以及个人财富,接下来有k起事件,表示某天某人到达某个城市,问每个城市拥有的财富值最大的天数(比其他所有城市都多)。 . . 解法:用stl直接模拟就行了 . . 队友代码#include <cstdio>#include <map>#include <string>#include <algorithm>#incl

2016-08-17 10:36:41 352

原创 Lweb and String

Lweb and String . . 题意:给一个字符串,字符串中的每一种字母可以转换成任意一种数字,问最终可能的最长严格上升子序列为多长 . . 解法:就是求字符串有多少个不一样的字母 注意一下先计算出字符长度,不要枚举过程中计算,不然会T . . 队友代码#include <cstdio>#include <cstring>char a[100010];int cnt

2016-08-16 10:24:39 364

原创 Danganronpa

Danganronpa . . 这是一道水题,主要是题目描述不清楚。 题意是有一个老师要准备n种礼物,每种礼物有ai个,老师要把这些礼物放到很多个小孩子的座位上,要连续摆放,每个座位放两种礼物,分为普通礼物和神秘礼物,问最多多少个孩子能够满足和他相邻座位的普通礼物不相同。 . . 解法:假设礼物总数为sum,人数不会超过sum/2,然后直接枚举放普通礼物就好,神秘礼物不用管,看最多能放

2016-08-16 10:20:37 257

原创 Zhu and 772002

Zhu and 772002 . . 题意:给出n个数,问有多少种取法使得取的数的积为完全平方数。 . . 解法:高斯消元的例题,质数不超过2000只有303个,每个数分解质因数并且模2就成了一个01矩阵,转换成多条式子形如 (k1+k2+k3+…)%2=0,然后对这个矩阵高斯消元,消元后每一行第一个1都是被后面的01所控制,最后结果为2^(n-矩阵不全为0的行数)-1。 . .

2016-08-16 10:13:43 267

原创 A water problem

A water problem . . 高精度取摸 . . 队友代码#include <bits/stdc++.h>struct BigInt { const static int mod = 10000; const static int DLEN = 4; const static int POW = 10000; int a[2500002], l

2016-08-16 10:05:55 201

原创 Word Ladder

Word Ladder . . 题意:给出n个字符串,字符串可以进行3种操作变换:1、换其中一个字母 2、从中增加一个字母 3、从中去掉一个字母。问从n个字符串进行变换,求最长的变换序列 . . 解法:可以变换的连一条边,然后每个点暴力bfs就好了 . .#include <iostream>#include <string>#include <string.h>usin

2016-08-15 14:12:42 161

原创 Stringer

Stringer . . 题意:已知有n中字母以及每种字母的个数,问第k大的序列是什么 . . 解法:每个位置都进行从小到大枚举,看放该字母后面能否到达k,可以就放即可。 . . 队友代码#include <cstdio>#include <cstring>long long c[51][51];char ans[1000];int a[50];long long k

2016-08-15 14:07:58 184

matlab教程

包含了matlab的许多基本操作以及使用方法,适合新手学习使用

2018-07-14

空空如也

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

TA关注的人

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