前言

分数250250250,十分开心


正题


T1:音乐节拍

洛谷题目链接:https://www.luogu.org/problemnew/show/P2969

大意

有n段音乐,每段音乐持续时间不同,q个询问求一个时间点再放那首歌

考试时

开始时发现询问的时间点不是按顺序来的,于是就想到了离线算法。

解题思路

先将询问排个序,然后一个指针指向现在的音乐,如果不是的话就往前推。

代码

#include<cstdio>
#include<algorithm>
#define MN 50000
using namespace std;
struct node{int num,que,ans;
}qu[MN+1];
int n,q,b[MN+1];
bool cmp(node x,node y)
{return x.que<y.que;
}
bool cmp2(node x,node y)
{return x.num<y.num;
}
int main()
{//freopen("mnotes.in","r",stdin);//freopen("mnotes.out","w",stdout);scanf("%d%d",&n,&q);for (int i=1;i<=n;i++)scanf("%d",&b[i]);for (int i=1;i<=q;i++){scanf("%d",&qu[i].que);qu[i].num=i;//标记}sort(qu+1,qu+1+q,cmp);//排序int j=1,now=b[1]-1;//记录现在位置for (int i=1;i<=q;i++){while (qu[i].que>now)//往前推{j++;now+=b[j];}qu[i].ans=j;//记录}sort(qu+1,qu+1+q,cmp2);//排回原来的顺序for (int i=1;i<=q;i++)printf("%d\n",qu[i].ans);//输出
}

T2:电视游戏问题

大意

洛谷链接:https://www.luogu.org/problemnew/show/P2967
有n个价格不同平台,上面有不同的游戏,每个游戏有不同的价格和价值,要求价格不超过v时价值最大。

考试时

开始就想到了,然后以为会超时就没打

解题思路

用f[0][i]f[0][i]f[0][i]表示到现在并且买了这个平台用了i元时最大价值
用f[1][i]f[1][i]f[1][i]表示到上次用了i元时最大价值
要将上一次继承过来

f[0][i]=f[1][i−w]f[0][i]=f[1][i−w]f[0][i]=f[1][i-w]

然后动态转移

f[0][i]=max{f[0][i−w]+c}f[0][i]=max{f[0][i−w]+c}f[0][i]=max\{ f[0][i-w]+c \}

最后更新f[1]f[1]f[1]

f[1][j]=max{f[0][j]  ,  f[1][j]}f[1][j]=max{f[0][j],f[1][j]}f[1][j]=max\{f[0][j]\ \ ,\ \ f[1][j]\}

代码

