[SRM] 09 撕书狂魔CZL

A. 撕书Ⅰ

序列型DP。DP[i]表示当前编号结点的撕书页数。

那么我们有 DP[ i ] = DP[ i - y - 1 ] + y

其中y为编号i书页对应范围内的书页。

那么,具体实现的话,需要求出每个i对应的y,这里用前缀和。

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 #define maxn 1000005
 5 #define lowbit(x) (-x&x)
 6 using namespace std;
 7
 8 int n,high = 0;
 9
10 struct node{
11     int pos,ai;
12 }list[maxn];
13
14 int Tree[maxn],DP[maxn],minn;
15 int sum(int p){
16     int ans = 0;
17     while(p){
18 //        cout << ‘^‘;
19 //        cout << p;
20         ans += Tree[p];
21         p -= lowbit(p);
22     }
23     return ans;
24 }
25 void add(int p){
26     while(p <= high){
27 //        cout << ‘G‘;
28         Tree[p]++;
29         p += lowbit(p);
30 //        cout << p;
31     }
32 }
33
34 bool cmp(const node &a,const node &b){
35     return a.pos < b.pos;
36 }
37
38 int main(){
39     scanf("%d",&n);
40
41     for(int i = 1;i <= n;i++){
42         scanf("%d%d",&list[i].pos,&list[i].ai);
43         list[i].pos++;
44         high = max(high,list[i].pos);
45     }
46
47     sort(list+1,list+1+n,cmp);
48
49 //    printf("#%d#\n",high);
50
51     for(int i = 1;i <= n;i++){
52
53 //        cout << ‘A‘;
54         add(list[i].pos);
55     }
56
57     for(int i = 1;i <= n;i++){
58         int a = list[i].pos-1;
59         int b = list[i].pos-list[i].ai-1;
60         if(a < 0) a = 0;
61         if(b < 0) b = 0;
62         int y = sum(a)-sum(b);
63         if(i-y-1 < 0) continue;
64         DP[i] = DP[i-y-1] + y;
65     }
66
67     minn = DP[n];
68
69     for(int i = 1;i <= n;i++){
70         minn = min(minn,DP[i]+n-i);
71     }
72
73     printf("%d",minn);
74
75 //    cout << endl;
76 //    for(int i = 0;i <= n;i++) printf("%d ",DP[i]);
77
78 //    cout << endl;
79 //    for(int i = 0;i <= 10;i++) printf("%d ",sum(i));
80
81     return 0;
82 }

震惊!CYC的背景居然隐藏着这样的...

时间: 2024-10-29 22:19:26

[SRM] 09 撕书狂魔CZL的相关文章

汕头市队赛 SRM 09 A 撕书

A 撕书I-3 SRM 09 背景&&描述 琉璃在撕书.     书总共有n页,都悬浮在数轴上,第i页的位置为,上面写着一个数字.     琉璃从右往左撕书.假如看到了第i页,就把在第i页左边,且与之距离<=的书都撕掉.(第i页本身不撕)     夜子为了尽量地保全魔法书,决定偷偷在琉璃开始撕之前,增加一页.增加的这一页必须在所有书页的右边,数字随意.     夜子想知道,最少会有多少页书被撕毁. 输入格式 第一行一个整数n,表示书页数. 接下来n行,第i行的俩整数分别为和. 输出格

汕头市队赛 SRM 09 B 撕书

B 撕书II-3 SRM 09 背景&&描述 琉璃手头有一黑一白两本魔法书,一本是<缟玛瑙的不在证明>,另一本是<白色相簿1.5>     传说同时打开这两本书会有奇怪的事情发生.     琉璃打开一看,果然非常奇怪:两本书上都各自写着一个正整数(可能他买到盗版了),分别是a和b.     试图撕书的汀想借过来看看,但琉璃只告诉了他这俩数加起来的值x和异或起来的值y.     汀发现有很多种(a,b)满足琉璃告诉他的信息...你能帮他算出来有多少种吗? 输入格式 两

汕头市队赛 SRM 09 C 撕书

C 撕书III-3 SRM 09 背景&&描述 琉璃双在撕书.     书总共有n页,每页都可以看作是一个数字.     琉璃读书喜欢来回地读.但他也因此发现了作者的灌水行为:有些连续的若干页正着读和倒着读完全一样,也就是说是回文的.     发生这种情况时,琉璃会非常地angry,把那些书页给撕掉.     汀捡到了本黑色的魔法书.因为担心杀死书后会带来麻烦,决定借琉璃的手把书处置掉.     大概就是每次选出剩余书页中的一个回文子串,拿给琉璃看....     汀比较懒,他想知道最少选

[SRM] 09 CCZ的诗

QwQ为数不多的几次有部分分的OI赛制的SRM,感谢CCZ的一屋子部分分= = A. 模拟只会猜题意 B. 贪心只能过样例 给出n个数a[i](1<=a[i]<=n),问最多能把这些数分成几组,使得每个数a[i]所在的组至少有a[i]个数 输入格式 第一行一个整数n,接下来n行每行一个整数分别是a[1],a[2],...,a[n] 输出格式 一行,输出答案,一个整数 分析 因为是按组分,所以顺序也就不重要了,先sort成递增 为了保证分组数最多,应该从大到小一个个满足(有点像弹飞绵羊呢) 方程

SRM 09

A 这道题就是要求删掉最右边若干本数之后,使得最终撕掉的书页最少. 先按照P值从小到大排个序,然后先建立一个数组s[i],表示执行第i页的指令最远能撕到第几页(排序好之后的),由于P[i]是有序的,因此可以用二分查找.再用ans[i]表示若将i页之后的书页全部删去,最终会撕掉几页书,很显然ans[i]=ans[s[i]-1]+i-s[i],然后就不停地更新答案就行了. 代码: #include<cmath> #include<cstring> #include<algorit

汕头市队赛SRM15

T1--czl SRM 15 众所周知,czl家养了一只可♂爱的***(已屏蔽),那只东西很贪吃,所以czl家很多零食仓库,然而这些仓库里有很多老鼠. 为了心爱的***,czl决定点燃纯艾条,用烟熏老鼠. 共有N个仓库,编号1-N. 假设陵陵在第i个仓库点燃艾条,烟雾就会充满该仓库,并向左右扩散Ai 的距离,接着所有|i-j|<=Ai 的仓库 j 的老鼠被消灭. 陵陵是个爱护环境的人,他想知道最少需要多少支艾条,才可以消灭所有老鼠. [输入格式] 第一行:一个正整数,代表 N. 第二行:N 个非

便是徐荒所带的

自己没趣走开了便是赵青衫以及http://weibo.com/2015.09.16/p/1001603887253242939273http://weibo.com/2015.09.16/p/1001603887253247120848http://weibo.com/2015.09.16/p/1001603887253247133649http://weibo.com/2015.09.16/p/1001603887253247133651http://weibo.com/2015.09.16/

百度房间撒谎发喀什经济法老师

http://www.ebay.com/cln/non.shua/cars/167418482013/2015.02.09 http://www.ebay.com/cln/lehu497/cars/167065144019/2015.02.09 http://www.ebay.com/cln/gaza240/cars/167530469015/2015.02.09 http://www.ebay.com/cln/go_qi26/cars/167224324018/2015.02.09 http:

怪我北灵院不给

要不就算平局吧都是显得极为http://weibo.com/2015.09.16/p/1001603887639781581729http://weibo.com/2015.09.16/p/1001603887639785818588http://weibo.com/2015.09.16/p/1001603887639790012974http://weibo.com/2015.09.16/p/1001603887639794164941http://weibo.com/2015.09.16/p