奶昔队Round #1 热身

(奶昔队不是真正的队,是群)

CodeForces 435C Cardiogram

模拟,不过我做的时候不是模拟,是计算...(写了好久,还wa了几次),现在看了别人的代码写过一份。

#include <iostream>
#include <algorithm>
#define N 1005
using namespace std;
int n,x,y,a,h,l;
char ma[N<<][N];
int main() {
cin>>n;
h=l=y=;
for(int i=;i<=n;i++){
cin>>a;
while(a--) if(i&) ma[++y][++x]='/';
else ma[--y][++x]='\\';
h=max(h,y);
l=min(l,y);
y+=i%?:-;
}
for(int i=h;i>=l;i--){
for(int j=;j<=x;j++)
if(ma[i][j])cout<<ma[i][j];
else cout<<" ";
cout<<endl;
}
}

CodeForces 437B The Child and Set

sum=Σlowbit(x),x不超过limit。

贪心,把1到limit的所有lowbit求出来,按lowbit值从大到小排个序,每次取完一个就把sum减去一个数。

#include <iostream>
#include <algorithm>
#define lowbit(x) ((x)&-(x))
using namespace std;
int sum,limit,ans;
struct num{
int id,low,ok;
}a[];
int cmp(num a,num b){
return a.low>b.low;
}
int main() {
cin>>sum>>limit;
for(int i=;i<=limit;i++){
a[i].id=i;
a[i].low=lowbit(i);
}
sort(a+,a+limit+,cmp);
for(int i=;i<=limit&∑i++)
if(a[i].low<=sum){
a[i].ok=;
ans++;
sum-=a[i].low;
}
if(sum==){
cout<<ans<<endl;
for(int i=;i<=limit;i++)if(a[i].ok)
cout<<a[i].id<<" ";
}else
cout<<"-1";
}

CodeForces 437C C - The Child and Toy

删除每个点,就需要它相邻的点(未删除的)权值和的代价,求全部点删完后的最小代价。

贪心,一定是删权值最大的点,那么删掉时,对于相邻的边,就是花费了较小的相邻点的权值,于是直接对每条边取小的点加起来。

#include <iostream>
#include <algorithm>
#define N 1005
using namespace std;
int n,m,ans,v[N],a,b;
int main() {
cin>>n>>m;
for(int i=;i<=n;i++)
cin>>v[i];
for(int i=;i<=m;i++){
cin>>a>>b;
ans+=min(v[a],v[b]);
}
cout<<ans; }

奶昔队Round #1

CodeForces 527A A. Playing with Paper

问一张纸能分多少个尽量大的正方形

#include <iostream>
using namespace std;
long long a,b,ans;
int main(){
cin>>a>>b;
while(a%b){
ans+=a/b;
a%=b;
swap(a,b);
}
cout<<ans+a/b;
}

CodeForces 526A B. King of Thieves

就是找5个相距固定的*,居然把字符串从1开始,智障了。

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int ok(char c){
return c=='*';
}
char s[];
int main() {
int n;
cin>>n;
cin>>s;
for(int l=;l<=n;l++){
for(int j=;j<n;j++){
int ans=ok(s[j]);
for(int a=;a<=;a++)
if(!ok(s[j+l*a]))ans=;
if(ans){
puts("yes");
return ;
}
}
}
puts("no");
return ;
}

CodeForces 526B C. Om Nom and Dark Park

从叶子节点往根的方向,每两个兄弟的差值加到答案上,父节点的值加上较大的那个儿子的值。

#include <iostream>
using namespace std;
int n,a[<<],ans;
int main() {
cin>>n;
for(int i=;i<(<<(n+));i++)
cin>>a[i];
for(int k=n;k;k--)
for(int i=(<<k);i<(<<(k+));i+=){
a[i>>]+=max(a[i],a[i+]);
ans+=max(a[i],a[i+])-min(a[i],a[i+]);
}
cout<<ans<<endl;
}

CodeForces 526C D. Om Nom and Candies

