
tyvj
NotFound1
这个作者很懒,什么都没留下…
展开
-
|Tyvj|BFS|P1117 拯救ice-cream
http://tyvj.cn/p/1117做BFS,但是不能走到#时直接加2,这样得不出最优时间,需要把#当做两个格子来走,即走完#将他更改为^,入队时仍然入head的x,y,然后在没有加上坐标之前判断是不是^,是的话把它更改为通路“.”,再次入队。参考代码#includestruct sb { int x,y,time;};sb hs[10000];int pre[原创 2016-05-26 18:48:48 · 471 阅读 · 0 评论 -
|Tyvj|NOIP2000|动态规划|P1884 方格取数
http://tyvj.cn/p/1884#include#include#includeusing namespace std;const int maxn = 51;int f[maxn][maxn][maxn][maxn];//设f[i][j][h][k]为第一条路径到达map[i][j], 第二条路径到达map[h][k]时的最优值/* f[i][j][h][k原创 2016-08-05 23:24:30 · 495 阅读 · 0 评论 -
|Tyvj|动态规划|P1004 滑雪
http://tyvj.cn/p/1004由于考虑高度问题,确保每个值都算出来,这里用的是记忆化搜索。#include#include#includeusing namespace std;const int dx[4] = {1,0,-1,0};const int dy[4] = {0,1,0,-1};const int maxrc = 100 + 5;int r,c;i原创 2016-08-06 11:15:43 · 547 阅读 · 0 评论 -
|Tyvj|二叉树|P1441 求二叉树的先序序列
http://tyvj.cn/p/1441#include#includechar in[20], post[20];void dg(int is, int ps, int l) { char root = post[ps+l-1]; if (l==0) return ; putchar(root); int p=0; while (in[is+p]!=root && p<l原创 2016-08-06 11:19:23 · 285 阅读 · 0 评论 -
|Tyvj|动态规划|P1102 单词的划分
http://tyvj.cn/p/1102字符串dp。感觉C++对字符串处理不是很友好..做字符串的题目一定要专心!#include#include#includeusing namespace std;const int maxan = 100 + 5;char a[maxan];int la;char s[maxan][maxan];int l[maxan];原创 2016-08-06 17:34:17 · 888 阅读 · 0 评论 -
|Tyvj|动态规划|P2865 打包
http://tyvj.cn/p/2865简单的二维01背包题目,在原01背包上加维即可#include#include#includeusing namespace std;int main () { const int maxvg = 380 + 10; int v,g,n; scanf("%d%d%d", &v, &g, &n); int f原创 2016-08-03 12:15:51 · 451 阅读 · 0 评论 -
|Tyvj|NOIP2000|动态规划|P1047 乘积最大
http://tyvj.cn/p/1047PS:此题可以不用高精度AC(数据水)#include#include#includeusing namespace std;const int maxn = 40 + 5, maxk = 5 + 5;long long s;long long a[maxn][maxn]; long long f[maxk][maxn];//设f[原创 2016-08-05 18:14:30 · 362 阅读 · 0 评论 -
|Tyvj|NOIP2008|动态规划|P1011 传纸条
http://tyvj.cn/p/1011#include#include#includeusing namespace std;const int maxn = 50 + 1;const int maxm = 50 + 1;int map[maxm][maxn];int f[maxm][maxn][maxm][maxn];//设f[i][j][l][k]为第一条路径到达i,j原创 2016-08-08 11:43:35 · 466 阅读 · 0 评论 -
|Tyvj|NOIP2004|二叉树|P1440 FBI树
http://tyvj.cn/p/1440递归建立即可,这里把树给建立出来了不知道为什么后序遍历那里用root!=NULL不管用。。一直RE,因为是满二叉树,所以我就用层数判定了#include#includeusing namespace std;typedef struct node;typedef node* tree;struct node { tree l,r原创 2016-08-10 13:55:32 · 774 阅读 · 0 评论 -
|Tyvj|NOIP2004|堆|贪心|P1066 合并果子
http://tyvj.cn/p/1066贪心地先把所有果子放进小根堆,然后取出两个最小值相加后再放进去,在此期间ans+=两个最小值的和,直到只剩1个元素停止#include#includeusing namespace std;int heap[10005];int hsize = 0;int put(int x) { hsize++; heap[hsize] = x;原创 2016-08-10 22:17:30 · 514 阅读 · 0 评论 -
|Tyvj|NOIP2004|堆|P3301 最小函数值
http://tyvj.cn/p/3301纯水题,放进小根堆,x枚举到100可以AC。#include#includeusing namespace std;int heap[1000005];int hsize = 0;int put(int x) { hsize++; heap[hsize] = x; int now, next = hsize; while (ne原创 2016-08-10 22:30:10 · 314 阅读 · 0 评论 -
|Tyvj|P1001 第K极值
http://tyvj.cn/p/1001排序后找到两个数相减,再判断一下质数即可#include#include#includeusing namespace std;int a[10005];int main () { int n,k; scanf("%d%d", &n, &k); for (int i=0;i<n;i++) scanf("%d", &a[i]);原创 2016-08-10 22:53:07 · 411 阅读 · 0 评论 -
|Tyvj|动态规划|P1071 LCIS
http://tyvj.cn/p/1071LCIS经典问题,具体看这个http://blog.youkuaiyun.com/Darost/article/details/52354660#include#include#include#define ms(i,j) memset(i, j, sizeof i);using namespace std;int n;int a[3005原创 2016-09-01 21:29:54 · 768 阅读 · 0 评论 -
|Tyvj|图论最短路|P1083 分糖果
http://tyvj.cn/p/1083以C小朋友为起点求最短路,任何一种都行,然后找出离C小朋友最远距离ans,答案是ans+m+1代码是SPFA求最短路,当然可以用Floyd/dijkstra等等#include#include#includeusing namespace std;int w[1005][1005];int num[1005];bool visit[原创 2016-08-12 13:41:12 · 526 阅读 · 0 评论 -
|Tyvj|图论最短路|P1031 热浪
http://tyvj.cn/p/1031求ts到te的最短路径即可代码为dijkstra#include#include#includeusing namespace std;int G[2505][2505];int dis[2505];int visit[2505];int main () { int t,c,ts,te; scanf("%d%d%d%d",原创 2016-08-12 14:01:05 · 521 阅读 · 0 评论 -
|Tyvj|图论最小生成树|P1307 联络员
http://tyvj.cn/p/1307把必选边先全部合并,然后进行最小生成树即可,推荐用Kruskal。下面是Kruskal代码#include#include#includeusing namespace std;//一些定义 struct edge{ int x; int y; int v;}points[10005];int father[10005];原创 2016-08-13 12:48:04 · 444 阅读 · 0 评论 -
|Tyvj|图论最小生成树|P1831 繁忙的都市
http://tyvj.cn/p/1831用Kruskal求最小生成树,第一个问题答案是n-1,第二个问题答案即为最后加入并查集的那一条边的权值。#include#include#includeusing namespace std;//一些定义 struct edge{ int x; int y; int v;}points[10005];//边 int n,m;i原创 2016-08-13 14:22:45 · 447 阅读 · 0 评论 -
|Tyvj|动态规划|1023 奶牛的锻炼
http://tyvj.cn/p/1023比较简单的区间DP,注意如果要休息,那就必须得一直休息到疲劳值为0,则f[i][0]可以从f[i-k][k]转移而来ps: 由于Tyvj现在503,代码取不下来,等好了以后再补原创 2016-09-03 22:32:09 · 801 阅读 · 0 评论 -
|Tyvj|动态规划|P1015 公路乘车
http://tyvj.cn/p/1015把旅客的总路程数n当做背包总量,10km每km的费用当做物品的价值,10km每km的km数是物品的重量,求最小价值。例如5km费用是49,那么价值是49,重量是5.然后按照完全背包做。#include#include#includeusing namespace std;int main () { const int ma原创 2016-08-02 18:31:57 · 381 阅读 · 0 评论 -
|Tyvj|NOIP2006|动态规划|P1914 开心的金明
http://tyvj.cn/p/1914总钱数是背包容量,每个物品的价值就是重量,没个物品的价值*重要度是价值,然后按照01背包做。#include#include#includeusing namespace std;int main () { const int maxn = 30000 + 5; int n,m; scanf("%d%d", &n,原创 2016-08-02 15:40:39 · 399 阅读 · 0 评论 -
|Tyvj|NOIP2005|动态规划|P1005 采药
http://tyvj.cn/p/1005给定时间为背包容量,每个草药的采集时间为重量,草药价值为价值#include#include#includeusing namespace std;int main () { const int maxt = 1000 + 5; int t,m; scanf("%d%d", &t,&m); int f[ma原创 2016-08-02 15:31:20 · 310 阅读 · 0 评论 -
|Tyvj|BFS|P1030 乳草的入侵
http://tyvj.cn/p/1030直接BFS就行,注意X,Y参考代码:#includestruct sb { int x; int y; int day; };const int dx[8] = {1,0,-1, 0,1,-1,-1, 1}, dy[8] = {0,1, 0,-1,1,-1原创 2016-05-26 18:44:29 · 792 阅读 · 0 评论 -
|Tyvj|二分|P1938 [Clover4]最优战舰
http://tyvj.cn/p/1938二分答案题目,找最大值当做r,然后check即可参考代码:#includeint n,m;int a[102000];int l=0, mid, r=0;void init() { scanf("%d%d", &n, &m); for (int i=1;i<=n;i++) { scanf("%d", &a[i]); if (原创 2016-05-31 22:07:36 · 562 阅读 · 0 评论 -
|Tyvj|NOIP2008|贪心|P1007 排座椅
http://tyvj.cn/p/1007贪心,先把每条路能解决问题的个数存储,然后进行降序快排,然后每次贪心选择一条能解决问题最多的一条路进行开辟,即选择前k、l个数,然后再进行快排,因为输出要按照升序输出。#include#includeint m,n,k,l,d;int a_k[1500], a_l[1500], k_n[1500], l_n[1500];void qs(in原创 2016-06-04 13:33:51 · 1148 阅读 · 0 评论 -
|Tyvj|贪心|P1019 配对
http://tyvj.cn/p/1019贪心题目,a,b快排后从a的头开始加b的尾即为最大配对数参考代码:#include#includeint abs(int x) { if (x>=0) return x; else return 0-x;}int n;int a[10200], b[10200];void qs(int* s, int l, int r)原创 2016-06-04 14:01:20 · 440 阅读 · 0 评论 -
|Tyvj|动态规划|P1516 科技庄园
http://tyvj.cn/p/1516用min{TI, A-1}作为背包容量, 为什么是A-1是因为“他不想摘很多的桃以至体力为0”这个坑了我一天。WA了N次。然后根据果树位置算出果树位置与(0,0)的距离(不是直线距离)作为每棵树的重量然后每次摘的桃子数就是价值。然后多重背包即可。#include#include#includeusing namespace原创 2016-08-04 13:22:43 · 646 阅读 · 0 评论 -
|Tyvj|NOIP2006|动态规划|P1057 金明的预算方案
http://tyvj.cn/p/1057先把每个主件的附件存储到fj数组,然后开一个isf数组存储第i个组件是否是附件存储重量为wi,价值为vi那么接下来有5种决策:1 什么都不要2 主件3 主件+附件14 主件+附件25 主件+附件1+附件2当然转移是在这个组件不是附件的情况下的。由于价格都是10的倍数,可以将n和wi、vi都除以10,最后*10即可原创 2016-08-04 13:55:10 · 369 阅读 · 0 评论 -
|Tyvj|模拟|P1003 越野跑
http://tyvj.cn/p/1003模拟即可,上坡路段就加上下坡路段的时间,平路路段要*2,下坡路段就加上上坡路段的时间,时间不够了一定立即返回,否则会有问题#include#include#includeusing namespace std;int main () { int m,t,u,f,d; scanf("%d%d%d%d%d%*c", &m, &t, &u原创 2016-08-16 10:04:31 · 546 阅读 · 0 评论 -
|Tyvj|NOIP2013|模拟|P2772 表达式求值
http://tyvj.cn/p/2772此题由于我不喜欢用栈写表达式(分明是不会),所以用个链表乱搞AC了。。#include#include#includeusing namespace std;int sz[100005];//数字 int bh[100005];//标号,链表储存 int s_n = 0;char fh[100005];//符号 int f_n =原创 2016-08-16 10:07:26 · 417 阅读 · 0 评论 -
|Tyvj|NOIP2008|模拟|P1006 isbn
http://tyvj.cn/p/1006一道简单的水题,注意X即可#include#include#includeusing namespace std;char ch[80];int main () { scanf("%s", ch); int k = 0; int tot = 0; for (int i=0;i<11;i++) { if (ch[i]>='原创 2016-08-16 10:23:20 · 362 阅读 · 0 评论 -
|Tyvj|动态规划|P1044 数字三角形
http://tyvj.cn/p/1044简单的dp,不做解释了参考代码:#include#include#includeusing namespace std;int main () { const int maxn = 25 + 5; int n; int a[maxn][maxn]; scanf("%d", &n); for (int i=1;i<=n;i原创 2016-08-01 13:44:25 · 392 阅读 · 0 评论 -
|Tyvj|动态规划|P3573 求最长不下降序列
经典dp问题,求最长不下降序列要注意序列可能出现等于,第一次WA就是这个原因#include#include#includeusing namespace std;int main () { const int maxn = 10000+5; int a[maxn]; int n; scanf("%d", &n); for (int i=1;i<=n;原创 2016-08-01 15:05:27 · 389 阅读 · 0 评论 -
|Tyvj|NOIP2013|动态规划|P3074 小朋友的数字
http://tyvj.cn/p/3074真坑的题目。。核心是求最大子段和,DP搞定“其它小朋友的分数为排在他前面的所有小朋友中(不包括他本人),小朋友分数加上其特征值的最大值。”原来前面可以分别找出两个小朋友,一个特征值的最大,一个分数最大最后两个点还超long long。。加了取模又莫名WA两个点。。然后弄了个特判,AC了。。#include#include#i原创 2016-08-16 18:12:37 · 689 阅读 · 0 评论 -
|Tyvj|NOIP1999|动态规划|贪心|P1878 拦截导弹
http://tyvj.cn/p/1878第一问:最长不上升子序列dp第二问:贪心#include#include#includeusing namespace std;int main () { const int maxn = 100 + 5; int dd[maxn]; int n=0; int yyy; while (scanf原创 2016-08-01 15:42:49 · 1223 阅读 · 0 评论 -
|Tyvj|NOIP2004|动态规划|P1067 合唱队形
http://tyvj.cn/p/1067dp题, 从左往右做一次求最长上升子序列存在pre数组 从右往左做一次求最长上升子序列存在post数组 注意是最长上升子序列不是最长不下降子序列! 最长上升子序列是 t1 最长不下降子序列是 t1然后枚举中间那个人Ti,最多存留人数是max{pre[ti]+post[ti]},最后 n原创 2016-08-01 19:04:54 · 436 阅读 · 0 评论 -
|Tyvj|动态规划|P1203 机器分配
http://tyvj.cn/p/1203dp题,设f[i][j]为前i个公司分配j个机器的最大盈利,设v为第I个公司分配J台机器的盈利 则f[i][j] = max{f[i-1][k]+v[i][j-k]} 答案是max{f[n][j]} 注意机器不一定要全部分完m个!#include#include#includeusing namespace st原创 2016-08-02 10:02:35 · 382 阅读 · 0 评论 -
|Tyvj|NOI1995|动态规划|P1055 沙子合并
http://tyvj.cn/p/1055#include#include#includeusing namespace std; const int maxn = 1000 + 5; int f[maxn][maxn]; //设f[i][j]为合并[i..j]的最小费用 //f[i][j] = min{f[i][j], f[i][k]+f[k+1][j]+a[j]-a[i-1]原创 2016-08-05 15:29:55 · 1222 阅读 · 1 评论 -
|Tyvj|动态规划|P1016 装箱问题
http://tyvj.cn/p/1016dp01背包题目,价值和体积都是体积#include#include#includeusing namespace std;int main () { const int maxn = 20000 + 5; int v,n; scanf("%d%d", &v,&n); int f[maxn];原创 2016-08-02 14:56:29 · 500 阅读 · 0 评论 -
|Tyvj|并查集|P1602 团伙
http://tyvj.cn/p/1602输入如果是朋友就合并,是敌人就邻接表储存起来,然后输入完之后合并所有的敌人,最后统计代表个数即可#include#include#includeusing namespace std;int num[1005], f[1005][1005];int father[1005];int n,m;int find(int i){ if原创 2016-08-12 22:44:44 · 459 阅读 · 0 评论