自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (3)
  • 收藏
  • 关注

原创 线段树,一个更复杂的区间修改

今天AC了一道关于线段树比较复杂的题目,是关于区间修改的,但不同之处在于,修改方式有两种,一种是将给定区间内每个元素加上一个数--add,另一种是将给定区间内的所有元素设置为同一个数--set,对于每一次修改,输出整个区间的和。  可知本题关键在于pushdown函数,对于线段树中的每个节点,若我们仅仅简单的维护两个懒惰标记,并根据不同的修改方式和标志间的次序进行下放更新的话,显然有很多种情况

2014-11-30 14:21:22 1003

原创 UVA 357

和UVA 147一样的题,dp求解,直接代码:#include #include using namespace std;int query[10000],size=0;long long dp[30010]={1};int main(){ int t,end=0,m[]={1,5,10,25,50}; while(cin>>t){ query[size++]=t; e

2014-11-30 00:21:08 442

原创 UVA 147

完全背包问题,但题目给出的是实数,但单位金币只精确到美分,所以讲金币数乘100,但这样会WA,原因竟然是数据可能会给到小数点后两位以上,所以应该四舍五入一下。  还有一点就是,我们可以先将所有数据接收进来存储,然后再dp,这样一边就可以得出所有答案。#include #include #include using namespace std;double ans[100000];

2014-11-29 21:24:54 417

原创 UVA 10066 10192

两道题都是求最长公共子序列,注意第二题的输入,字符串包含空格。10066#include #include #include #include using namespace std;int a[110],b[110],dp[110][110];int main(){ int n1,n2,T=1; while(cin>>n1>>n2&&(n1||n2)){ for(i

2014-11-29 20:20:02 399

原创 UVA 10131

题目大意是给定一个序列,每个元素有两项,要求找到最长的子序列,满足第一项递增,第二项递减,其实就是一个简单的DAG动态规划问题,我们将偏序关系定义为若i的第一项小于j的第一项,且i的第二项大于j的第二项,则i《j,那么此时构成DAG,找最长路径即可。  状态的定义和状态转移方程不在多说,适当的总结一下,并不是一定要满足直观的大于小于才能构造DAG,对于一个问题,只要能抽象出偏序关系,即可尝试构

2014-11-29 17:00:50 409

原创 UVA 116

题目大意是给定一个矩阵,每次向右走一列,可以从第一列的任意一行开始,最后一列的任意一行结束,每次可以走下一列的正右,右上和右下,求一条路径,是路径上权值和最小,并且打印路径,路径序列要字典序最小。      我们用m存储原式矩阵,定义状态dp(i,j)为从第i行第j列走出矩阵所需最小和,path(i,j)为从第i行第j列走出矩阵的最优路径中,第j+1列应该走的行号。那么状态转移方程为:dp

2014-11-29 14:01:47 384

原创 UVA 10003