#include<cstdio>
#include<algorithm>
using namespace std;
int n,v,f[51][100001],w,c,k,wc;
int main()
{freopen("vidgame.in","r",stdin);freopen("vidgame.out","w",stdout);scanf("%d%d",&n,&v);for (int i=1;i<=n;i++){scanf("%d%d",&w,&k);for (int j=w;j<=v;j++)f[0][j]=f[1][j-w];//继承上次for (int m=1;m<=k;m++){scanf("%d%d",&wc,&c);for (int j=v;j>=w+wc;j--)f[0][j]=max(f[0][j],f[0][j-wc]+c);//动态转移}for (int j=1;j<=v;j++)f[1][j]=max(f[0][j],f[1][j]),f[0][j]=0;//更新最大}printf("%d",f[1][v]);
}

T3:头晕的奶牛

洛谷链接:https://www.luogu.org/problemnew/show/P2017

大意

一个n个点的图,有m1条有向边,有m2条无向边,将无向边变为有向边使得图变为有向无环图。

考试时

有向无环图,我就想到了拓扑排序,然后就敲了一个东西发现不行。然后我就研究,发现可以将所有的点都集结在终点是出度为0的。然后打了一个奇怪的东西就80。

解题思路

先用有向边建图,然后再进行拓扑排序,之后一条无向边的话就将拓扑序排在前面的连排在后面的(因为拓扑序排在后面的无论如何也回不到前面)。

代码

#include<cstdio>
#include<algorithm>
using namespace std;
struct node{int to,next;
}a[300001];
int n,m1,m2,x,y,ls[100001],in[100001],tot,head,tail,state[100001];
int d[100001],s,t,star,ta;
void addl(int x,int y)
{a[++tot].to=y;in[y]++;a[tot].next=ls[x];ls[x]=tot;
}
void bfs()//拓扑排序
{do{x=state[++head];for (int i=ls[x];i;i=a[i].next){y=a[i].to;if (!d[y]){in[y]--;if (in[y]==0){state[++tail]=y;d[y]=++ta;}}}}while (head<tail);
}
int main()
{//freopen("dizzy.in","r",stdin);//freopen("dizzy.out","w",stdout);scanf("%d%d%d",&n,&m1,&m2);for (int i=1;i<=m1;i++){scanf("%d%d",&x,&y);addl(x,y);}for  (s=1;s<=n;s++)if (in[s]==0) state[++tail]=s,d[s]=++ta;//寻找起点bfs(),t++;for (int i=1;i<=m2;i++){scanf("%d%d",&x,&y);if (d[x]<d[y]) printf("%d %d\n",x,y);//判断else printf("%d %d\n",y,x);}
}

T4:过路费

洛谷:https://www.luogu.org/problemnew/show/P2966

大意

一个图,一个点到另一个点的距离就是路径边权和加上路径上的最大点值。

考试时

写了一个spfa,然后发现一种情况

这时spfa就会走1−>2−>4−>51−>2−>4−>51->2->4->5代价11,可是如果走1−>3−>4−>51−>3−>4−>51->3->4->5的话代是价10。然后我就想到了一个方法:
用f[i][j]f[i][j]f[i][j]表示到达i点时路径上最大点值的是j时的最短距离。
然后超时70分

解题思路

首先我们将点值进行排序用num[i]num[i]num[i]表示点权从小到大排在第iii的点。然后枚举k" role="presentation" style="position: relative;">kkk时我们先从点权最小的点开始枚举,然后

dis[i][j]=min{dis[i][k]+dis[k][j]}dis[i][j]=min{dis[i][k]+dis[k][j]}

dis[i][j]=min\{dis[i][k]+dis[k][j]\}

cost[i][j]=min{dis[i][j]+max{c[i],c[j],c[k]}}cost[i][j]=min{dis[i][j]+max{c[i],c[j],c[k]}}

cost[i][j]=min\{dis[i][j]+max\{c[i],c[j],c[k]\}\}
排点权的目的是为了保证 max{c[i],c[j],c[k]}max{c[i],c[j],c[k]}max\{c[i],c[j],c[k]\}中有里面最大的

代码

#include<cstdio>
#include<algorithm>
#include<cstring>
#define maxs(x,y,z) max(x,max(y,z))
using namespace std;
int n,m,k,num[251],dis[251][251],cost[251][251],c[251],x,y,w;
int main()
{memset(dis,127/3,sizeof(dis));memset(cost,127/3,sizeof(cost));scanf("%d%d%d",&n,&m,&k);for (int i=1;i<=n;i++){num[i]=i;scanf("%d",&c[i]);}for (int i=1;i<=m;i++){scanf("%d%d%d",&x,&y,&w);dis[x][y]=dis[y][x]=min(dis[x][y],w);//无向图}for (int i=1;i<n;i++)for (int j=i+1;j<=n;j++)if (c[num[i]]>c[num[j]])swap(num[i],num[j]);//排序for (int q=1;q<=n;q++){int k=num[q];for (int i=1;i<=n;i++)for (int j=1;j<=n;j++)if (i!=j&&i!=k&&j!=k){dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);cost[i][j]=min(cost[i][j],dis[i][j]+maxs(c[i],c[j],c[k]));//Floyd}}for (int i=1;i<=k;i++){scanf("%d%d",&x,&y);printf("%d\n",cost[x][y]);}
}

2018/7/8-纪中某C组题【jzoj1619,jzoj1620,jzoj1621,jzoj1622】相关推荐

  1. 2018/7/11-纪中某C组题【jzoj1293,jzoj1294,jzoj1295】

    前言 今天C组题目有毒,第一题题目玄学,第二题就是不会,第三题考的贼偏.fw(hjw,his博客:https://blog.csdn.net/gx_man_vip)说今天B组题目还行早知道就去做B组了 ...

  2. 2018年暑假 纪中培训总结

    感想 这个暑假在纪中过得挺充实的,劳逸结合,与同学们相处的很开心.算法也讲了很多,但是基本上都没听懂.在这里学习环境还是很不错的,纪中的同学也都很友善,在这里基本没遇到什么烦心事,每天都很开心. 来这 ...

  3. 欢乐纪中某B组赛【2019.1.18】

    前言 新年新气象,我们又一度迎来新一年的模拟赛(谁想迎来) 总之,有来到了熟悉的地方--纪中. 成绩 RankRankRank是有算别人的 RankRankRank PersonPersonPerso ...

  4. 2018/7/12-纪中某C组题【jzoj4272,jzoj4273,jzoj4274】

    前言 今天我的想法都是正解,也都写了,结果才160QwQ 今日分数 去掉了十分强大的纪中dalao 正题 T1:jzoj4272-序章-弗兰德的秘密[树形dp] 博客链接:https://blog.c ...

  5. 欢乐纪中某B组赛【2018.12.15】

    前言 题目还好,都是装作很难,其实都不考高深算法. 某位A组dalao来水了个AK. 而且题号都很诡异 成绩 RankRankRank是有算别人的 RankRankRank PersonPersonP ...

  6. 欢乐纪中某B组赛【2018.12.22】

    前言 全暴力第9了解一下, 成绩 RankRankRank是有算别人的 RankRankRank PersonPersonPerson ScoreScoreScore AAA BBB CCC 999 ...

  7. 欢乐纪中某B组赛【2018.12.8】

    前言 题目有毒系列.反正我觉得第1题最难,3,4题简单些. 跟jz大佬做题 成绩 RankRankRank是有算别人的 RankRankRank PersonPersonPerson ScoreSco ...

  8. 欢乐纪中某A组赛【2019.7.12】

    前言 暴力写挂垫底了呀\huge \color{red}\texttt{暴力写挂}\small\color{white}\\\texttt{垫底了呀}暴力写挂垫底了呀 %%%ZZYrank1\text ...

  9. 欢乐纪中某A组赛【2019.7.11】

    前言 话说今天好像放做题导致BBB组贼难AAA组还好. 成绩 JJJ表示初中,HHH表示高中后面加的是几年级 RankRankRank PersonPersonPerson ScoreScoreSco ...

最新文章

  1. 中国工业机器视觉产业发展白皮书(附ppt)
  2. WPF MeshGeometry3D
  3. Activity Stack
  4. TLS 改变密码标准协议(Change Cipher Spec Protocol) 就是加密传输中每隔一段时间必须改变其加解密参数的协议...
  5. Go全局变量syntax error: non-declaration statement outside function bodygo
  6. Vertica DBD 分析优化设计
  7. atitit.错误:找不到或无法加载主类 的解决 v4 qa15.doc 艾提拉总结 attilax总结 1.1. 修改此java文件,让他启动编译,还是不能生成了新的class, 1 1.2. 查
  8. 服务端访问Linux的DNS出现DNS request timed out..
  9. java 动态属性_Java 类动态添加属性字段的操作
  10. Flutter:布局
  11. 删除百度网盘“我的应用数据”文件夹
  12. 要打理好自己的钱袋子
  13. 算法题目打卡:Ques20201024
  14. 一键分析你的上网行为, 看看你平时上网都在干嘛?
  15. 【子网划分两个实例】通过子网数来划分子网和通过计算主机数来划分子网
  16. ubuntu cron 定时任务
  17. [再寄小读者之数学篇](2014-05-30 对数不等式)
  18. secureCRT无法输入
  19. python中seed的用法什么作用_Python中的seed()方法怎么用
  20. js截取url问号前面_JS获取URL中问号后面参数值

热门文章

  1. linux快速切换目录命令,Linux在命令行快速切换目录 - 米扑博客
  2. linux服务器管理公司用户,在Linux服务器Jenkins中管理用户和角色的方法
  3. 客制化键盘编程_指尖运动会,谁是打字冠军,双十一机械键盘推荐
  4. 最近公共祖先_[LeetCode] 236. 二叉树的最近公共祖先
  5. [PAT乙级]1019 数字黑洞
  6. C++ 实现带权有向图的每对顶点之间的最短路径Floyd算法(完整代码)
  7. 给定一个n节点的二叉树,写出一个O(n)时间非递归过程,将该树每个节点关键字输出,可以使用一个栈作为辅助数据结构(算法导论第十章10.4-3)
  8. 服务器水冷系统仿真,水冷漫谈(三)——水冷散热器仿真方法
  9. android elevation 白色,Android Elevation
  10. 无法载入增效工具_山东省 智能工具箱 智能工具管理 工具管理企业数字化管理...