
基础算法
文章平均质量分 70
诺诺罗亚
固执!!!!!!!!!
展开
-
HDU 3078 Network LCA .
题意:n个点 m个询问,下面一行是n 个点的权值 再下面n-1行是双向的边然后m个询问:k u v 若k==0,则把u点的权值改为v,否则回答u->v之间最短路经过点的权值中 第k大的值是多少ac代码原创 2014-08-08 18:48:49 · 388 阅读 · 0 评论 -
uva 11389
题意 :有n个司机,n个下午线,n个晚上线,每个司机要跑一个下午线一个晚上线,若两线时间之和大于d ,则要支付加班费用(两线之和-d)*r问 最小费用 orz!!!!!!真心给跪了 我咋就不懂这是个什么定理呢 附ac代码#include#includeusing namespace std;int cmp(int a,int b){ return a>b;原创 2015-08-27 19:52:02 · 380 阅读 · 0 评论 -
poj 2528 离散化+线段树
这个破题 我WA 了 我实在找不到我那里错了题意:有一个墙,往墙上贴报纸,最后问能看到几张报纸其实就是很容易的线段树,不容易的地方在于离散化离散化要保存所有需要用到的值,排序后,分别映射到1~n,这样复杂度就会小很多很多这题的难点在于每个数字其实表示的是一个单位长度(并且一个点),这样普通的离散化会造成许多错误(包括我以前的代码,这题数据奇弱) 出下面两个简单的例子应该能体现普通原创 2015-01-12 15:56:59 · 506 阅读 · 0 评论 -
HUD 3466
题意就不解释了,要拥有足够的钱才能买对应价值的物品;这里应该按ss-cc排序 而不是按ss排序!因为for(j=m;j>=q[i].ss;j--){dp[j]=max1(dp[j],dp[j-q[i].cc]+q[i].vv);} 当j最小时可以写成 dp[j]=max1(dp[j],dp[q[i].ss-q[i].cc]+q[i].vv); !!!!!!!原创 2015-01-12 15:44:50 · 523 阅读 · 0 评论 -
POJ 2828 Buy Tickets
题意:N个人插队,每一个人会给你他要插到第几个位置,和他的价值;输出最后的顺序;思路:逆序,按照空位确定位置!!!附AC代码#include#includeusing namespace std;int tree[200000*4];struct node{ int tot,v;}num[200000];int ans[200000];void bulid(int l,原创 2014-12-04 21:45:06 · 353 阅读 · 0 评论 -
HDU 1978
题意:机器人只能#include#includeint map[150][150];int dp[150][150];int main(){ int i,j,n,m,ii,jj,t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); memset(dp,0,sizeof(dp)); dp[1原创 2014-11-12 21:37:13 · 810 阅读 · 0 评论 -
Poj--1466 Girls and Boys
/*题意大概就是 有n个人 编号0~n-1,人和人之间有直接联系问 最多可以有多少个没有直接联系的人因为一共只有n个人 可以把n变为2*n用匈牙利算法求最大匹配数x最多没有直接联系的人为 n-x/2; */#include#include#includeusing namespace std;int map[510][510];int m原创 2014-08-11 14:44:57 · 19872 阅读 · 0 评论 -
3306
#include<stdio.h> #include<string.h> int mark[1<<16]; int main() { int i,j,n,m,k,t,tot; while(scanf("%d%d",&n,&m)!=EOF) { memset(mark,0,sizeof(mar...原创 2018-05-27 00:18:53 · 368 阅读 · 0 评论