题目大意是给定一根木棍和n个切割点,每次切割的代价为所切木棍的长度,求切成n+1段的最小代价。  定义状态dp[i][j]为第i个切割点和第j个切割点之间切割的最小大家,那么状态转移方程为dp[i][j]=Min{dp[i][k]+dp[k][j]}+cost(i,j)(i#include #include #include using namespace std;int dp[5

2014-11-29 11:34:14 521

原创 UVA 103

题目让求给定的n个d维物体中可以嵌套的最长序列的长度和序列,显然需要先将每个物体的d个参数排序,此时可以用类似字典序的方法给出任何两个物体的大小关系,这里需要注意的是,任何两个物体对应位置上的参数若相等则不算包含,故抽象为DAG求最长路径。这里有两种状态的定义方法,第一种:定义状态dp(i)为以第i个物体为最外层最多可以嵌套物体的数量,那么状态转移方程为:dp(i)=Max{dp(j)}+1,其中

2014-11-28 19:51:36 337

原创 UVA 10405

我们定义状态dp(i,j)为第一个字符串的前i位于第二个字符串的前j位的最长公共序列的长度,那么很容易求出状态转移方程为:       if(a[i]==b[j]) dp(i,j)=dp(i-1,j-1)+1;       else dp(i,j)=Max{dp(i-1,j),dp(i,j-1)};  相等情况很好理解,不相等的情况其实也很简单,a串的前i个字符和b串的前j个字符的最长

2014-11-27 20:33:11 607

原创 UVA 674

经典的dp题目,我们设状态dp(i)为总面值为i时的方式数,那么状态转移方程为dp(i)=dp(i)+dp(i-c[j]),其中c为数组,表示的各个单位面值。#include #include using namespace std;int dp[8000];int main(){ int n,c[]={1,5,10,25,50}; while(cin>>n){ memset

2014-11-26 20:05:23 398

原创 UVA 111

这题简直不要这么难以理解,具体翻译可以看NOCOW上给出的翻译:http://www.nocow.cn/index.php/UVA/111。  理解题意之后很明显是一个球最长上升子序列的dp问题,定义状态dp(i) 为第i个答案能和之前给出的答案组合得到的最高分,那么状态转移方程为dp(i)=max{dp(j)}+1  (0#include #include using namespa

2014-11-26 19:41:10 495

原创 UVA 10041

求中位数,然后求距离之和,审题不认真,直接输出中位数了!!!#include #include #include using namespace std;int ss[510];int main(){ int T; cin>>T; while(T--){ int n; cin>>n; for(int i=1;i>ss[i]; sort(ss+1,ss+n+1)

2014-11-26 18:43:02 382

原创 UVA 10382

题目大意是给定一个长l宽w的草坪,有n个喷水头,每个处于水平中间位置,给定其距离左边的距离和半径,求最少几个喷头可覆盖整个草坪。  形状不是我们所关心的,我们只关心喷头能完全覆盖的区间,这里完全覆盖的区间指的是覆盖区域减去两端两个小半圆后剩下的矩形区域,我们令t=sqrt(r*r-w*w/4),之后用圆心坐标加减t即可得到区间左右端位置,此时问题转化成区间覆盖问题。#include #i

2014-11-26 18:26:03 384

原创 UVA 10720

题目大意是给定n个顶点的度,Havel-Hakimi判断有没有可能构成一个图。贪心法,每次选择当前集合中度最大的顶点,假设其度为k,那么我们尽可能和其之后度前k大的节点相连,若为0,则不可能,但没想到这还是一个名字听起来特别高端的定理,Havel-Hakimi定理。注意剪枝,并且这里有一个让本人wa了n次的概念性问题就是,简单图可以使不连通的。#include #include #incl

2014-11-25 18:03:53 392

原创 UVA 993

从9到2分别记录n能被几个i整除,最后若n不为1,则

2014-11-24 20:40:26 350

原创 UVA 10245

最近点对问题,可以用分治算法nlogn解出,但是

2014-11-24 20:25:22 551

原创 UVA 757

题目大意是说,有个n个lake,

2014-11-20 21:38:31 448

原创 UVA 10148

这个题目是典型的区间选点问题,和

2014-11-19 21:12:24 559

原创 Codeforces Round #277.5 (Div. 2)

做完第三题电脑果断没电了,简直了,

2014-11-18 21:41:43 400

原创 UVA 10718

题目大意是在[l,u]这样的区间中找到一个数字

2014-11-18 20:44:09 371

原创 UVA 714

挺好的一道题,题意是说划分一个有m个元素的

2014-11-17 20:36:51 411

原创 UVA 10954

堆优化贪心,每次选最小的两个即可。

2014-11-15 20:21:44 328

原创 UVA 10714

很有技巧的一道题,看了别人的题解,

2014-11-15 19:50:04 355

原创 UVA 10020

lrj入门经典中介绍的区间覆盖问题,裸的,不过贪心

2014-11-15 10:50:34 404

原创 UVA 10700

WA了一次,原因是UVA输出用了%I64d,换成%lld

2014-11-13 21:28:43 408

原创 UVA 10340

求第一个字符串是否包含在第二个

2014-11-13 19:45:19 377

原创 UVA 10487

不错的二分入门题,WA了一次,无意间写成了求比询问数小的最大数的位置了,完事后发现时

2014-11-05 22:01:24 455

原创 UVA 10706

本来各种算以免超时,最后发现直接暴力模拟就过了,才用了42ms。#include #include #include using namespace std;string t;int main(){ int T; cin>>T; while(T--){ t.clear(); int pos,n=1; cin>>pos; t="1"; while(pos>t

2014-11-05 21:05:25 352

原创 UVA 270

#include #include #include #include #include #include using namespace std;double x[710],y[710];struct POINT{ double x,y;}p[710];bool cmp(struct POINT a,struct POINT b){ if(a.x==b.y) retur

2014-11-03 23:04:26 372

原创 UVA 10341

精度比较头疼,直接二分法求解

2014-11-03 23:01:47 427

wwwscan字典

同学们,有wwwscan是没有用的,字典才是关键,别告诉我不会用,压箱底的字典

2014-08-28

2014北大acm集训课件

这是2014北大的ACM培训的课件,可以说比较基础,对区域赛和算法学习都有很大帮助。

2014-08-25

x-spoot arp嗅探工具

arp嗅探必备神器,可猜解弱口令,建立ipc连接,破解ftp用户名密码,

2011-10-29

空空如也

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

TA关注的人

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