T1 位运算1(bit)

Time Limit:1000ms   Memory Limit:128MB

题目描述

LYK拥有一个十进制的数N。它赋予了N一个新的意义:将N每一位都拆开来后再加起来就是N所拥有的价值。例如数字123拥有6的价值,数字999拥有27的价值。

假设数字N的价值是K,LYK想找到一个价值是K-1的数字,当然这个答案实在太多了,LYK想使得这个价值为K-1的数字尽可能大。

输入格式(bit.in)

一个数N。

输出格式(bit.out)

一个数表示答案。你需要输出一个非负整数,且这个数不包含前导0。

输入样例1

199

输出样例1

198

输入样例2

1000

输出样例2

0

对于20%的数据n<=10

对于40%的数据n<=100

对于60%的数据n<=1000

对于100%的数据1<=n<=100000。

 /*
把数的每一位拿出来,
从最后判断是否可以减一
*/
#include <cstdio> inline void read(int &x)
{
x=; register char ch=getchar();
for(; ch>''||ch<''; ) ch=getchar();
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
}
int n,cnt,num[]; int Presist()
{
freopen("bit.in","r",stdin);
freopen("bit.out","w",stdout);
read(n);
for(; n; n/=) num[++cnt]=n%;
for(int i=; i<=cnt; ++i)
if(num[i]) { num[i]--; break; }
for(; cnt>&&!num[cnt]; ) cnt--;
for(int i=cnt; i>=; --i) printf("%d",num[i]);
return ;
} int Aptal=Presist();
int main(int argc,char**argv){;}

AC

T2 火柴棒 (stick)

Time Limit:1000ms   Memory Limit:128MB

题目描述

众所周知的是,火柴棒可以拼成各种各样的数字。具体可以看下图:

通过2根火柴棒可以拼出数字“1”,通过5根火柴棒可以拼出数字“2”,以此类推。

现在LYK拥有k根火柴棒,它想将这k根火柴棒恰好用完,并且想知道能拼出的最小和最大的数分别是多少。

输入格式(stick.in)

一个数k。

输出格式(stick.out)

两个数,表示最小的数和最大的数。注意这两个数字不能有前导0。

输入样例

15

输出样例

108 7111111

数据范围

对于30%的数据k<=10。

对于60%的数据k<=20。

对于100%的数据1<k<=100。

 /*
打表可以发现,最大值就只有1,7两种数字
且容易发现k&1==1时,第一位是7,其余时1
最小值只有1,2,0,6,8这几种数字、
且容易发现,出现8和6的情况可以特判
最多可能存在1个1或是2,其余是0或者8且0最多出现2个
*/
#include <cstring>
#include <cstdio> inline void read(int &x)
{
x=; register char ch=getchar();
for(; ch>''||ch<''; ) ch=getchar();
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
}
const int use[]={,,,,,,,,,};
int k,num[],cnt,tmp[];
bool flag; inline void Get_min()
{
for(int i=; i<=; ++i)
if(use[i]==k)
{
printf("%d ",i);
return ;
}
if(k%==)
{
for(int i=; i<=k/; ++i)
printf("");
printf(" "); return ;
}
else if(k%==)
{
printf("");
for(int i=; i<=k/; ++i)
printf("");
printf(" "); return ;
}
int tmp=k;
tmp-=;num[++cnt]=;
if(tmp%==)
{
for(; tmp; tmp-=) num[++cnt]=;
for(int i=; i<=cnt; ++i) printf("%d",num[i]);
printf(" "); return ;
}
tmp-=;num[++cnt]=;
if(tmp%==)
{
for(; tmp; tmp-=) num[++cnt]=;
for(int i=; i<=cnt; ++i) printf("%d",num[i]);
printf(" "); return ;
}
tmp-=;num[++cnt]=;
if(tmp%==)
{
for(; tmp; tmp-=) num[++cnt]=;
for(int i=; i<=cnt; ++i) printf("%d",num[i]);
printf(" "); return ;
}
tmp=k;cnt=;
tmp-=;num[++cnt]=;
if(tmp%==)
{
for(; tmp; tmp-=) num[++cnt]=;
for(int i=; i<=cnt; ++i) printf("%d",num[i]);
printf(" "); return ;
}
tmp-=;num[++cnt]=;
if(tmp%==)
{
for(; tmp; tmp-=) num[++cnt]=;
for(int i=; i<=cnt; ++i) printf("%d",num[i]);
printf(" "); return ;
}
tmp-=;num[++cnt]=;
if(tmp%==)
{
for(; tmp; tmp-=) num[++cnt]=;
for(int i=; i<=cnt; ++i) printf("%d",num[i]);
printf(" "); return ;
}
}
inline void Get_max(int k)
{
if(k&) k-=,printf("");
for(; k; k-=) printf("");
} int Presist()
{
freopen("stick.in","r",stdin);
freopen("stick.out","w",stdout);
read(k);
if(k!=) Get_min();
else printf("22 "); Get_max(k);
return ;
} int Aptal=Presist();
int main(int argc,char**argv){;}

考场AC代码

 #include <cmath>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <map>
