大坑最后再填。

20160803:心情好回来填啦(5/7)

做的题目是:

poj2970

我们先每个人都不给钱qwq

然后我们发现有一位的工作时间超过了d

那么我们就从以前安排过工作的人里,a最大的,给他加上一定量的x,使得后面的这个超出di的工作者可以在di前完成任务,或者他的工作时间已经为0,则继续找剩下的当中a最大的

这个过程用堆维护,时间复杂度O(nlogn)

  1. struct data{
  2. int a,b,d;
  3. bool operator <(const data&b)const {
  4. return a<b.a;
  5. }
  6. };
  7. bool cmp(const data&a,const data&b){
  8. return a.d<b.d;
  9. }
  10. int n;data a[100005];
  11. priority_queue<data>q;
  12. int main(){
  13. n=gi;
  14. FOR1(i,n){
  15. a[i].a=gi;a[i].b=gi;a[i].d=gi;
  16. }
  17. sort(a+1,a+n+1,cmp);
  18. long long sum=0;
  19. double ans=0;
  20. FOR1(i,n){
  21. sum+=a[i].b;
  22. q.push(a[i]);
  23. while(!q.empty()&&sum>a[i].d){
  24. data c=q.top();q.pop();
  25. if(sum-c.b>a[i].d){
  26. ans=ans+(double)c.b/c.a;
  27. sum=sum-c.b;
  28. }
  29. else{
  30. ans=ans+(double)(sum-a[i].d)/c.a;
  31. c.b=c.b-sum+a[i].d;
  32. sum=a[i].d;
  33. q.push(c);
  34. }
  35. }
  36. }
  37. printf("%.2f\n",ans);
  38. return 0;
  39. }

poj2796

首先由于元素非负,sum[l,r]的值随区间长度增长,单调不降

那么我们求出对于每个元素,以它为最小值的区间最左到哪里,最右到哪里即可

我们用单调栈实现,复杂度就是O(n)

  1. int n,a[100005];
  2. ll qzh[100005];
  3. int pr[100005],nx[100005],ds[100005],top;
  4. int main(){
  5. RI(n);
  6. FOR1(i,n){
  7. a[i]=gi;
  8. qzh[i]=qzh[i-1]+a[i];
  9. }
  10. FOR1(i,n){
  11. while(top&&a[ds[top]]>=a[i])--top;
  12. pr[i]=top?ds[top]:0;
  13. ds[++top]=i;
  14. }
  15. top=0;
  16. FORD(i,n,1){
  17. while(top&&a[ds[top]]>=a[i])--top;
  18. nx[i]=top?ds[top]:n+1;
  19. ds[++top]=i;
  20. }
  21. ll ans=0;int l=1,r=1;
  22. FOR1(i,n){
  23. ll t=(qzh[nx[i]-1]-qzh[pr[i]])*(ll)(a[i]);
  24. if(t>ans){
  25. r=nx[i]-1;l=pr[i]+1;
  26. ans=t;
  27. }
  28. }
  29. cout<<ans<<endl;cout<<l<<' '<<r;
  30. return 0;
  31. }

ural 1003

考虑前缀和的奇偶性

区间和是奇数的,说明头尾的前缀和奇偶性不同区间和是偶数的,说明头尾的前缀和奇偶性相同

直接使用并查集维护这个关系,回答询问

  1. int l,n,block;
  2. int a[5001],b[5001],f[100006];
  3. char s[5001][6];
  4. int find(int x){
  5. return f[x]==x?x:f[x]=find(f[x]);
  6. }
  7. void uni(int a,int b){
  8. int p,q;
  9. p=find(a);
  10. q=find(b);
  11. if(q!=p)
  12. f[q]=p;
  13. }
  14. int main(){
  15. block=50003;
  16. while (scanf("%d",&l),l!=-1){
  17. scanf("%d",&n);
  18. FOR1(i,n)
  19. a[i]=gi,b[i]=gi,scanf("%s",s[i]);
  20. FOR1(i,block*2)f[i]=i;
  21. f[0]=1;
  22. int i=1;
  23. for(;i<=n;i++){
  24. int x=(a[i]-1)%block,y=b[i]%block;
  25. if(s[i][0]=='e'){
  26. if(find(x)==find(y+block))break;
  27. uni(x,y);
  28. uni(x+block,y+block);
  29. }else{
  30. if(find(x+block)==find(y+block))break;
  31. uni(x,y+block);
  32. uni(x+block,y);
  33. }
  34. }
  35. printf("%d\n",i-1);
  36. }
  37. }

sgu 180

逆序对裸题,有很多做法,过于简单不贴代码了

 

ural 1028

【题意】给定多个二维坐标,求每个点左下角的点数

树状数组

poj版需要特判重点

  1. int c[32005];
  2. int lowbit(int x){
  3. return x &(-x);
  4. }
  5. int sum(int i){
  6. int s=0;
  7. while(i>0){
  8. s=s+c[i];
  9. i=i-lowbit(i);
  10. }
  11. return s;
  12. }
  13. void update(int i,int value){
  14. while(i<=32005){
  15. c[i]=c[i]+value;
  16. i=i+lowbit(i);
  17. }
  18. }
  19. int level[32005];
  20. int main(){
  21. int Case;
  22. scanf("%d",&Case);
  23. int x,y;
  24. for(int i=0;i<Case;i++){
  25. scanf("%d%d",&x,&y);
  26. int tmp=sum(++x);
  27. level[tmp]++;
  28. update(x,1);
  29. }
  30. for(int i=0;i<Case;i++)
  31. printf("%d\n",level[i]);
  32. return 0;
  33. }

