我开始看心灵鸡汤了……

每当在书中读及那些卑微的努力,都觉得感动且受震撼。也许每个人在发出属于自己的光芒之前,都经历了无数的煎熬,漫长的黑夜,无尽的孤独,甚至不断的嘲讽和否定,但好在那些踮脚的少年,最后都得到了自己想要的一切。

某乎

学习信息竞赛对我来说,是一份美妙而充实的身心体验。随着一份份代码的 AC,雀跃的心灵是决不同于其他方面的。文化课的学习生活对我是一种美食的享受,而信息竞赛则更像是一次海天盛宴,让人充满前进和追求远方的动力与勇气。学习算法是快乐的,因为人本不是为使自己更加疲惫而制造工具的,而是简化工序,使用各种工具让自己的生活更加简单便捷。算法竞赛是追求化繁为简的,是追求高效和正确的,这也正是对待生活的良好态度。几年下来,随着知识和阅历的增加,生活也变得更加充满意义,对时间的把握能力更强了,这是信息竞赛带给我的人生财富。愿我在这条路上走得再远一些,以更好的姿态追求无尽的前方。

今明两天再总结总结,总结经验和教训,把简单题再扎实一下。不要好高骛远了,毕竟我学了不少复杂的知识 NOIP 都用不上。(除了模拟退火真贪心啊……)

Contest

已经写了好几天水题赛了,但是还是不长进啊……

A. ssoj2997 删除(removal)

开始给你 \(N\) 个元素的数组(下标从 1 开始),数组里的数是 \(1,2,3,…,N\),然后执行 \(D\) 次删除操作。每次删除操作给一个区间 \([lo, hi]\),要求删除下标位置从 \(lo\) 到 \(hi\) 的数,数组里的数据个数会减少 \(hi-lo+1\) 个。

例如,\(N=8\),第 1 次删除操作区间是 \([3,4]\),结果为 “\(1,2,5,6,7,8\)”;第 2 次删除操作区间是 \([4,5]\),结果为 “\(1,2,5,8\)”。

最后,输出第 \(M\) 位的数字是什么。如果剩余的数不够 \(M\) 个,输出 \(-1\)。

\(1\le M\le N\le 2\times10^9,1\le D\le 50\)。

显然,正向做题不可行,因为操作区间太大。

考虑逆向。对于最后问的第 \(M\) 个数,它前面后面有不少数已被删去,不过后面的数对答案没有贡献,前面的删除区间不可能覆盖到 \(M\)(想一想,为什么?)。

每一次 \(M\) 前面的区间被删除,\(M\) 的位置相当于向前移动。所以逆向把 \(M\) 前的区间还原回去就可以了。

#include <cstdio>

int T, n, m, d, l[53], r[53];

int main() {
scanf("%d", &T);
while (T--) {
scanf("%d%d%d", &n, &m, &d);
for (int i=1; i<=d; ++i) scanf("%d-%d", &l[i], &r[i]);
for (int i=d; i; --i) if (l[i]<=m) m+=r[i]-l[i]+1;
printf("%d\n", m>n?-1:m);
}
return 0;
}

B. ssoj2998 jyt 的崇拜者(sequence)

有 \(n\) 个元素的整数序列 \(A\),要求修改成单调不减的序列 \(B\),代价 \(\max\{|A_i-B_i|,1≤i≤n\}\)。求最小代价。

之前做过,保证 \(B_i\) 一定大于等于 \(A_i\) 即可。

#include <cstdio>
#include <algorithm>
using namespace std; int n, A, B, ans; int main() {
scanf("%d", &n);
for (int i=1; i<=n; ++i) scanf("%d", &A),
B=max(B, A), ans=max(ans, (B-A+1)>>1);
printf("%d\n", ans);
return 0;
}

考场上为什么 WA 了呢?!!!考场上想太多了!

是啊,水题就不要多想,要相信直觉!

C. ssoj2984 蚂蚁 ants

Zkp 从小喜欢观察生物。这一天,他发现台阶上有 \(n\) 只蚂蚁排成一排。台阶可以视为长度无限的数轴,第 \(i\) 只蚂蚁的位置为 \(p_i\),有的朝左走有的朝右走。每只蚂蚁每秒钟都可以走 1 个长度单位,当两只蚂蚁面对着相遇的时候,他们会立即调转方向,以原来的速度向新方向继续前进。现在 zkp 想知道 \(T\) 秒过后,每只蚂蚁将会移动到哪里。

这个是蓝书P9(UVa 10881)上的内容。怎能不 A?

