01 2018 档案

摘要:A - Cake 题目大意:给你一个n个顶点(n<=100)的多边形和每两个点连边的消耗,让你求把这个多边形全部切成三角形所需要的最小消耗,如果这个多边形为凹多边形则输出无解。 思路:先求一个凸包,看凸包里的点是不是n个,不是n个输出无解,求完凸包之后,点都是按顺时针排的,我们用dp[ i ][ j 阅读全文
posted @ 2018-01-31 15:01 NotNight 阅读(237) 评论(0) 推荐(0)
摘要:题目大意:让你求l到r 之间数位的最长上升子序列的个数为k 的数的数量。 思路:用状态压缩模拟求最长上升子序列的过程,因为最多不超过10个所以可以压缩, 用dp[ i ][ j ][ k ]表示数位为i,最长上升子序列的状态为j, 最后最长上升序列为k的方案数。 阅读全文
posted @ 2018-01-31 14:16 NotNight 阅读(138) 评论(0) 推荐(0)
摘要:题目大意:给你一个n (n<=300) 边形,给出它所有的顶点坐标,让你把它划分成n-2个三角形的花费最小值,顶点 a 和 b 相连的花费为 abs(a.x+b.x)*abs(a.y+b.y)。 如果是凹多边形输出无解。 思路:先跑个凸包判断是不是凸多边形,跑完之后点的顺序是逆时针的,我们考虑区间d 阅读全文
posted @ 2018-01-25 15:02 NotNight 阅读(221) 评论(0) 推荐(0)
摘要:1 #include 2 using namespace std; 3 const int N=2005; 4 int n,tot; 5 struct point 6 { 7 int x,y; 8 point(int _x=0,int _y=0){x=_x; y=_y;} 9 point operator -(const point &rhs)const... 阅读全文
posted @ 2018-01-25 13:41 NotNight 阅读(164) 评论(0) 推荐(0)
摘要:A - Elections 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,m,num[105],a[105][105]; 4 int main() 5 { 6 scanf("%d%d",&n,&m); 7 for(int i=1;i 阅读全文
posted @ 2018-01-07 16:59 NotNight 阅读(157) 评论(0) 推荐(0)