摘要:
完全背包输出路径;对于每一次更新记录一下路径;注意钱币个数; dp[i][0]代表在空间为i时需要多少枚钱币 dp[i][1]用来记录路径 cheek[j]用来记录在j时用了多少i枚钱币 思路在代码中; 阅读全文
摘要:
tree含义表示 i 这个数出现了几次 sum[i]即表示1-i的数出现了几次 i-sum[i]-1 就是第i位的逆序对位几个; 数字大的时候要离散化 阅读全文
摘要:
树状数组求区间不同种类的数模板 树状数组来存储前缀和,对于每个数我们记录他上一次出现的位置, 把查询按照右端点从小到大排序 对于每个数我们对add(pre[i],-1) add(i,1); 每个数字只有他当前最后一个位置贡献次数(查询区间已排序) 最后sum[r]-sum[l-1]就是答案 阅读全文
摘要:
对于每个数,我们记录上一次这个数出现的位置; 计算之间间隔了几个不同数x,如果一个桌子的容量>=x,那我们不用把书放回,如果桌子的容量<x,那么我们只能把书放回去这本书 定义 t[] 每次使t[x]++,也就是对于容量小于 x的桌子每次都要从新取书,对于大于等于x的桌子不用 最后累加起来,最后结果就 阅读全文
摘要:
#include using namespace std; const int maxn=2e5+10; struct Tree{ int l,r,s; }tree[maxn*32];//开32倍 struct node{ int w,pos; }a[maxn]; int b[maxn],c[maxn],root[maxn]; //b 离散后的位置 c原值 root个树... 阅读全文