
ACM
文章平均质量分 61
泳裤王子
这个作者很懒,什么都没留下…
展开
-
基础最短路算法【渣】
重新手敲下最短路的代码。。bellman-forddijkstrafloydspfa(bellman-ford+queue)dijkstra+heap(priority_queue)怕自己堆敲不出来 - -........用的STL。拿 HDOJ 2544 验的代码。#include#include#include#include#include#incl原创 2013-05-18 20:53:20 · 1002 阅读 · 0 评论 -
CF 300C - Beautiful Numbers [组合数求模]
数学是硬伤。分析题目后知道就是求sigma(C[i,n]%mod)1 ≤ n ≤ 106下面有两种方法,一、预处理出阶乘,直接根据组合数公式 C[i,n] = n!/( i!*(n-i)! ),由于涉及到除法取模,所以要求下逆元。62ms.#include#include#include#include#include#include#inclu原创 2013-05-10 17:14:57 · 1526 阅读 · 1 评论 -
CF水题四道
深夜无聊,cf上刷水题练python...结果发现是被练好么... 1ATheater Square#!/usr/bin/env python import math n, m, a = map(int, raw_input().split())print int(math.ceil(n*1.0/a)*ma原创 2012-11-13 03:26:37 · 1124 阅读 · 0 评论 -
2012 ACM/ICPC Asia Regional Tianjin Online [赛后解题报告]
请原谅我是个弱逼。Pro.IDTitle4278Faulty Odometer4279Number4280Island Transport4281Judges' response4282A very hard mathematic problem4283You Are the O原创 2012-09-12 22:46:09 · 1418 阅读 · 0 评论 -
HDU 4282 A very hard mathematic problem [剪枝/二分]
这题暴力+剪枝就可以过,重点是一个强剪枝:当z=2时,用完全平方公式解,直接得出符合的解数。或者二分y,因为当x、z确定时,f是y的增函数。但是二分我不知道为什么用while(low[mark]1、暴力+剪枝#include#include#include#include#include#include#include#includeusing name原创 2012-09-12 22:38:17 · 1446 阅读 · 0 评论 -
HDU 4287 Intelligent IME [模拟]
这题就很傻逼,因为按出来的字母 对应 唯一的 数字按键。代码:#include#include#include#include#include#include#include#includeusing namespace std;inline int Rint() { int x; scanf("%d", &x); return x; }inline int m原创 2012-09-12 12:51:13 · 1002 阅读 · 0 评论 -
HDU 4278 Faulty Odometer [模拟]
把乱了以后的数码映射到真实的数码,然后就8进制转10进制。代码:#include#include#include#include#include#include#include#includeusing namespace std;inline int Rint() { int x; scanf("%d", &x); return x; }inline int原创 2012-09-12 12:49:07 · 796 阅读 · 0 评论 -
HDU 4279 Number [数论+简证]
题意: 给出一个f(x), 表示不大于x的正整数里,不整除x 且 跟x有大于1的公约数 的数的个数。定义F(x), 为不大于x的正整数里,满足f(x)的值为奇数的数的个数。题目就是求这个F。分析:打表找规律的方法我就不说了。这里我们来简单推理证明下。先来看f(x),“不整除x” 等同于 不是x的约数,“跟x有大于1的公约数” 等同于 不是x的互质数。而且从F的定义知道,我们只需要考虑f原创 2012-09-12 12:38:22 · 1889 阅读 · 0 评论 -
2012 ACM/ICPC Asia Regional Tianjin Online [赛后解题报告]
请原谅我是个弱逼。Pro.IDTitle4278Faulty Odometer4279Number4280Island Transport4281Judges' response4282A very hard mathematic problem4283You Are the O原创 2012-09-11 11:12:58 · 995 阅读 · 0 评论 -
2012 ACM/ICPC Asia Regional Changchun Online [赛后解题报告]
请原谅我是个弱逼。Pro.IDTitle4267A Simple Problem with Integers4268Alice and Bob4269Defend Jian Ge4270Dynamic Lover4271Find Black Hand4272LianLia原创 2012-09-11 11:06:25 · 814 阅读 · 0 评论 -
[专辑]树状数组[updating]
一般树状数组能做的线段树都能做,除非卡你空间。。。1、单点更新+区间查询#define MAXN 100002int a[MAXN];int n; //线段 1~ninline lowbit(int x) { return x&(-x); }int getsum(int x) // 区间查询,sum[1, x]{ int ret = 0; while(x>0原创 2012-09-08 20:59:40 · 737 阅读 · 0 评论 -
HDU 4389 X mod f(x)[数位统计dp]
我以前习惯叫"按位dp",貌似一样的.以前都是用记忆化搜索做,转移起来不用多想. 现在学了这个大牛 的写法, 感觉用迭代写也不错.总结一下:就是拿到一个上界bound.然后逻辑上将bound按位划分为三份,一份是统计过的,一份是当前统计位,最后一份是未统计位.从bound的高到低位(a[n~1])进行统计,统计 i 位时, a[n~i+1]都是统计过的, 都当成a[i](即那一位上原创 2012-08-25 03:39:34 · 1237 阅读 · 0 评论 -
HDU 3415 Max Sum of Max-K-sub-sequence[单调队列优化dp]
这题是有下界的最大子段和, 无上下界的最大子段和请看hh大牛把这个归为单纯的单调队列题, 因为这个状态间不用转移, 其实无所谓啦, 思路都是一样的思路:单调队列优化dp以i结尾的最大子段和 d[i] = max{ sum[i]-sum[k] | k=[i-K , i-1] }.化为 d[i] = max(f[k])+sum[i]. f[k]=-sum[k], k=[i-k, i原创 2012-08-22 00:25:43 · 1261 阅读 · 0 评论 -
HDU 1003 Max Sum + 单调队列优化dp解法
首先贴上经典dp解法, 以i结尾的最大子段和 d[i] = max(d[i-1]+a[i], a[i]).但这不是本文的主要目的.代码 O(n) :#include#include#include#include#include#include#include#includeusing namespace std;inline int Rint() { int x;原创 2012-08-21 23:19:15 · 938 阅读 · 0 评论 -
POJ 2823 Sliding Window
http://poj.org/problem?id=2823裸的单调队列.注意: 队列里存的是下标, 就不要把他当做值用- -代码:#include#include#include#include#include#include#include#includeusing namespace std;inline int Rint() { int x; scanf(原创 2012-08-21 20:04:54 · 469 阅读 · 0 评论 -
HDU 4360 As long as Binbin loves Sangsang
这题调到后面真是调疯了.....一直wa啊wa................卧槽, 尼玛的原来是手敲队列的时候, 队列大小开小了, 因为spfa一个结点能多次进入队列......这他妈都能错........卧槽...........代码:#include#include#include#include#include#include#include#include原创 2012-08-21 04:07:02 · 502 阅读 · 0 评论 -
HDU 4377 Sub Sequence[串构造]
比赛时A的, 由于是队友先写了wa, 然后我再改的, 所以代码有点奇怪 = =.方法就是分sqrt(n)组(都取上界), 每组最多有sqrt(n)个数, 然后每组里数字递减. 这样可以保证取到最小的max(正序数, 逆序数).然后就是要保证字典序最小, 方法就是给每组数初始设为1个数, 然后余下的尽量加在后面, 这样就得到每组各自有多少数了. 代码:#include#i原创 2012-08-20 03:14:22 · 612 阅读 · 0 评论 -
Vijos 1243 生产产品[单调队列优化dp]
好吧...作为我A掉的第一道单调队列优化dp....在高中生的OJ上....而且我调了一个半小时样例....然后很神奇的1A = =...诶 这题果断比多校8的1005难啊...min里面的东西这么奇葩的...又 k 又 p 又 j 地...开始我以为只要一个队列, 搞了半天发现应该要N个队列... = =...写出来好神奇....转移方程什么的详见代码吧....要碎了....总结下:原创 2012-08-20 03:03:28 · 1245 阅读 · 0 评论 -
关于dp的状态描述
dp的第一步一般都是想出一个合适的指标d 来描述状态.而我总是想出一些重叠子问题少的, 区分性强的指标, 导致失败.其实应该尽可能想那些能造成很多重叠子问题的, 又能准确区分状态与状态的 一个指标, 这样 dp效率 才高. 维数才低.原创 2012-08-20 02:47:38 · 535 阅读 · 0 评论 -
FZU 1894 志愿者选拔[双端队列/单调队列]
写这篇题解前重复一句被很多人说过的话...."一直以为单调队列就是优先队列, 2了....."然后这题开始用priority_queue, 悲催地TLE了...科普:1/ 优先队列, 一般用堆实现, 就是STL里priority_queue那玩意...也就是优化dijkstra时用的那玩意....用处: 从一堆数里用O(1)的时间找到最优值, 用O(logn)的时间插入.删除最优原创 2012-08-19 23:32:09 · 1046 阅读 · 0 评论 -
HDU 4370 0 or 1
这题答案就是 min(1~n最短路, 包含1的最小环+包含n的最小环). (最小环不包括自环).这题没什么, 就是求最小环的时候要注意下.1/ 如果用邻接表, 那dist数组初始化肯定是INF, 但注意dist[st] 还是初始化为0. 不然之后无法拓展其他点. 然后在relax的时候 另外加一句 if(v==st) circle = min(circle, dist[u]+a[e].w原创 2012-08-19 16:36:26 · 536 阅读 · 0 评论 -
HDU 4371 Alice and Bob
队友出的#include #include using namespace std;int main(){ int T; cin>>T; for(int t=1;t<=T;t++) { int n,m; cin>>n>>m; string name; int min=999999999;原创 2012-08-18 20:50:40 · 507 阅读 · 0 评论 -
HDU 4379 The More The Better [坑爹想法题]
这题各种卡.先是卡空间, n太大了, 想要都存下来再sort只能是MLE.因为开不下, 所以逼你写空间复杂度O(1)的算法, Online扫一遍. O(n)的时间复杂度.算法是, 小于等于 L/2 的都可以加进来, 而大于L/2的可能可以加入一个, 只要min(大于L/2的)+max(小于等于L/2) 小于等于L就行了.完全不懂这题为什么用序列来描述而不用集合...这跟序根本没关原创 2012-08-18 20:45:29 · 691 阅读 · 0 评论 -
HDU 4302 Holedox Eating
多校的时候这题写了一个多小时....调了半个多小时过完样例, 然后一直wa.....当时何其悲惨....其实也是很傻逼的一道, 就是模拟动物走的部分要写得仔细一点....尽量分模块写...线段树: 单点更新, 区间查询, 维护区间离端点最近的有食物位置.注意题目线段是0~n.代码:#include#include#include#include#incl原创 2012-08-13 16:09:58 · 563 阅读 · 0 评论 -
LightOJ 1042 - Secret Origins
http://www.lightoj.com/volume_showproblem.php?problem=1042代码:#include#include#include#include#include#include#includeusing namespace std;int Rint() { int x; scanf("%d", &x); return x;原创 2012-08-01 02:01:39 · 750 阅读 · 0 评论 -
UvaOJ 112 - Tree Summing
题目就是给你一个所谓的二叉树的S-expression 让你判断是否存在指定的 根到叶子的路径和。我在这里用到cin.putback() (C里有 int ungetcA(int ch, FILE *stream) 在cstdio中),方便把下一个字符拿出来判断后再塞回缓冲区,最后用格式化读。特别注意的是,题目所说的叶子,必须具有(integer()()) 这样的形式才是一个叶子,也就原创 2012-04-12 12:01:57 · 829 阅读 · 0 评论 -
UvaOJ 127 - "Accordian" Patience
题目题意规则挺多的,但是读懂了还是清晰的,这里就不写了。模拟题。我开了个双向链表,用struct 的 oop写的,没access control 看着挺乱但是写着还是挺爽的。130行...1Y。代码:#include#include#includeusing namespace std;#define MAXN 53 //52cardsstruct C原创 2012-04-11 21:46:51 · 746 阅读 · 0 评论 -
UvaOJ 568 - Just the Facts
题目题意:输入一个n(0分析:这种题好像以前见过好多次,(对,确实做过 = =,而且当年没做出来 = =!)。现在我是用记录每个质数有多少个来算的,把2跟5的去掉(2*5 = 10)。还要打表。n感觉应该有其他方法? 其他解法补在下面。代码:#include#include#includeusing namespace std;#define bug(s原创 2012-04-11 15:05:22 · 716 阅读 · 0 评论 -
UvaOJ 550 - Multiplying by Rotation
题目题意略。分析:这题我把式子各种展开,然后推了一个东西出来,枚举位数,然后求得一个x,若x能表示为当前总位数减一的base下的数,则当前位数为最小。这样写了后TLE了,判断那里可能耗时了。看了别人的题解后,发现我考虑复杂了。其实这就是一个base位进制下的多位数乘以一位数的乘法运算。写成竖式如下,a0a1a2...an-1c× f-----------------原创 2012-04-11 12:06:01 · 619 阅读 · 0 评论 -
UvaOJ 10879 - Code Refactoring
题目貌似是一道special judge的问题,水。代码:#includeusing namespace std;int main(){ int t; cin>>t; for(int T=0; T<t; T++) { int n; cin>>n; int a[2], b[2]; i原创 2012-04-11 11:03:32 · 527 阅读 · 0 评论 -
UvaOJ 10110 - Light, more light
题目看了n遍终于看懂了,大意是,走廊上有1~n盏灯,人在走廊上走n个来回,每次走人都会按灯的开关。按开关的策略是这样的,第 i 次走,人只按灯编号能被 i 整除的灯的开关。问你最后走完了,第n盏灯的状态是开还是关。灯的初始状态都是关的。简单数论。仅当n为完全平方数时,n的状态是开。注意题目中说 n是 less then or equals 2^32-1 ,int 放不下(-2原创 2012-04-10 21:48:02 · 498 阅读 · 0 评论 -
UvaOJ 10014 - Simple calculations
在HUST上开了个比赛,加了几道刘汝佳书里的简单数学题。Uva今天我这上不去,诶,还是老样子没变么,时不时抽风。HUST那里交了题也返回Judging Error 1 。也罢,先把这题解写了。题目这题给了个公式 ai = (ai–1 + ai+1)/2 – ci (1<=i<=n). a是a0, a1,…, an+1 (n i 1000) 有n+2个元素的原创 2012-04-10 19:38:41 · 665 阅读 · 0 评论 -
UvaOJ 537 - Artificial Intelligence?
题目字符串处理有个地方不知道为什么那样会wa,详见注释。另外我采用的是一行读入,然后进行字符串parse,比较麻烦。可以采用istringstream或sscanf等,从字符串再进行格式化读入,比较好。参考:http://www.cnblogs.com/shixuehunk/archive/2011/07/22/2113728.html 、 http://www.cp原创 2012-04-09 21:50:57 · 779 阅读 · 0 评论 -
UvaOJ 10361 - Automatic Poetry
题目简单字符串处理代码:#include#includeusing namespace std;#define MAXN 102string a1, a2;void solve(){ int p1 = a1.find('<', 0); int p2 = a1.find('>', 0); int p3 = a1.find('<', p2+1原创 2012-04-09 18:31:54 · 596 阅读 · 0 评论 -
UvaOJ 10010 - Where's Waldorf?
题目简单的八方向搜索,暴力即可代码:#include#include#include#includeusing namespace std;#define bug(s) cout<<#s<<"="<<s#define stop {getchar();getchar();}#define MAXN 52#define MAXK 22char a[MAXN][原创 2012-04-09 17:18:07 · 827 阅读 · 0 评论 -
UvaOj 401 - Palindromes
刷点水题先恢复下手感....题目代码:#include#include#define MAXM 1000char fc[MAXM];void init(){ memset(fc, 0, sizeof(fc)); fc['A'] = 'A'; fc['E'] = '3'; fc['H'] = 'H'; fc['I'] = 'I';原创 2012-04-09 12:54:03 · 684 阅读 · 0 评论 -
The 36th ACM/ICPC Asia Regional Fuzhou Site / 1010 War
题目链接我一开始的想法就是递推,维护一个cover值,表示能用第二阶段等待的时间来帮下一组数据cover掉多少时间。但是我竟然没有考虑到可以不用等待下一组的第二段时间(即 t 时间)完成而马上进行第三组的 d 时间。这里wa了。改后艰难AC....残了....代码原创 2011-10-07 21:10:19 · 853 阅读 · 0 评论 -
The 36th ACM/ICPC Asia Regional Fuzhou Site / 1001 A Card Game 简证
题目链接这题题意描述得相当烦有木有!?其实就是M种牌放到M堆里,M种牌和M堆都是从1~M编号的。输入 M, 然后输入M个数,表示M种牌分别有多少张,同时也表示M堆分别的最大容量是多少。游戏是这样玩的,从第一堆开始由顶向下取(简单起见),取到的牌属于第k种,就接着到第k堆取。当原创 2011-10-07 21:03:20 · 1951 阅读 · 0 评论 -
记2011年网络赛结束
今天福州的网赛,水题还是同样水,不同的是我们a不动了。1010,最先有人a了,然后去看。开始的时候样例都看不懂,然后貌似看懂了。敲,后来发现策略竟然有漏洞...,一个多小时后才看出来,代码又搓,比赛完看到别人代码突然发现自己智商貌似有点问题。1008,我a了1010,听队原创 2011-10-07 20:12:46 · 1348 阅读 · 8 评论 -
POJ 3468 A Simple Problem with Integers
分析:这题wa了好多次(看了下discuss好多人也是这样,好题~)。一处是sum值会超int32,要用int64。还有一处是toadd要累加,我不知道是受上一题影响还是怎的..pushdown的时候直接替换了...还有,据说北大oj要用%lld读..类型:成段更新。容易错.原创 2011-09-19 22:37:32 · 483 阅读 · 0 评论