#include <cstdio>
#include <algorithm>
using namespace std; int n, T; struct node {int x, d, id; } G[200005]; bool cmp1(const node& a, const node& b) {return a.x < b.x || a.x==b.x && a.d<b.d; }
bool cmp2(const node& a, const node& b) {return a.id < b.id; } int main() {
scanf("%d%d", &n, &T);
for (int i=1; i<=n; ++i) scanf("%d%d", &G[i].x, &G[i].d),
G[i].id=i, G[i+n].x=G[i].x+(G[i].d?T:-T), G[i+n].d=G[i].d;
sort(G+n+1, G+(n<<1)+1, cmp1);
sort(G+1, G+n+1, cmp1); for (int i=1; i<=n; ++i) G[i].x=i;
sort(G+1, G+n+1, cmp2);
for (int i=1; i<=n; ++i) printf("%d ", G[G[i].x+n].x);
return 0;
}

D. ssoj3149 饥饿的狐狸

到你的宠物狐狸的晚餐时间啦!他的晚餐包含 \(N\) 块饼干,第 \(i\) 块饼干的温度是 \(T_i\) 摄氏度。同时,在晚餐中还包含了一大盘 \(W\) 摄氏度的水。

在喝了一口水之后,你的狐狸开始吃饭了。每当他吃一块饼干时,这块饼干的美味度为当前饼干与吃 / 喝的前一样食物(包括饼干和水)温度的差的绝对值。它可以在任意时间喝水(保证水喝不完),或按任意顺序吃饼干。

最后狐狸获得的美味值为它吃下的每块饼干的美味度之和。请求出狐狸获得的最小和最大的美味值。

要得到最小美味值,一种可行的方案是,狐狸先喝水,然后吃第一块饼干,再吃第三块饼干,接着喝水,最后吃下第二块饼干,这样做,它所感受到的温度分别为 \(20,18,18,20,25\) 摄氏度,总的美味度为 \(2+0+5=7\)。

要得到最大美味值,一种可行的方案是,狐狸先喝水,然后按顺序吃饼 \(2+7+7=16\)。

$1≤N≤105,0≤T_i,W≤109 $。

贪心。

观察题目,我们不难发现,要得到最大美味值,狐狸应该先交错吃温度最大的和最小的饼干,其中如果能喝冰水或开水就更好了。所以我们给所有饼干按照温度排序,交替选择左右端点吃,如果先喝水再吃能获得更大美味值就更好啦。这样最大美味值就求出来啦。(注意左右端点谁先开始,可能得到两个答案,再取个 max。)

那么最小美味值呢?我们肯定按照温度顺序吃饼干。这样每两个饼干之间的差值就是美味度。比如我们记第 \(i\) 个饼干和 \(i-1\) 个饼干的差值为 \(T_i-T_{i-1}\),则第 \(i+1\) 个饼干和 \(i\) 个饼干的差值为 \(T_{i+1}-T_i\),我们容易得到:如果不喝水,差值即为 \(T_n-T_1\)。此时即可分类讨论:

(1) 如果水温度在 \([T_1,T_n]\) 之间,喝水与不喝水,对答案没有影响,答案就是 \(T_n-T_1\)。(想一想,为什么?)

(2) 如果水温度小于 \(T_1\),我们又必须要喝水,答案再加上 \(W-T_1\),即为 \(T_n-W\)。

(3) 同理如果水温大于 \(T_n\),答案即为 \(W-T_1\)。

合并以上算式我们可以得到 \(\text{MinAns}=\max\{W-T_1,0\}+\max\{T_n-W,0\}\).

#include <cstdio>
#include <algorithm>
using namespace std;
#define ll long long int n, w; ll d[100003], anl, anh1, anh2; int main() {
scanf("%d%d", &n, &w);
for (int i=1; i<=n; ++i) scanf("%lld", &d[i]);
sort(d+1, d+n+1);
anl=max(0ll, w-d[1])+max(0ll, d[n]-w);
ll las=w, l=1ll, r=n;
for (int i=1; i<=n; ++i) {
if (i&1) anh1+=max(abs(d[l]-w), abs(d[l]-las)), las=d[l++];
else anh1+=max(abs(d[r]-w), abs(d[r]-las)), las=d[r--];
}
las=w, l=1ll, r=n;
for (int i=1; i<=n; ++i) {
if (i&1) anh2+=max(abs(d[r]-w), abs(d[r]-las)), las=d[r--];
else anh2+=max(abs(d[l]-w), abs(d[l]-las)), las=d[l++];
}
printf("%lld %lld\n", anl, max(anh1, anh2));
return 0;
}