poj2944 、sgu 336

不会做

强烈推荐在vjudge做

20160723数据结构节alexandrali的更多相关文章

  1. [转]RegExp 构造函数创建了一个正则表达式对象,用于将文本与一个模式匹配

    本文转自:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp RegExp  ...

  2. 第五节 Go数据结构之队列

    一.什么是队列 数据结构里的队列就是模仿现实中的排队.如上图中狗狗排队上厕所,新来的狗狗排到队伍最后,最前面的狗狗撒完尿走开,后面的跟上.可以看出队列有两个特点: (1) 新来的都排在队尾: (2) ...

  3. ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借

    ASP.NET MVC深入浅出系列(持续更新)   一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...

  4. 第六节 Go数据结构之集合

    一.什么是集合 集合就是不同对象的无序聚集.那么链表和集合有什么关系呢?我们来变个魔术.如下图是各种颜色组成的链表: 下面我们一步步把链表变成集合. 第一步砍去链接 第二步去掉重复 第三步放到一个框里 ...

  5. 第四节 Go数据结构之栈

    一.什么是栈 这是杭州地铁1号线线路图.大卫哥考考大家,地铁列车如何调头? 我也不卖关子了,列车通常是用"人字轨道"来变换车道. 列车先从A轨道开进"人字轨道" ...

  6. [数据结构]——二叉树(Binary Tree)、二叉搜索树(Binary Search Tree)及其衍生算法

    二叉树(Binary Tree)是最简单的树形数据结构,然而却十分精妙.其衍生出各种算法,以致于占据了数据结构的半壁江山.STL中大名顶顶的关联容器--集合(set).映射(map)便是使用二叉树实现 ...

  7. 基本数据结构(2)——算法导论(12)

    1. 引言     这一篇博文主要介绍链表(linked list),指针和对象的实现,以及有根树的表示. 2. 链表(linked list) (1) 链表介绍      我们在上一篇中提过,栈与队 ...

  8. 学习javascript数据结构(三)——集合

    前言 总括: 本文讲解了数据结构中的[集合]概念,并使用javascript实现了集合. 原文博客地址:学习javascript数据结构(三)--集合 知乎专栏&&简书专题:前端进击者 ...

  9. 学习javascript数据结构(二)——链表

    前言 人生总是直向前行走,从不留下什么. 原文地址:学习javascript数据结构(二)--链表 博主博客地址:Damonare的个人博客 正文 链表简介 上一篇博客-学习javascript数据结 ...

随机推荐

  1. 搭建Cocos Code IDE开发环境

    Cocos Code IDE是Cocos2d-x团队开发的,用于开发Cocos2d-JS和Cocos2d-x Lua绑定的游戏工具,它是基于Eclipse[ Eclipse 是一个开放源代码的.基于J ...

  2. C语言知识总结(4)

    变量的作用域 C语言根据变量作用域的不同,将变量分为局部变量和全局变量 1.局部变量 1> 定义:在函数内部定义的变量,称为局部变量.形式参数也属于局部变量. 2> 作用域:局部变量只在定 ...

  3. UI4_UIToolBar

    // // AppDelegate.m // UI4_UIToolBar // // Created by zhangxueming on 15/7/6. // Copyright (c) 2015年 ...

  4. Matlab摄像头标定得出的参数保存为xml

    最近在做双摄像头的立体匹配,发现OpenCV定标效果不如MatLab的效果,于是用MatLab标定箱做标定,将得到的结果保存为xml,然后,提供给opencv使用.MatLab标定箱做标定得到的结果如 ...

  5. J2EE5(Servlet2.5)对EL表达式的支持

    JAVA EE5默认 支持EL表达式. 办法一:在每个jsp文件的最上方加入以下代码: <%@ page language="java" import="java. ...

  6. C语言算法系列---1.队列和栈

    写在前面:在家玩了好久,实在是不知道干嘛了,突然想找些事做,现在是时候做些什么了.这些东西不见得多高深,也可能很简单,但很基础,也无法忽视.同时,也是自己学习走过的一条路. 这是开头,就写写C的队列和 ...

  7. Ubuntu下第一个C程序的成功运行

    对于每个新手来说,进入Ubuntu最想做的事莫过于在终端(Terminal)里运行自己的第一个C/C++程序"hello.c/hello.cpp"了. 很多语言书籍都是默认搭载好运 ...

  8. Css调整字体间距

    在span div 某些元素中有时候会用到调整字体的间距,设置方法: letter-spacing:15px;  

  9. WP开发笔记——WP APP添加页面跳转动画

    微软的toolkit团队为我们为我们提供了这样一套组件,叫做TransitionServices服务. 简单说一下它具备的效果: turnstile(轴旋转效果): turnstile feather ...

  10. 解决ubuntu 14.04 下eclipse 3.7.2 不能启动,报Could not detect registered XULRunner to use 或 org.eclipse.swt.SWTError: XPCOM 等问题的处理

    对于eclipse 3.7.2在ubuntu 14.04下不能启动,需要在 eclipse/configuration 目录下的config.ini文件内增加一行org.eclipse.swt.bro ...