繁华模拟赛 ljw搭积木】的更多相关文章

#include<iostream> #include<cstdio> #include<string> #include<cstring> #include<algorithm> using namespace std; ; int n,x[maxn]; int cmd,cnt,ans,max_x; int main(){ freopen("box.in","r",stdin); freopen(&quo…
/* 用f[i][k]表示考虑到第i个雕塑,分成k组,可不可行(这是一个bool类型的数组) 转移: f[i][k]=f[j][k-1],sum[i]-sum[j]合法 */ #include <cstdio> #include <cstdlib> #include <cstring> #include <iostream> using namespace std; typedef long long ll; ; const ll inf = 1e15; i…
[NOIP2010冲刺十模拟赛]数字积木 Description 小明有一款新式积木,每个积木上都有一个数,一天小明突发奇想,要是把所有的积木排成一排,所形成的数目最大是多少呢? 你的任务就是读入n个数字积木,求出所能形成的最大数. Input 共N+1行. 第一行是一个整数n,接下来n行每行是一个正整数 Output 一个整数,为所能形成的最大整数. 样例输入 3 13 134 343 样例输出 34313413 数据范围 对于30%的数据,n<=10,每个数<=10^3. 对于50%的数据…
Evensgn 剪树枝 题目 繁华中学有一棵苹果树.苹果树有 n 个节点(也就是苹果),n − 1 条边(也就 是树枝).调皮的 Evensgn 爬到苹果树上.他发现这棵苹果树上的苹果有两种:一 种是黑苹果,一种是红苹果.Evensgn 想要剪掉 k 条树枝,将整棵树分成 k + 1 个 部分.他想要保证每个部分里面有且仅有一个黑苹果.请问他一共有多少种剪树枝 的方案? INPUT 第一行一个数字 n,表示苹果树的节点(苹果)个数. 第二行一共 n − 1 个数字 p0, p1, p2, p3,…
/* 标称并没有用到题解中提到的那种奇妙的性质,我们可以证明,正常从1开始走的话,需要T次,如何使这个次数减小?题解中提到一个办法,有一步小于n/t,我们考虑这一步,如果把它匀到左右两步中,则可以减小,就根据这个性质来优化 next函数的部分,我当时用了一个倍增法,题解用了一个并查集,倍增比较直观,然而并查集更为巧妙 */ //my code #include<iostream> #include<cstdio> #include<string> #include<…
/* 这个题要我们求一个字典序,字符串给出的顺序,会对字母的字典序前后相对顺序进行限定,如何用来表示这种限定,我们注意到这种一个之后接着一个,只有先输出他前面的才能输出他,很明显就是拓扑排序,最小方案只要优先队列随便搞一搞就行了 */ #include<iostream> #include<cstdio> #include<string> #include<cstring> #include<algorithm> #include<vect…
/* 贪心,很明显是越容易升级的越先升级 */ #include<iostream> #include<cstdio> #include<string> #include<cstring> #include<algorithm> using namespace std; ; int n,k,t,a[maxn],lv[maxn],ans; int read(){ char ch=getchar(); ,f=; ;ch=getchar();}; +(…
/*n<=5000­这样就不能用O(n)的转移了,而是要用O(1)的转移.­注意我们每次的转移都来自一个连续的区间,而且我们是求和­区间求和?­前缀和!­令sum[step][i]表示f[step][1~i]的和­还是以B下侧为例­ f[step][i]=sum[step-1][i-1]+sum[step-1][k]-sum[step-1][i] */#include <cstdio> #include <cstring> #include <cstdlib> #…
#include<iostream> #include<cstdio> #include<string> #include<cstring> #include<algorithm> #define ll long long using namespace std; ; ll n,k,c[][]; ll ansa,ansb,ans; void get_c(){ ;i <= ;i++){ c[i][] = c[i][i] = ; c[i][]…
#include<iostream> #include<cstdio> #include<string> #include<cstring> #include<algorithm> using namespace std; ; int n,k,a[maxn]; char cmd; int main(){ freopen("str.in","r",stdin); freopen("str.out&q…