8 November in 614的更多相关文章

  1. 7 November in 614

    每日总结不能少!让自己的头脑好好清醒清醒,才不会犯那些所谓的低级错误! Contest A. ssoj3045 A 先生砍香蕉树 根据数据范围 \(m\le 1000,b\le 10000\),显然本 ...

  2. 6 November in 614

    Contest A. greet map,完了. B. gift map,完了. C. [Usaco2008 Nov Gold] 安慰奶牛 最小生成树.新边权设为原边权的两倍,再加上两端点的点权.完了 ...

  3. 5 November in 614

    Contest A. ssoj2964 交错的士兵 \(n\) 个数的排列,从左到右依次为 1, 2, -, \(n\).\(n\) 次操作,对于第 \(i\) 次操作,从左到右分成很多段,每段 \( ...

  4. [POJ1765]November Rain

    [POJ1765]November Rain 试题描述 Contemporary buildings can have very complicated roofs. If we take a ver ...

  5. We will be discontinuing the Nitrous Development Platform and Cloud IDE on November 14th, 2016.

    我表示我很难过 Nitrous We will be discontinuing the Nitrous Development Platform and Cloud IDE on November ...

  6. TIOBE Index for November 2015(转载)

    原文地址:http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html November Headline: Java once a ...

  7. 日常英语---七、[Updated November 14 at 4:10 PM PST] Scheduled Game Update - November 14, 2018(n.标准)

    日常英语---七.[Updated November 14 at 4:10 PM PST] Scheduled Game Update - November 14, 2018(n.标准) 一.总结 一 ...

  8. Multi-Cloud & Kubernetes: Cloud Academy November 2018 Data Report

    https://cloudacademy.com/research/multi-cloud-kubernetes-devops-cloud-academy-data-report-nov-18/ No ...

  9. ACM ICPC 2010–2011, Northeastern European Regional Contest St Petersburg – Barnaul – Tashkent – Tbilisi, November 24, 2010

    ACM ICPC 2010–2011, Northeastern European Regional Contest St Petersburg – Barnaul – Tashkent – Tbil ...

随机推荐

  1. 16/8/23_CSS自动换行

    转载:http://blog.csdn.net/ye987987/article/details/8011875   自动换行问题,正常字符的换行是比较合理的,而连续的数字和英文字符常常将容器撑大,挺 ...

  2. 16/7/27-PHP环境配置(php5.5.3.7+mysql5.7.12+Apache2.4)

    非常感谢http://www.cnblogs.com/jicheng1014/archive/2012/01/26/2329531.html 配置php环境问题 php.ini 路径 "\& ...

  3. js-jssdk微信H5选择多张图片预览并上传(兼容ios,安卓,已测试)

    值得注意的是: 1.在微信H5中选择图片运用:wx.chooseImage,成功后返回:  res.localIds用于上传图片使用    上传图片:wx.uploadImage. 2.上传图片的时候 ...

  4. MySQL 查询语句--------------进阶8:分页查询

    #进阶8:分页查询 /* 应用场景:要显示的数据,一页显示不全,需要分页提交sql请求 语法: select 查询列表 from 表 [join type] join 表2 on 连接条件 [wher ...

  5. 微信小程序这一块(上)

    1.根目录下面的文件: 凡是以app开头的都是全局配置文件 app.js 全局逻辑文件 注册小程序 app.json 全局配置文件 https://developers.weixin.qq.com/m ...

  6. Angular 输入中的禁止特定输入值--Validator 与 Directive 实现

    1 前言 最近在项目中涉及表单的情况下,需要对用户输入进行过滤,比如填写用户名的时候不可以使用空格或者特殊符号,这里有几个解决方法: 使用 Angular 的正则同步验证器 使用 RxJS对输入的值进 ...

  7. JNDI配置笔记

    先在tomcat Context.xml配置文件中配置 <Resource name="jdbc/elifecrm" type="javax.sql.DataSou ...

  8. html5_websql

    var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);  var msg;  db.transaction(function ...

  9. solr的moreLikeThis实现“相似数据”功能

    在我们使用网页搜索时,会注意到每一个结果都包含一个 “相似页面” 链接,单击该链接,就会发布另一个搜索请求,查找出与起初结果类似的文档.Solr 使用 MoreLikeThisComponent(ML ...

  10. spring-第十二篇之两种后处理器

    1.扩展IoC容器使用后处理器扩展 bean后处理器:对容器中的bean进行后处理,也就是额外的加强. 容器后处理:对IoC容器进行后处理,增强容器功能. 2.bean后处理器      负责处理容器 ...