【TYVJ】1062 合并傻子
来源:互联网 发布:sql网络接口error 26 编辑:程序博客网 时间:2024/05/01 03:07
先轮回构造,然后区间DP,本蒟蒻用记忆化搜索。
#include <cstdio>#include <cstring>#include <cstdlib>using namespace std;const int N=100;const int MAX=1000000000;const int MIN=-MAX;int n,m,len;int p[N+N],tr[N+N];int mx[N+N][N+N],mn[N+N][N+N];int RPx=MIN,RPn=MAX;inline int read(void){ int s=0,f=1; char c=getchar(); for (;c<'0'||c>'9';c=getchar()) if (c=='-') f=-1; for (;'0'<=c&&c<='9';c=getchar()) s=(s<<1)+(s<<3)+c-'0'; return s*f;}void init(void){ n=read(),m=read(); for (int i=1;i<=n;i++) p[i]=read(); len=n+n-1; for (int i=n+1;i<=len;i++) p[i]=p[i-n]; for (int i=1;i<=len;i++) tr[i]=tr[i-1]+p[i]; }inline int max(int i,int j){ return i>j?i:j;}inline int min(int i,int j){ return i<j?i:j;}void dp(int i,int j){ if (mx[i][j]^MIN) return; if (i==j) {mx[i][j]=mn[i][j]=0;return;} for (int k=i;k<j;k++) { dp(i,k),dp(k+1,j); mx[i][j]=max(mx[i][j],mx[i][k]+mx[k+1][j]+tr[j]-tr[i-1]); mn[i][j]=min(mn[i][j],mn[i][k]+mn[k+1][j]+tr[j]-tr[i-1]); }}void work(void){ for (int i=1;i<=len;i++) for (int j=1;j<=len;j++) mx[i][j]=MIN,mn[i][j]=MAX; dp(1,len); for (int i=1;i<=n;i++) { RPx=max(RPx,mx[i][i+n-1]); RPn=min(RPn,mn[i][i+n-1]); } if (m>RPx) printf("It is easy\n"); else if (m<RPn) printf("I am..Sha...X\n"); else printf("I will go to play WarIII\n");}int main(void){ init(); work(); return 0;}
0 0
- TYVJ 1062 合并傻子
- 【TYVJ】1062 合并傻子
- Tyvj P1062 合并傻子
- Tyvj P1062 合并傻子
- 1392 合并傻子
- tyvj 1055 沙子合并
- TYVJ 1055 沙子合并
- Tyvj P1066 合并果子
- Tyvj 1066 合并果子
- Tyvj 1055 沙子合并 DP
- 【tyvj】【区间dp】石子合并
- TYVJ:P1066 合并果子 排序的优化
- |Tyvj|NOI1995|动态规划|P1055 沙子合并
- |Tyvj|NOIP2004|堆|贪心|P1066 合并果子
- Tyvj 1066 合并果子(贪心)
- tyvj 1066 合并果子(优先队列)
- TYVJ
- 傻子唉
- LintCode 合并两个排序链表
- OS中的P,V原语有哪些应用?
- POJ 1458 && HDU 1159 Common Subsequence(LCS)
- css积累
- MySql语句大全:创建、授权、查询、修改等
- 【TYVJ】1062 合并傻子
- 欢迎使用CSDN-markdown编辑器
- Xcode中的快捷键使用
- Uva - 714 - Copying Books
- 指针和引用的区别
- 运行x86镜像模拟器镜像的时候报错
- leetcode——Generate Parentheses
- Spring MVC处理错误的三种方法
- MySQL数据库中插入中文出现乱码的解决方案