#include <vector>
#include <set>
using namespace std;
long long dp[];
int f[],n;
int main()
{
freopen("stick.in","r",stdin);
freopen("stick.out","w",stdout);
f[]=; f[]=; f[]=; f[]=; f[]=;
f[]=; f[]=; f[]=; f[]=; f[]=;
dp[]=; dp[]=; dp[]=; dp[]=; dp[]=;dp[]=;
for (int i=; i<=; i++)
{
dp[i]=dp[i-f[]]*;
for (int j=; j<=; j++)
if (dp[i-f[j]]!=)
dp[i]=min(dp[i],dp[i-f[j]]*+j);
}
cin>>n;
cout<<dp[n]<<' ';
if (n%==) {cout<<; n-=;}
while (n){cout<<; n-=;}
return ;
}

std动归

T3 听音乐(music)

Time Limit:1000ms   Memory Limit:128MB

题目描述

LYK喜欢听音乐,总共有n首音乐,有m个时刻,每个时刻LYK会听其中一首音乐,第i个时刻会听第ai首音乐。它给自己定了一个规定,就是从听音乐开始,听的每连续n首音乐都是互不相同的。例如当n=3时,从听歌开始,123321就是一个合法的顺序(此时LYK听了两轮歌,分别是123和321,每一轮的歌都是互不相同的),而121323就是一个不合法的顺序(LYK也听了两轮歌,第一轮中121存在听了两次相同的歌)。我们现在只截取其中一个片段,也就是说并不知道LYK之前已经听了什么歌。因此121323也仍然可以是一个合法的顺序,因为LYK之前可能听过3,然后再听121323,此时LYK听了三轮歌,分别是312,132和3。

现在LYK将告诉你这m个时刻它听的是哪首歌。你需要求出LYK在听这m首歌之前可能听过的歌的不同方案总数(我们认为方案不同当且仅当之前听过的歌的数量不同)。LYK向你保证它之前听过的歌的数量是在0~n-1之间的。因此你输出的答案也应当是0~n中的某个整数(答案是0表示LYK记错了,没有一个合法的方案)。

输入格式(music.in)

第一行两个数n,m。

第二行m个数表示ai。

输出格式(music.out)

一个数表示答案。

输入样例1

4 10

3 4 4 1 3 2 1 2 3 4

输出样例1

1

样例解释1:LYK之前一定只听过2首歌(12或者21),这样可以分成3部分分别是34,4132,1234,每一部分都没有出现相同的歌。对于其它情况均不满足条件。

输入样例2

6 6

6 5 4 3 2 1

输出样例2

6

样例解释2:LYK之前听过0~5首歌的任意几首都是有可能满足条件的。

数据范围

对于50%的数据n,m<=1000。

对于100%的数据1<=n,m<=100000,1<=ai<=n。

其中均匀分布着n<m以及n>=m的情况。

提示:

LYK知道这个题目很长,但为了便于理解已经加了很多注释了……建议没看懂的同学们再重新看一遍……

 #include <cstdio>

 inline void read(int &x)
{
x=; register char ch=getchar();
for(; ch>''||ch<''; ) ch=getchar();
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
} const int N();
int n,m,a[N],ans;
int stretch[N];
bool vis[N]; inline void Prepare(int r)
{
stretch[r]=m;
vis[ a[r] ]=;
for(int i=m-; i; --i)
{
if(!vis[a[i]]) stretch[i]=r,vis[a[i]]=;
else
{
for(; i<r; vis[a[r--]]= )
if(a[i]==a[r]){ r--; break; }
stretch[i]=r;
}
}
} int Presist()
{
freopen("music.in","r",stdin);
freopen("music.out","w",stdout);
read(n),read(m);
for(int i=; i<=m; ++i) read(a[i]);
Prepare(m); //处理出每个点作为歌单第一首所能得到的最长的歌单结束点
if(n<m) //此时能组成多个歌单
{
for(int i=,pos; i<=n; ++i)
{
if(stretch[]<i) break; //第一首无法匹配,就直接结束了
for(int j=i+; j<=m; j+=n)
{
pos=m<(j+n-)?m:(j+n-);//找到结束点,判断是否匹配
if(stretch[j]<pos) goto lose;
}
ans++; lose:;
}
}
else //至多两个
{
for(int i=; i<n; ++i)
if(i>=m) ans+=(stretch[]==m); // 判断能否得到一种歌单
else ans+=(stretch[]>=i&&stretch[i+]>=m);//判断是否能得到分开的两个歌单
}
printf("%d\n",ans);
return ;
} int Aptal=Presist();
int main(int argc,char**argv){;}

AC