红糖果和蓝糖果均有开心值和重量,要总质量不超过c,开心值最大有多少。

  • 如果b更划得来,那么吃相同重量时,会选择b,于是r的数量就会小于wb;反之,则b的数量会小于wr。
  • wr*i+wb*j≤c,如果wr>√c,那么i<√c,如果wb>√c,那么j<√c,直接枚举就行了,否则,wb和wr就都小于√c。
#include <iostream>
#define ll long long
using namespace std;
ll c,hr,hb,wr,wb,ans;
int main() {
cin>>c>>hr>>hb>>wr>>wb;
if(wr>=c/wr||hr*wb<wr*hb&&wb<c/wb)
{
swap(wb,wr);
swap(hb,hr);
}
for(int i=;i*i<=c&&i<=c/wb;i++)
ans=max(ans,(c-i*wb)/wr*hr+i*hb);
cout<<ans;
}

  

CodeForces 526D  E. Om Nom and Necklace

对于n(<=100万)位的字符串,问你每个前缀是否可以划分为ABAB..ABA的形式,其中A、B代表字符串(A或B可以为空),且B出现m次。

这种题目很不好想,对于我来说。

当前前缀P=SSSSS...SST=m个AB+1个A,AB一定是几个S组成,A为P的后缀

共有R个S,分到m组里,余下的则是A的前缀。

A里面有R%m个S

B里面有R/m-R%m个S

KMP算出循环节长度len=i-Next[i],则

循环次数R=i/len

如果i%len==0,代表全为S,算出来如果B为空也是可以的,

否则,B为空不可以。

#include <cstdio>
#define N 1000005
using namespace std; char s[N];
int n,m,Next[N],ans[N];
int main() {
scanf("%d%d%s",&n,&m,s);
int k=-,i=;
Next[i]=k;
while(s[i])
if(k==-||s[i]==s[k]){
Next[++i]=++k;
int len=i-Next[i],R=i/len;
if(i%len==)
ans[i]=(R/m-R%m>=);
else
ans[i]=(R/m-R%m>);
}else k=Next[k];
for(int i=;i<=n;i++)
printf("%d",ans[i]);
puts("");
}

CodeForces 526E F. Transmitting Levels

对于100万个数围成的环,求最少能切几段,每段的和不超过b,有q次询问。

滑窗,from[i]表示from[i]到i是已经划分了的段,ans[i]表示from[i]到i的最少段数。

左端为j,右端为i。

一开始j到i为一段,如果超过b,j右移,这样就求出i为右端的最大的一段,然后i右移,

from[i]=from[j],ans[i]=ans[j]+1;相当于j结尾后面又划分了一段。

继续求直到i-from[i]≥n。

#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<cstring> typedef long long ll; using namespace std;
const int MAXN = +; int a[MAXN*];
int from[MAXN * ], ans[MAXN * ];
ll ss[MAXN*]; int main(){
int n, q;
scanf("%d%d", &n, &q);
for(int i=;i<=n;i++){
scanf("%d", &a[i]);
a[i+n] = a[i];
from[i]=i;
ans[i]=;
}
for(int i=;i<=*n;i++) ss[i]=ss[i-]+a[i]; for(int Q=;Q<=q;Q++){
int lim;
scanf("%d", &lim);
memset(ans, , sizeof(ans));
//memset(from, 0, sizeof(from));
int j = ;
for(int i=n+;i<=*n;i++){
while(ss[i]-ss[j]>lim) j++;
ans[i] = ans[j]+;
from[i] = from[j];
if(i-from[i]>=n){
printf("%d\n", ans[i]);
break;
}
}
//printf("%d\n", ans[2*n]);
} }

  

