题解
文章平均质量分 72
SwordHoly
咱大四了..
展开
-
PKU1061 解题报告 青蛙的约会 __用扩展欧几里得解模同余方程
题目描述: 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮原创 2009-08-07 18:43:00 · 11824 阅读 · 9 评论 -
HDU 3183 RMQ
<br />题意:<br /> 在一个n位数中删除m位使其值最小。<br />解法:<br /> 题目要求与从n位数中取出n-m位使其最小等价,然后就很简单了,每次RMQ出(l+1,n-(n-m-i)-1)最小值输出即可,l为前一次最小值位置,i为当前在取第i位,n-(n-m-i)-1是为了保证取出这个最小值后加上后面的位数保证能构成n-m位。<br />代码:<br /> #include<iostream>#include<string>using namespace std;cons原创 2010-10-06 18:37:00 · 1436 阅读 · 2 评论 -
HDU 3074 Multiply game 逆元 树状数组
<br />题意:<br /> 求一个区间内所有数的积模一个素数的值,会动态改变其中的值。<br />题解:<br /> 可以用线段树,网上大部分搜到的都是线段树。<br /> YY的一个方法:对所有数取对数,放进树状数组里,对于求[l,r]的积可以e^( (q(r)-q(l-1)) fmod log(MOD) ),极大的精度误差基本上一个点都过不了,= =!<br /> 多校的解题报告里:<br /> 对于求[l,r]的积可以q(r)*inv(q(l-1)),inv(x)为求x关MOD的逆元,注意更新原创 2010-10-06 20:30:00 · 1107 阅读 · 1 评论 -
PKU 1091 跳蚤 数论 容斥原理
#include#includeusing namespace std;#define MAXN 20#define MAXP 200000__int64 p[MAXP],tp,ans,n,m;void get_pri(__int64 x) //求素因子{ int i; tp=0; for(i=2;i*i { if (x%i==0) { while(x%i==0) x/=i; p[++tp]=i; } } if (x!=1) p[++tp]=x;}__原创 2010-10-21 23:55:00 · 1137 阅读 · 2 评论 -
杭州现场J题_Infinite monkey theorem
<br />构造一个DFA, 对于样例:<br />2 100<br />a 0.312345<br />b 0.687655<br />abab<br />即:<br /> (b)<br />-----------<br /> | /<br /> | /<br /> | /<br />// /<br /> (a) (b) (a) (b) <br />NULL--原创 2010-10-26 18:56:00 · 1154 阅读 · 0 评论 -
ZJU 3433 Gu Jian Qi Tan 贪心 优先队列
<br /><br />跟前一次月赛的算法类似,能打就打,不能打就用当前的替换原来打过的花费最大的怪,贪心好题,开始往DP上想了好久,复杂度怎么都降不下来,贪心才是王道啊。<br />#include<iostream><br />#include<stdio.h><br />#include<algorithm><br />#include<queue><br />using namespace std;<br />int spe[1005][1005];<br />int add[1005];<br /原创 2010-11-15 12:30:00 · 871 阅读 · 0 评论 -
In Action 最短路加背包 HDU 3339
<br />题意:<br /> AC大神要引爆核弹毁灭世界,他有n个电站,每个电站有一定电量,引爆需要至少一半的电量。<br /> 从原点0可以派出足够多的tank去占领,占领电站就能切断该电站对引爆核弹电量的供应。原点与电站之间构成一副无向带权图,权表示从一个点到另一个点tank的耗油量,求拯救世界需要最少的油耗。<br />题解:<br /> 一遍最短路,算出占领每个点最少需要油耗。<br /> 然后一个点有两个属性,油耗和电量,将油耗当重量,电量当价值,0/1背包即可。<br />代码:<br原创 2011-01-17 10:42:00 · 791 阅读 · 0 评论 -
Fix 状态压缩DP HDU 3362
<br />题意:<br />给n个点(n<=18),有些点固定了,有些点没固定。每个点都有坐标,目标是把所有点都固定住,一个未固定的点至少要跟两个点相连才算被固定。<br />题解:<br />由于n不大,所以可以用二进制位表示该点是否被固定,一遍DP即可。<br />代码:<br /><br />int main(int argc, char** argv)<br />{<br /> int i,j,m,x,y,sum;<br /> double l1,l2;<br /> while(原创 2011-01-17 13:02:00 · 1349 阅读 · 0 评论 -
KTX Train Depot [UVAlive 4852]
<br />题意:<br /> 有很多火车会从东西两个方向进入轨道,进入时间小于0,出去时间大于0,问最少要多少轨道使得轨道之间不互相堵塞.堵塞是指一辆火车要往西另一辆要往东,两个互相堵塞都出不去,或者两个都向一个方向,但是在门口的出去时间比他的后面的出去时间晚.<br />题解:<br /> 首先考虑一个方向的,比如都是从东进从东出,按进入时间排序是显然的,比方说按时间从小到大排,那么一辆火车想进入一个轨道的话它的出去时间必然要比已有轨道的出去时间小,否则堵塞了,然后他必定接在跟他时间最接近的轨道上原创 2011-03-02 19:34:00 · 1028 阅读 · 0 评论 -
Trade HDU 3401 单调队列DP
<br />题意:<br /> 给定每天的股票买进上限,买进价格,卖出上限,卖出价格,每两次买卖操作中间必须间隔w天,每天最多持有maxp个股票,问n天后最大收益是多少<br />题解:<br /> DP方程显然:<br /> dp[i][j]=max(不买不卖,买入操作,卖出操作)<br /> 不买不卖<br /> dp[i][j]=max(dp[i][j],dp[i-1][j])<br /> 买<br /> dp[i][j]=max(dp[pre][k]-(j-k)*AP[原创 2011-03-16 18:07:00 · 1647 阅读 · 0 评论 -
HDU 3804 Query on a tree 非递归深搜 STL应用
<br /><br />题意:<br /> 给定一颗树,边有权值,有q个查询,每次查询,x,y求1到x直接的所有不大于y的边的最大值.<br />题解:<br /> 离线,先读入所有查询,再深度遍历这棵树,遍历到一条边就把边的权值扔到set里,返回的时候再把这条边的权值删掉.<br /> 如果遍历到的当前点有询问,则对set进行upbounder,找到比当前y大的第一个位置,对迭代器--即可.<br />/* <br /> * File: main.cpp<br /> * Author: swordho原创 2011-03-30 16:14:00 · 1527 阅读 · 0 评论 -
Fire Drill [UvaLive 5064] BFS+0/1背包
<br /> <=写成<<检查了好久= =!<br />题意:<br /> 给你一个多层迷宫,每层迷宫有向上或者向下的楼梯,有些人被困在迷宫里面,每救一个人获得一定分数,不带人每走一格花费时间1,带人花费时间2,问在s秒内最多获得多少分数.<br />题解:<br /> 关键是人跟人之间没影响,所以先BFS预处理出跟每个人的最短距离,然后距离*3即为就这个人的花费时间,做一遍0/1背包即可.<br /> <br />代码:<br />/* * File: main.cpp * Author: s原创 2011-04-06 15:10:00 · 965 阅读 · 0 评论 -
Perfect Domination on Trees [UVALive 3346] 树形DP
题意:给你一棵树,用黑白染色,求最少的染黑的个数,使得每个白点都与且只与1个黑点相连。题解: dp[x][f]表示将x染成f状态最少需要染多少黑点,f有三种状态:0,1,2 0:表示该点为白色,且他的所有儿子都为白色。 1:表示该点为黑色。 2:表示该点为白色,且他有一个儿子为黑色。 dp[x][1]=sigma(min(dp[son(x)][1],dp[son(x)][0])); dp[x][0]=sigma(dp[son(x)][2]);原创 2011-04-24 19:15:00 · 1453 阅读 · 0 评论 -
哈尔滨水题报告
<br />在网上观战的时候群里算法都说的差不多了,然后杭电把题目挂出来以后和君爷又去做了下,据tracyzhu说知道算法以后再去做要损RP的,希望RP别降太多。基本把水题搞完了,还剩下一个3D凸包,一个DLX和一个O(n)DP,有空再去搞,斜率优化DP基本看完了,过几天估计就能a掉了。<br />A:<br />树形DP,treedp(cur,flag)表示访问到cur点,flag为1Alice走取最小的,0表示Bob走取最大的。<br />做的时候被时限恶心到了,用vectorTLE,改成临接表还是TL原创 2010-10-06 19:49:00 · 1423 阅读 · 1 评论 -
HDU 3069 Arrest
<br />题意:<br /> 最小要多少警察能把一棵树中所有小偷抓出来。<br />思路:<br /> 派一个警察守住路口,别的警察把这颗子树除了最大的一棵以外的都搜一遍,再一起往最大的那一颗子树过去,这时候就不需要派人守住路口了。<br />代码:<br />#include<iostream>#include<vector>#include<iterator>using namespace std;#define MAXN 1005vector<int> map[MAXN];原创 2010-10-06 19:58:00 · 1084 阅读 · 1 评论 -
HDU 2222 Kewords AC自动机
<br />/*<br />TRIE结构,在使用前必须调用初始化init()!!!<br />主要调用Ins,ser,返回值都是TRIE中的下标;del,返回有无字符串(删除成功否)<br />*/<br />#include<stdio.h><br />#include<iostream><br />#include<memory.h><br />#include<queue><br />using namespace std;<br />const int CTNUM = 26; //储存原创 2010-08-12 20:28:00 · 1057 阅读 · 0 评论 -
PKU1737 解题报告 Connected Graph __高精度加法,乘法,减法,组合数
Connected Graph 链接地址http://acm.pku.edu.cn/JudgeOnline/problem?id=1737 时空限制Time limit:1 Seconds Memory limit:30000K题目内容DescriptionAn undirected graph is a set V of vertices and a set o原创 2009-08-11 16:04:00 · 2179 阅读 · 3 评论 -
大灰狼和小白兔
大灰狼和小白兔 链接地址http://acm.nbu.edu.cn:8080/JudgeOnline/showproblem?problem_id=1371时空限制Time limit:1 Seconds Memory limit:65536K题目内容Description在一个遥远的地方,有一座不知名的高山,周围有 n 个兔子的窝,分别标记为 0 至 n-1 。小原创 2009-08-10 15:59:00 · 1785 阅读 · 0 评论 -
Lucky number__zju3233 解题报告
Lucky NumberTime Limit: 5 Seconds Memory Limit: 32768 KB Watashi loves M mm very much. One day, M mm gives Watashi a chance to choose a number between low and high, and if the choosen num原创 2009-08-31 09:40:00 · 960 阅读 · 1 评论 -
The Peanuts--很水的模拟题~~
题目描述: Mr. Robinson and his pet monkey Dodo love peanuts very much. One day while they were having a walk on a country road, Dodo found a sign by the road, pasted with a small piece of paper, saying原创 2009-09-03 13:56:00 · 948 阅读 · 0 评论 -
ACM Hacker (USTC1042 合肥赛区网络预选赛热身赛 B题)
这题题意比较难懂,不过幸好样例给的比较好,通过分析样例还是能懂得题目意思的,对于每个数据要么测输入,测输入要花费ai次,要么测输出,测单个输出要花费2^bi次,总共n个数据,求测完所有数据的最少次数,比较暴力的是对每个数据枚举其测输入或测输出,时间复杂度O(2^n);不过想到一个优化,想求出所有ai的和ans作为上限,每次找到更小的更新ans,大于ans直接减枝减掉,这样是能减原创 2009-09-05 18:53:00 · 2328 阅读 · 0 评论 -
Solving the Problems Zju3230 解题报告
Solving the ProblemsTime Limit:1000MS Memory Limit:65536KTotal Submit:36 Accepted:13 Description Programming is fun, Aaron is addicted to it. In order to improve his programming skill, he decid原创 2009-09-03 18:37:00 · 889 阅读 · 1 评论 -
哈尔滨赛区热身赛 A题
数据量很小可以搜索,注意对u=1时要特殊处理,否则超时#include#includeusing namespace std;bool map[10][10];int a[30],n,m,ans,time;int s[7]={0,25,7,3,3,1};int min(int x,int y){ if (x else return y;}int sa(int u){ int i,j,c;原创 2009-09-11 20:05:00 · 697 阅读 · 1 评论 -
宁波赛区网络预选赛 C题 Code Merging 求最小字典序的LCS
#include#include#include#includestruct Node{ char str[300]; int len;};struct LLL{ int li,lj,k;};const int M = 1005 ;LLL len[M][M];int MM[M][3];int t; Node a[M],b[M];int LCS( Node *a , int la , Node原创 2009-09-12 20:14:00 · 1220 阅读 · 0 评论 -
PKU2352 树状数组
#include#includeusing namespace std;int c[33000],ans[20000],MaxArray;struct point{ int x,y; /*bool operator { if (x if (x==rhs.x) return y else return false; }*/};point a[20000];int lowbi原创 2009-11-11 17:31:00 · 882 阅读 · 0 评论 -
pku3368 线段树
每个节点额外存5个信息,lx为最左边的端点的序号,lf为跟最左边那个端点序号相等的点的个数,max为这段线段中相等节点个数最大值;rx为最左边的端点的序号,rf为跟最左边那个端点序号相等的点的个数。 #include #define N 100010#define MAX(x,y) (x>y?x:y)int a[N];struct node{ int left,right,mid;原创 2009-11-28 16:26:00 · 669 阅读 · 0 评论 -
HDU 3304 求杨辉三角第N行中能被素数P整除的数的个数
等价于C(n,m)%p==0求m的个数n!/(m!*(n-m)!)%p==0N!中p的因子个数等于m!与(n-m)!中的p的因子和即f(n) ==f(m)+f(n-m) //f(n)表示n!所含有的因子数 F(n)=n/p+n/(p^2)+....即:n/p+n/p^2+...=m/p+m/p^2+..+(n-m)/p+(n-m)/p^2+... (1)又因为n原创 2010-04-22 16:08:00 · 2425 阅读 · 1 评论 -
POJ 3691 DNA Repair AC自动机
<br />/*<br />TRIE结构,在使用前必须调用初始化init()!!!<br />主要调用Ins,ser,返回值都是TRIE中的下标;del,返回有无字符串(删除成功否)<br />*/<br />#include<stdio.h><br />#include<iostream><br />#include<memory.h><br />#include<queue><br />using namespace std;<br />const int CTNUM = 26; //储存字母的数目<原创 2010-08-12 20:24:00 · 1423 阅读 · 0 评论 -
Dome of Tuxville [UVALive 3347] 模拟退火
<br />题意:有n个楼,给定xy坐标和高度,有一个防护盾核心,以他为球心的半球内的都处于他的保护之下,求他的坐标,使得他需要覆盖全部楼的半径最小。<br />题解:<br />模拟退火。<br /> <br />第一个模拟退火,哈哈。<br />传统的模拟退火如果当前状态更有就接受,否则以一定概率接受,概率的存在保证不会跳进局部最优而出不来。<br />不过用概率搞貌似效果不是很好,然后就初始生成100组解,对着100组并行操作,只在更优的时候接受,这样每组解最后都会到达他所在区域的局部最优解,而全局最原创 2011-04-24 19:36:00 · 1261 阅读 · 2 评论