2017-10-01-morning的更多相关文章

  1. Cheatsheet: 2017 10.01 ~ 12.31

    Mobile Updating Your App for iOS 11 Get Started With Natural Language Processing in iOS 11 Getting S ...

  2. VRay 2.0 SP1 2.10.01 for 3ds max 9/2008/2009/2010/2011/2012 32/64位 顶渲简体中文版+英文版[中国室内设计论坛-室内人]

    VRay 2.0 SP1 2.10.01 for 3ds max 9/2008/2009/2010/2011/2012 32/64位 顶渲简体中文版+英文版[中国室内设计论坛-室内人] 对最新版本的V ...

  3. 调试大叔V1.0.1(2017.09.01)|http/s接口调试、数据分析程序员辅助开发神器

    2017.09.01 - 调试大叔 V1.0.1*支持http/https协议的get/post调试与反馈:*可保存请求协议的记录:*内置一批动态参数,可应用于URL.页头.参数:*可自由管理cook ...

  4. 九月 26, 2017 10:18:14 上午 com.sun.jersey.server.impl.application.RootResourceUriRules <init> 严重: The ResourceConfig instance does not contain any root resource classes.

    Tomcat启动错误:九月 26, 2017 10:18:14 上午 com.sun.jersey.server.impl.application.RootResourceUriRules <i ...

  5. 2017/10 冲刺NOIP集训记录:暁の水平线に胜利を刻むのです!

    前几次集训都没有记录每天的点滴……感觉缺失了很多反思的机会. 这次就从今天开始吧!不能懈怠,稳步前进! 2017/10/1 今天上午进行了集训的第一次考试…… 但是这次考试似乎是近几次我考得最渣的一次 ...

  6. Adobe Audition CC 2017 (10.0)安装教程

    Adobe Audition CC 2017 (10.0)安装教程 注:下载地址在文章末尾 第一步:首先请将电脑的网络断开,很简单:禁用本地连接或者拔掉网线,这样就可以免除登录Creative Clo ...

  7. Xamarin 2017.10.9更新

     Xamarin 2017.10.9更新 本次更新主要解决了一些bug.Visual Studio 2017升级到15.4获得新功能.Visual Studio 2015需要工具-选项-Xamarin ...

  8. 2017.10.12 Java的计数器的开发

    //我们用一个合成的applet/application来简单显示出一个计数器的结果/** * Created by qichunlin on 2017/10/12. */ /*简单的计数器*/ im ...

  9. 2017.10.10 java中的继承与多态(重载与重写的区别)

    1. 类的继承 继承是面向对象编程技术的主要特征之一,也是实现软件复用的重要手段,使用继承特性子类(subclass) 可以继承父类(superclass)中private方法和属性,继承的目的是使程 ...

  10. Leetcode春季活动打卡第三天:面试题 10.01. 合并排序的数组

    Leetcode春季活动打卡第三天:面试题 10.01. 合并排序的数组 Leetcode春季活动打卡第三天:面试题 10.01. 合并排序的数组 思路 这道题,两个数组原本就有序.于是我们采用双指针 ...

随机推荐

  1. git + git flow 的简单介绍

    1.git简单实用 git:是一种分布式版本控制系统,因为其优秀的特性个人十分推崇. 1.1设置本机用户身份 git config -global user.name "userName&q ...

  2. applicationContext.getBean(“loginEntity”)

    <!-- 指定Spring需要扫描的包,并将所有是别的类放到容器中,便于识别被注解的受托管bean --> <context:component-scan base-package= ...

  3. MySQL学习随笔--通过实例理解merge ,temptable算法的差异

    实例1 使用视图的两种算法merge和temptable分别统计 表tb_phone中market_price大于4000的手机,然后查询视图查找出小于6000的手机 简单总结最终获取的结果:查询出m ...

  4. swiper移动端下不能正常轮播的解决方案-----此坑没躺过估计很难找到正确姿势

    <script> var mySwiper = new Swiper('.swiper-container', { direction: 'vertical', //horizontal横 ...

  5. org.springframework.orm.hibernate4.support.OpenSessionInViewFilter

    ---恢复内容开始--- /* * Copyright 2002-2014 the original author or authors. * * Licensed under the Apache ...

  6. CAD参数绘制块引用对象(网页版)

    主要用到函数说明: _DMxDrawX::DrawBlockReference 绘制块引用对象.详细说明如下: 参数 说明 DOUBLE dPosX 插入点的X坐标 DOUBLE dPosY 插入点的 ...

  7. Vue完成TodoList案例

    写一个简单的TodoList的更实用(文末有彩蛋). 一,使用VUE-CLI脚手架快速搭建一个框架 利用VUE-CLI来自动生成我们项目的前端目录及文件,方法: npm install -g vue- ...

  8. Linux下MySQL 5.7的初始化

    要用管理员账号运行. systemctl start mysql#启动MySQL服务 mysqld_safe --user=mysql &#启动MySQL服务(安全方式) mysql -u r ...

  9. No-1.第一个 Python 程序

    1. 第一个 HelloWorld 程序 1.1 Python 源程序的基本概念 Python 源程序就是一个特殊格式的文本文件,可以使用任意文本编辑软件做 Python 的开发 Python 程序的 ...

  10. CSU 2018年12月月赛 B 2214: Sequence Magic

    Description 有一个1到N的自然数序列1,2,3,...,N-1,N. 我们对它进行M次操作,每次操作将其中连续的一段区间 [Ai,Bi][Ai,Bi] (即第Ai个元素到第Bi个元素之间的 ...