【奶昔队ROUND#1】的更多相关文章

  1. #6164. 「美团 CodeM 初赛 Round A」数列互质-莫队

    #6164. 「美团 CodeM 初赛 Round A」数列互质 思路 : 对这个题来言,莫队可以 n*根号n 离线处理出各个数出现个的次数 ,同时可以得到每个次数出现的次数 , 但是还要处理有多少 ...

  2. Codeforces Round #340 (Div. 2) E. XOR and Favorite Number 莫队算法

    E. XOR and Favorite Number 题目连接: http://www.codeforces.com/contest/617/problem/E Descriptionww.co Bo ...

  3. 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...

  4. 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...

  5. 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...

  6. Yandex.Algorithm 2011 Round 2 D. Powerful array 莫队

    题目链接:点击传送 D. Powerful array time limit per test 5 seconds memory limit per test 256 megabytes input ...

  7. Codeforces Round #340 (Div. 2) E 莫队+前缀异或和

    E. XOR and Favorite Number time limit per test 4 seconds memory limit per test 256 megabytes input s ...

  8. 莫队 Codeforces Round #340 (Div. 2) E

    题目大意:给你一个长度为n的序列,有m个询问,每次询问一个区间[L,R],表示这个区间内,有多少的a[i]^a[i+1].....^a[j]=k. 思路:莫队去搞就好了 我们定义pre[i]=a[1] ...

  9. 「知识学习&日常训练」莫队算法(一)(Codeforce Round #340 Div.2 E)

    题意 (CodeForces 617E) 已知一个长度为\(n\)的整数数列\(a[1],a[2],-,a[n]\),给定查询参数\(l,r\),问\([l,r]\)内,有多少连续子段满足异或和等于\ ...

随机推荐

  1. bzoj1050: [HAOI2006]旅行comf

    Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求一条路径,使得路径上最大 ...

  2. BZOJ 3309: DZY Loves Math

    3309: DZY Loves Math Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 761  Solved: 401[Submit][Status ...

  3. AngularJs 1.5 $location获取url参数

    地址:http://localhost/waservice.html?id=17 获取参数id的值 app.config(['$locationProvider', function ($locati ...

  4. QT 数据库编程四

    //vmysql.cpp #include "vmysql.h" #include <QMessageBox> Vmysql::Vmysql() { mysql_ini ...

  5. Silverlight:针式打印机文字模糊的改善办法

    SL的打印功能,如果使用针式打印机,打出来的字很模糊,网上有一些文章介绍应该使用"Arial,SimSun"(即:宋体),但实际测试的结果,宋体依然很模糊. 下面是各种字体的测试: ...

  6. 防止 JavaScript 自动插入分号

    JavaScript语言有一个机制:在解析时,能够在一句话后面自动插入一个分号,用来修改语句末尾遗漏的分号分隔符. 然而,由于这个自动插入的分号与JavaScript语言的另一个机制发生了冲突,即所有 ...

  7. Expression Blend4经验分享:文字公告无缝循环滚动效果

    这次分享一个类似新闻公告板的无缝循环滚动效果,相信很多项目都会应用到这个效果.之前我也百度了一下,网上的一些Silverlight的文字或图片滚动效果,都是一次性滚动的,如果要做到无缝循环滚动,多数要 ...

  8. 分享:计算机图形学期末作业!!利用WebGL的第三方库three.js写一个简单的网页版“我的世界小游戏”

    这几天一直在忙着期末考试,所以一直没有更新我的博客,今天刚把我的期末作业完成了,心情澎湃,所以晚上不管怎么样,我也要写一篇博客纪念一下我上课都没有听,还是通过强大的度娘完成了我的作业的经历.(当然作业 ...

  9. [leetcode]算法题目 - Sudoku Solver

    最近,新加坡总理李显龙也写了一份代码公布出来,大致瞧了一眼,竟然是解数独题的代码!前几天刚刚写过,数独主要算法当然是使用回溯法.回溯法当时初学的时候在思路上比较拧,不容易写对.写了几个回溯法的算法之后 ...

  10. JVM内存管理------GC简介

    为何要了解GC策略与原理? 原因在上一章其实已经有所触及,就是因为在平时的工作和研究当中,不可避免的会遇到内存溢出与内存泄露的问题.如果对GC策略与原理不了解的情况下碰到了前面所说的问题,很多时候会让 ...