ACM训练半周总结—12月14日
2017-12-14 21:38
190 查看
之前还在想要不要结束acm之旅,感觉脑子就是被踢了,我整个大学生活除了专业课就是acm,不做acm,恐怕更不知所措,我本来就是那种不怎么活跃的类型,实在无法想象没有刷题和比赛的日子。就像小学曾经痴迷围棋一样,大学的acm本来就是喜欢,觉得有意思才做的。喜欢,我就要投入,投入,我就要得到果实。
下一阶段的训练计划:
1,从周六晚开始的密集的codeforce等比赛,全都不缺席。
2,bzoj先刷100题。
3, 去图书馆借关于概率的书,尝试自学一下,然后找相关博客学习。
整理一下Educational Codeforces Round 34 (Rated for Div. 2)的题目
很遗憾我只做出来了水题,还是太菜了。。
A. Hungry Student Problem:给出一个数n,判断n是否能3*k1+7*k2=n。就是暴力水题。。
B. The Modcrab:给你a1,h1,c1代表我的攻击,生命,还有每瓶药回复的血量,我有无限的药,然后是怪兽的攻击a2,生命b2让你求怎么在最少的回合打死怪兽。暴力模拟水题。。。
C. Boxes Packing:给出n个数,大箱子可以装小箱子,问最后最少还剩多少箱子。。
这道题充分证明我脑子在夜里会神游,其实就是找出众数的个数的题。结果我硬生生模拟做了。
#define ll long long
using namespace std;
long long a[5005];
int main()
{
vector<long long>q;
vector<long long>::iterator it;
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1,a+1+n);//先排下序
q.push_back(a[1]);
for(int i=2;i<=n;i++)
{
for(it=q.begin();it!=q.end();it++)
{
if((*it)<a[i]) {q.erase(it);break;}//如果容器有比它小的,取出,压入大数,相当于合并。。
}
q.push_back(a[i]);
}
cout<<q.size()<<endl;
}
D. Almost Difference:d(x,y)={|x-y<=1|,,,0}或{|x-y|>1,,,y-x},给一串数,计算所有d(x,y)。
很遗憾这道题没做出来,,找到两位大神的不同做法。
http://blog.csdn.net/a1325136367/article/details/78801698
上面博主说:题解:先离散化然后用线段树维护一下小于等于ai-2的数总和和个数,还有大于等于ai+2的总和和个数,然后答案就是ai乘以ai-2和ai-2的个数总和再减去小于等于ai-2的数的总和加上ai+2的总和
http://blog.csdn.net/acm_e/article/details/78801711
上面博主说:考虑每个数对答案的贡献,即被当做x和y的次数,然后再处理一下特殊的情况即可
一直感觉对贡献这个东西不太怎么理解,第二种思路还是没怎么完全弄明白。。。还得再看看
下一阶段的训练计划:
1,从周六晚开始的密集的codeforce等比赛,全都不缺席。
2,bzoj先刷100题。
3, 去图书馆借关于概率的书,尝试自学一下,然后找相关博客学习。
整理一下Educational Codeforces Round 34 (Rated for Div. 2)的题目
很遗憾我只做出来了水题,还是太菜了。。
A. Hungry Student Problem:给出一个数n,判断n是否能3*k1+7*k2=n。就是暴力水题。。
B. The Modcrab:给你a1,h1,c1代表我的攻击,生命,还有每瓶药回复的血量,我有无限的药,然后是怪兽的攻击a2,生命b2让你求怎么在最少的回合打死怪兽。暴力模拟水题。。。
C. Boxes Packing:给出n个数,大箱子可以装小箱子,问最后最少还剩多少箱子。。
这道题充分证明我脑子在夜里会神游,其实就是找出众数的个数的题。结果我硬生生模拟做了。
#define ll long long
using namespace std;
long long a[5005];
int main()
{
vector<long long>q;
vector<long long>::iterator it;
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1,a+1+n);//先排下序
q.push_back(a[1]);
for(int i=2;i<=n;i++)
{
for(it=q.begin();it!=q.end();it++)
{
if((*it)<a[i]) {q.erase(it);break;}//如果容器有比它小的,取出,压入大数,相当于合并。。
}
q.push_back(a[i]);
}
cout<<q.size()<<endl;
}
D. Almost Difference:d(x,y)={|x-y<=1|,,,0}或{|x-y|>1,,,y-x},给一串数,计算所有d(x,y)。
很遗憾这道题没做出来,,找到两位大神的不同做法。
http://blog.csdn.net/a1325136367/article/details/78801698
上面博主说:题解:先离散化然后用线段树维护一下小于等于ai-2的数总和和个数,还有大于等于ai+2的总和和个数,然后答案就是ai乘以ai-2和ai-2的个数总和再减去小于等于ai-2的数的总和加上ai+2的总和
http://blog.csdn.net/acm_e/article/details/78801711
上面博主说:考虑每个数对答案的贡献,即被当做x和y的次数,然后再处理一下特殊的情况即可
一直感觉对贡献这个东西不太怎么理解,第二种思路还是没怎么完全弄明白。。。还得再看看
相关文章推荐
- ACM训练半周总结—11月23日
- ACM训练半周总结—11月3日
- ACM训练半周总结—10月19日
- ACM训练半周总结—11月2日
- ACM训练半周总结—11月16日
- ACM训练周末总结—10月29日
- ACM---输入输出训练总结
- ACM训练周末总结—9月3日
- ACM训练周末总结—11月19日
- 最近关于ACM训练与算法的总结
- ACM训练周末总结—12月3日
- 2015 ACM Amman Collegiate Programming Contest训练总结【12/12】
- ACM训练总结(大二)
- 2015-2016 ACM-ICPC Southwestern Europe Regional Contest (SWERC 15)训练总结【7/10】
- ACM训练周末总结—11月26日
- acm 一周训练总结
- 2014暑假ACM训练总结
- ACM训练周末总结—11月5日
- 2015 ACM/ICPC Asia Regional Hefei Online训练总结【5/10】
- ACM暑假训练总结