bzoj1663 [Usaco2006 Open]赶集
来源:互联网 发布:足球数据分析软件 编辑:程序博客网 时间:2024/04/29 06:27
这题目其实一点都不难,,问题是我一开始理解错题意了,以为必须要刚刚好到达,不能前也不能后,然后就蒙蔽了= =,想了各种做法都不会啊= =。
结果后来看题解发现原来还可以站在原地不动的= =这不就水了很多。
首先按照升序排序,这个明显,因为我们肯定要接先掉下来的。
然后设f[i]表示走到第i个点的最大答案,那么明显有f[i]=max(f[j]+1)
j满足条件p[j]+t[i][j]<=p[i]
n^2,都不用n^3= =。。
#include<cstdio>#include<cstring>#include<algorithm>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)using namespace std;const int N=1e5+5;int n,m;int f[N];int t[1005][1005];struct node{ int x,id;}a[N];int ans;bool cmp(node a,node b){ return a.x<b.x;} int main(){ scanf("%d",&n); fo(i,1,n) { scanf("%d",&a[i].x); a[i].id=i; } fo(i,1,n) fo(j,1,n)scanf("%d",&t[i][j]); sort(a+1,a+1+n,cmp); fo(i,1,n) { if (t[1][a[i].id]<=a[i].x)f[i]=1; fo(j,1,i-1) if (a[j].x+t[a[j].id][a[i].id]<=a[i].x)f[i]=max(f[i],f[j]+1); ans=max(ans,f[i]); } printf("%d\n",ans);}
阅读全文
0 0
- bzoj1663 [Usaco2006 Open]赶集
- BZOJ1663: [Usaco2006 Open]赶集
- 【bzoj1663】[Usaco2006 Open]赶集 dp
- bzoj1663 [Usaco2006 Open]赶集 (最短路)
- BZOJ 1663: [Usaco2006 Open]赶集 floyd(划掉+dp
- bzoj 1663: [Usaco2006 Open]赶集(最长路)
- [Usaco2006 Open]The Climbing Wall 攀岩
- bzoj1664 [Usaco2006 Open]County Fair Events 参加节日庆祝
- [BZOJ1664] [Usaco2006 Open]County Fair Events 参加节日庆祝
- BZOJ1727: [Usaco2006 Open]The Milk Queue 挤奶队列
- 1664: [Usaco2006 Open]County Fair Events 参加节日庆祝
- BZOJ 1727 [Usaco2006 Open]The Milk Queue 挤奶队列
- BZOJ 1664 [Usaco2006 Open] County Fair Events 参加节日庆祝
- bzoj1727 [Usaco2006 Open]The Milk Queue 挤奶队列 贪心
- bzoj1728[Usaco2006 Open]Two-Headed Cows 双头牛 二分+染色
- [Usaco2006 Open]County Fair Events 参加节日庆祝
- 赶集租房
- 【BZOJ1664】[Usaco2006 Open]County Fair Events 参加节日庆祝【线段覆盖】【贪心】
- leetcode-java.T001_TwoSum 给定一个整数数组,找出其中两个数满足相加等于你指定的目标数字
- 重读UNIX网络编程第二章笔记修正
- Android第一行代码(第二版)
- MD5加密工具类
- 网络状态判断工具类
- bzoj1663 [Usaco2006 Open]赶集
- SharedPreferences存储工具类
- Java的反序列化
- tensorflow学习笔记(一):基本知识之tensor,operation和Session
- 注解解析
- 192.m1-线程的优化利用线程池启动线程
- android线程池
- 109. Convert Sorted List to Binary Search Tree
- Java中super和this关键字用法