水
文章平均质量分 68
CMTM4
ACM退役
展开
-
BGL自定义权重,求dijkstra
图graphBGL有3种保存图的数据结构,分别是adjacency_list,adjacency_matrix和CSR(compressed_sparse_row_graph)就是中文对应的我觉得是前向星。我觉得CSR挺垃圾的(黑一波),所以尽量不要使用(而且是不是可变图Mutable Graph,太垃圾了!)。这里主要介绍adjacency_list的使用。adjacency_list的...原创 2018-09-02 13:08:38 · 338 阅读 · 0 评论 -
[AHOI2006]文本编辑器editor BZOIJ 1269
题目意思没啥特点,意义明显,就是测试模板。我的模板,真是烂爆炸了!!!!但是能用,勉强能用吧……不知道为啥这么慢,可能是我插入的时候偷懒采用一根链的方式插入的吧。(反正splay会自己调整……理论实践不会TLE才对啊~~~~)#include #include #include #include #include #include using namespace原创 2015-10-31 18:13:06 · 494 阅读 · 0 评论 -
【USACO4.2.4】奶牛自行车
其实是个水题,就按照题目意思来。但是我题目意思看错了3次…… 写了3个多小时……Executing... Test 1: TEST OK [0.008 secs, 3396 KB] Test 2: TEST OK [0.095 secs, 3396 KB] Test 3: TEST OK [0.054 secs, 3396 KB]原创 2015-05-16 01:42:22 · 831 阅读 · 0 评论 -
【USACO3.4.4】摇滚乐队
程序内注释有讲解/*TASK:rockersLANG:C++*/#include #define max(a, b) (a)>(b)?(a):(b)int n, t, m;int a[21];int f[21][21]={0};int b[21][21]={0}; int main(){ //freopen("rockers.in","r",stdin);原创 2015-04-07 21:32:50 · 688 阅读 · 0 评论 -
【USACO3.4.3】电网
皮克定理!!!程序最后有讲解/*TASK:fence9LANG:C++*/#include inline int abs(int k){if (k < 0)return -k;return k;}int n, m, p; int gcd(int a, int b){return !a ? b : gcd(b % a, a);} inline int cal2(int x原创 2015-04-07 21:31:23 · 678 阅读 · 0 评论 -
【USACO3.4.2】美国血统
这个…… 就是给树的前序中序遍历,求后序。没啥好说的啊…… 任何一本书上都有讲解的#include #include #include #include using namespace std; int zhong[100]={0}, qian[100]={0};int zuo[100]={0}, you[100]={0};int len;原创 2015-04-07 21:30:37 · 804 阅读 · 0 评论 -
【USACO3.3.5】一个游戏
程序里有解释#include #include #include #include using namespace std; int n;int a[105], s[105]={0};int f[105][105]; /*f[i][j] 面对[i,j]的区间, 所能取得的最大值 显然后面对的,能取得的值就是s[j]-s[i - 1] - f[i][j]原创 2015-04-07 21:23:50 · 651 阅读 · 0 评论 -
【USACO4.1.1】麦香牛块
根据数学定理:ap + bq 不能组合的最大数字,是 qp-p-q那么可以得到结论,答案一定是最大的2个数字相乘的范围之内。 这样的话,题目就是一个简单的背包问题。那什么时候会导致没有最大不能组合的情况呢?显然有1是不行的,因为可以任意组合。还有什么情况呢?"可以算所有的数的最大公约数。如果不是1,也就是说这些数不互质,那么不被这个最大原创 2015-04-07 21:34:20 · 1525 阅读 · 0 评论 -
【USACO3.3.4】家的范围
动态规划f[i][j]表示 (i,j)为右下角,所围成的最大正方形up[i][j] (i,j) 上方有多少连续的区域left[i][j] (i,j)左边有多少连续的区域up[i][j] = up[i - 1][j] + 1 或者为0left[i][j] = left[i][j - 1] +1或者为0f[i][j] = min(原创 2015-04-07 21:22:25 · 695 阅读 · 0 评论 -
【USACO3.4.1】闭合的栅栏
第一问:其实不用考虑,没这个情况。考虑的话,就考虑所有的边之间是否有交点即可。第二问:从观测点发射一个视野,看到一个栅栏。这个发射的直线视野,一定和一个栅栏的两个顶点有关系。 能看到顶点,才有可能看到这个栅栏。那么我们可以把从观测点,到顶点连线。 得到直线L1然后把直线L1,略倾斜一个小角度,然后用来check所有的其他栅栏, 看最早看到的栅栏是原创 2015-04-07 21:24:40 · 744 阅读 · 0 评论 -
【USACO3.2.3】纺车的轮子 模拟
按照题目意思模拟……而且因为旋转360度一定会重复,所以只要模拟旋转360次,每次CHECK一下是否符合要求即可。Executing... Test 1: TEST OK [0.003 secs, 3364 KB] Test 2: TEST OK [0.005 secs, 3364 KB] Test 3: TEST OK [0.005 secs原创 2015-03-10 00:35:05 · 448 阅读 · 0 评论 -
移通学院 2015校内赛
本来不想写的~ 但是想想,这辈子也就能写4次题目太水没必要说。。。值得说的是一些其他的——吐槽1、比赛居然是手动测试!用一个看似很专业的软件提交程序以后,老师用手测,没错,手输数据,手动运行,肉眼check,然后返回结果YES/NO2、7个水题,我们做了2小时。。。好弱啊,然而,其他队伍全部0题!没错,0题!!!!其中有一题是计算机二级的题目!原题!原创 2015-10-31 15:43:19 · 454 阅读 · 0 评论 -
UVA 1006 水题
挑战P122的水题#include #include #include #include #include #include #include #include using namespace std;#define LL long longLL n;LL er(LL t){ return (t*t) % n;}LL get(LL a, LL b,原创 2016-04-07 10:18:53 · 465 阅读 · 0 评论 -
HDU 5742 It's All In The Mind 水题
题解估计没人看了,毕竟是水题,把题目公式改写一下,就知道a[1],a[2]尽量大,后面数字尽量小,填数字进去即可。#include #include #include #include #include #include #include #include using namespace std;#define pr(x) cout<<#x<<" = "<<x<<"原创 2016-08-13 15:22:28 · 276 阅读 · 0 评论 -
codeforces EDU 15 (A,B,C,D,E)题解
为啥没F题?有打野说是可持久化treap,我不会啊……还有讨论别的做法的,但是我都不会……也看不懂。赛场上,最终AC也只有2个人,以后再补这道题。AMaximum Increase题:题目大意:给定一串数字,问其中连续的一段,单调递增的序列,最长的长度是多长。 是子数组,不是子序列哦!f[i] = {f[j] + 1 | a[i]>a[j]} 否则为f[i原创 2016-08-02 11:05:28 · 641 阅读 · 0 评论 -
POJ 3669 Meteor Shower 挑战P135
题目大意:给定一些点,这些点会在t时刻被毁灭。 同时,这个点上下左右4个点也被毁灭了。问从(0,0)点出发,多久可以到一个安全的点。我们可以计算出地图上所有的点, 被毁灭的最早时刻 TIME[i][j] 表示(i,j)这个点,在TIME[i][j] 以后,就变的不可访问了。那么我们可以从(0,0)开始BFS,记录g[i][j]表示到(i,j)这个点,最早可以原创 2016-05-19 21:53:56 · 362 阅读 · 0 评论 -
华为2016某比赛初赛, 傻X做法不能看
我们自以为很厉害的方法~实际上很垃圾,初赛20多分的样子,显然被刷啦~~~但是毕竟做了。。代码保留一下就好了往事不堪回首。。也不想读代码了。。直接看代码注释。。 这篇文章应该没人看吧…… 自己留纪念#include "CheckMap.h"#include #include using namespace std;//已经开启了using nam原创 2016-05-19 14:31:46 · 1917 阅读 · 0 评论 -
南京理工大学第八届程序设计大赛 sequence Dilworth定理
题目的:将一个给定的数列,拆分成K个不降序列,每个数出现且只出现一次,且在各序列中各个数相对于原数列的相对顺序不变。如7 6 9 8 10可以拆成 7 9 10和6 8。求最小的K值。题目。。。我就暴力了啊!强行模拟啊!!我感觉这样就是对的啊!!!PZ告诉我这样不对,因为数据水。。正确的做法是利用Dilworth定理我不知道那个定理。。我就暴力过了。。原创 2016-04-17 21:23:43 · 852 阅读 · 0 评论 -
挑战第二章 poj 3009 水题DFS
题目给出剪枝条件10步就剪。。直接暴力#include #include #include #include #include #include #include #include #include #include #include using namespace std;#define LL long long#define SZ(v) ((int)(v原创 2016-04-27 07:54:59 · 352 阅读 · 0 评论 -
GCJ 2016 资格赛 C题
很有意思的题啊~~核心问题,如何快速判断合数~~然后你想啊,那么多数字满足条件的一定非常多,那么只要这个数字有因子,就一定是合数。 而且题目并没有需要你输出前k个数字,所以可以这样……定义一个数字叫:新合数,新合数是,这个数字有一个因子在2~1000之间。显然,新合数一定是合数~ 那么我就不判断是否是非素数了,只要是新合数就可以啦~~原创 2016-04-10 19:34:55 · 1206 阅读 · 0 评论 -
挑战第二章习题 POJ 1974 深度优先搜索
水题直接水#include #include #include #include #include #include #include #include #include #include #include using namespace std;#define LL long long#define SZ(v) ((int)(v).size()) #d原创 2016-04-26 22:15:47 · 612 阅读 · 0 评论 -
GCJ 2009 Bribe the Prisoners
区间DP……但是细节处理比较多,代码要一些技巧……算水题吧#include #include #include #include #include #include #include #include using namespace std;#define LL long longvoid nextInt(int &x){ scanf("%d", &x);}原创 2016-04-07 15:44:35 · 444 阅读 · 0 评论 -
GCJ 2009 Problem A. Crazy Rows【位运算要加LL】
教训:自己预处理位运算的一些东西,1之类的要加上 LL,否则会出问题#include #include #include #include #include #include #include #include using namespace std;#define LL long longconst LL maxn = 100;LL n;LL er[1000原创 2016-04-07 12:40:27 · 415 阅读 · 0 评论 -
GCJ 2008 round1AA
#include #include #include #include #include #include #include #include using namespace std;const int maxn = 10000;int n;long long a[maxn];long long b[maxn];void init(){ scanf("%d", &原创 2016-04-07 10:38:26 · 407 阅读 · 0 评论 -
USACO 2.1 Ordered Fractions
Executing... Test 1: TEST OK [0.005 secs, 3564 KB] Test 2: TEST OK [0.005 secs, 3564 KB] Test 3: TEST OK [0.005 secs, 3564 KB] Test 4: TEST OK [0.005 secs, 3564 KB] Test 5: TEST OK [0.0原创 2015-01-25 11:24:15 · 345 阅读 · 0 评论 -
USACO 2.1 The Castle
BFS用洪水填充染色。 记录每个颜色的房间数量 然后按照从下往上,从左往右的顺序穷举一边,拆掉墙,如果墙两边的房间颜色相同,跳过。 颜色不同,把颜色所代表的房间数量相加,和答案对比,更新答案即可。Compiling...Compile: OKExecuting... Test 1: TEST OK [0.008 secs, 3572 KB] Test 2:原创 2015-01-25 10:45:25 · 459 阅读 · 0 评论 -
【USACO2.4.1】两只塔姆沃斯牛 模拟
纯粹的按照题目意思的模拟,小技巧:const int dx[4] = {-1, 0, 1, 0};const int dy[4] = {0, 1, 0, -1}; 定义方向变动数组。 改变方向的话,只要+1 再MOD 4即可。#include #include #include using namespace std;char map[12][12];原创 2015-02-17 13:25:29 · 885 阅读 · 0 评论 -
【USACO2.3.5】控制公司 BFS
把每个公司到每个公司,用邻接表保存。每次搜索A公司控制了哪些公司,就把A塞进队列,把和A有链接的公司的控制率加起来,超过50的,就加进队列。 最后把所有曾经进过队列的公司输出来即可。原创 2015-02-17 02:33:30 · 1218 阅读 · 0 评论 -
【USACO2.4.3】牛的旅行 最短路径
一定要注意联通两点后,新的连通块的直径并不一定是联通通过这两个点的最长距离,还可能是原来连通块的直径。因为这个,WA了好久……真心没想到Compiling...Compile: OKExecuting... Test 1: TEST OK [0.005 secs, 3724 KB] Test 2: TEST OK [0.003 secs, 3724 KB] Te原创 2015-02-17 22:29:47 · 958 阅读 · 0 评论 -
【USACO2.3.3】和为零 爆搜
直接穷举所有情况,但是要注意字典序。 这种题应该一次对…… 但是我错了2次一次是,最后一个数字我给算成两位数的十位了……一次是字典序问题……大家要注意好这2个问题就可以了……#include #include using namespace std;int n;char a[15];void dfs(int原创 2015-02-17 01:49:58 · 794 阅读 · 0 评论 -
USACO 1.3 Ski Course Design
直接穷举区间就行了- - 从[0, 16] 到[1, 17]之类的, 直接暴力一下……/*TASK:skidesignLANG:C++*/#include #include using namespace std;int n, tub[101]={0},ans(0x7fffffff), st;int main(){ freopen("skidesign.in",原创 2015-01-22 15:35:59 · 422 阅读 · 0 评论 -
USACO 1.3 Prime Cryptarithm
直接穷举搜索,剪枝。 不想剪了,反正不会TLE。/*TASK:crypt1LANG:C++*/#include #include using namespace std;int n, ans(0);int a[10];int b[100]={0};int main(){ freopen("crypt1.in", "r", stdin); freopen("原创 2015-01-21 21:40:51 · 466 阅读 · 0 评论 -
【USACO2.2.3】循环数
穷举出所有循环数,然后再判断。穷举过程,其实VIS的判断还是可以用链表的形式,这样应该就0秒秒杀了~ 现在是1ms …… BSOJ上只有一个0MS,是直接打表的……#include #include bool vis[10]={0}, zhanyong[10]={0};int TOT, n;int q[10];unsigned int a[480], tail原创 2015-02-03 21:43:42 · 599 阅读 · 0 评论 -
【USACO2.1.5】海明码
显然是一个搜索题……但是我的方法好像偏了? 速度是还可以,但是代码长,占用内存多。用邻接表的方式,来保存 i这个数字,到哪些数字的海明距离不到D的。 用链表的方式存储vis数组, 然后用链表的方式删除,这样穷举剩余可以使用的数字的时候速度会快很多,特别是如何求解的数量的话……但是别人好像都不是这么做的……好像直接暴力不做任何优化,虽然可能比我的慢,但是如果常数更小原创 2015-02-03 14:59:41 · 624 阅读 · 0 评论 -
USACO 2.1.4 Healthy Holsteins
心里感觉直接DFS也许比位运算更快, 也许是因为我没想到特别好的位运算方法……没啥好说的,直接搜就是了。(我在一个OJ上交,用了sync_with_stdio(false)的CIN版本,比scanf更快?)#include int n, m;int a[15][25], b[25];int ans[16],t=0, ans_t=25;int c[25]={0};原创 2015-02-03 11:58:11 · 667 阅读 · 0 评论 -
【USACO2.2.4】派对灯
挺有意思的一个题目。4个操作,要不做1次,要不不做。做2次等于没做。0次操作,这不用说了……就是不操作1次操作,我们可以执行1 ,2, 3, 4号操作2次操作,我们可以【12】 【 13】 【14】 等等。 其中包括【什么都不操作】3此操作,我们可以 123 124 …… 【1 22】, 【 2 33】,4次操作,我们只可以 【1234】, 或者【11 22】,原创 2015-02-04 00:37:00 · 746 阅读 · 0 评论 -
【USACO2.2.1】序言页码
这题还是挺有意思的~但是会发现,其实每一位的情况都是一样的,只需要考虑个位的0,1,2,3,4,5,6,7,8,9的情况下, 1, 5, 10的使用情况。然后在两位数的时候,十位的情况其实和个位一样,只不过类推到10 50 100的使用上而已。 两位数的个位,依然和个位数的个位情况完全一样。 所以这道题就成了水题~当然我的程序还可以精简,但是我感觉精简程序好像挺麻烦的…原创 2015-02-03 16:01:35 · 603 阅读 · 0 评论 -
【USACO2.4.4】回家 最短路
想说:什么破题目描述。自环!? 从A -> a 距离是100的话,a -> C 距离是50. 那么 那么A->C距离是150 !题目需要把A和a看成是2个截然不同的点!然后直接做最短路即可。 这题目描述我看的也是醉了…… Test 1: TEST OK [0.003 secs, 3404 KB] Test 2: TEST OK [0.003 s原创 2015-02-18 00:23:18 · 560 阅读 · 0 评论 -
USACO 1.3 Mixing Milk
直接排序贪心,没啥好说的。 可以桶排优化,但是省事直接SORT了/*TASK:milkLANG:C++*/#include #include #include using namespace std;const int max_m = 5000;paira[max_m];int n,ans(0), m;int main(){ freopen("milk.in"原创 2015-01-21 21:05:01 · 357 阅读 · 0 评论 -
【USACO3.1.2】总分 背包问题动态规划
完全背包问题。f[i][j]表示用前j个物品,放满i的空间,能取得最大价值。 f[i][j] =max f[i - a[P]]j - 1] + b[P] j按顺序用的话,数组第二维可以压掉。即为f[i] = max f[i - a[P]] + b[P]Executing... Test 1: TEST OK [0.008 secs, 3484 KB原创 2015-02-18 13:09:38 · 546 阅读 · 0 评论