10.31 afternoon
巧克力棒(chocolate)
Time Limit:1000ms Memory Limit:64MB
题目描述
LYK 找到了一根巧克力棒,但是这根巧克力棒太长了, LYK 无法一口吞进去。
具体地,这根巧克力棒长为 n,它想将这根巧克力棒折成 n 段长为 1 的巧克力棒,然后
慢慢享用。
它打算每次将一根长为 k 的巧克力棒折成两段长为 a 和 b 的巧克力棒,此时若 a=b,则
LYK 觉得它完成了一件非常困难的事,并会得到 1 点成就感。
LYK 想知道一根长度为 n 的巧克力棒能使它得到最多几点成就感。
输入格式(chocolate.in)
第一行一个数 n。
输出格式(chocolate.out)
一个数表示答案。
输入样例
7
输出样例
4
数据范围
对于 20%的数据 n<=5。
对于 50%的数据 n<=20。
对于 80%的数据 n<=2000。
对于 100%的数据 n<=1000000000。
样例解释
将 7 掰成 3+4,将 3 掰成 1+2,将 4 掰成 2+2 获得 1 点成就感,将剩下的所有 2 掰成 1+1
获得 3 点成就感。总共 4 点成就感。
结论没推出来 Dfs+map 不过还是0ms
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<map>
#define maxn 1010
using namespace std;
int n,a[maxn],c;
map<int,int>f;
int Dfs(int x){
if(f[x]||x==|x==)return f[x];
int pos=upper_bound(a+,a++a[],x)-a-;
if(a[pos]==x){
f[x]=x-;return f[x];
}
f[x]=Dfs(a[pos])+Dfs(x-a[pos]);
return f[x];
}
int main()
{
freopen("chocolate.in","r",stdin);
freopen("chocolate.out","w",stdout);
cin>>n;c=;
for(int i=;i<=;i++){
a[++a[]]=c<<i;
if((c<<i)>n)break;
}
f[]=;f[]=;
cout<<Dfs(n);
return ;
}
LYK 快跑! (run)
Time Limit:5000ms Memory Limit:64MB
题目描述
LYK 陷进了一个迷宫!这个迷宫是网格图形状的。 LYK 一开始在(1,1)位置,出口在(n,m)。
而且这个迷宫里有很多怪兽,若第 a 行第 b 列有一个怪兽,且此时 LYK 处于第 c 行 d 列,此
时这个怪兽对它的威胁程度为|a-c|+|b-d|。
LYK 想找到一条路径,使得它能从(1,1)到达(n,m),且在途中对它威胁程度最小的怪兽的
威胁程度尽可能大。
当然若起点或者终点处有怪兽时,无论路径长什么样,威胁程度最小的怪兽始终=0。
输入格式(run.in)
第一行两个数 n,m。
接下来 n 行,每行 m 个数,如果该数为 0,则表示该位置没有怪兽,否则存在怪兽。
数据保证至少存在一个怪兽。
输入格式(run.out)
一个数表示答案。
输入样例
3 4
0 1 1 0
0 0 0 0
1 1 1 0
输出样例
1
数据范围
对于 20%的数据 n=1。
对于 40%的数据 n<=2。
对于 60%的数据 n,m<=10。
对于 80%的数据 n,m<=100。
对于 90%的数据 n,m<=1000。
对于另外 10%的数据 n,m<=1000 且怪兽数量<=100。
bfs
#include<cstdio>
#include<cstring>
#include<queue>
#define pa pair<int,int>
#define mk make_pair
#define X first
#define Y second
#define maxn 1010
using namespace std;
int n,m,k,ans,g[maxn][maxn],s[maxn][maxn],f[maxn][maxn];
queue<pa>q;
int xx[]={,,,-};
int yy[]={,-,,};
int init(){
int x=,f=;char s=getchar();
while(s<''||s>''){if(s=='-')f=-;s=getchar();}
while(s>=''&&s<=''){x=x*+s-'';s=getchar();}
return x*f;
}
bool Judge(int S){
if(s[][]<S)return ;
memset(f,,sizeof(f));
while(!q.empty())q.pop();
q.push(mk(,));f[][]=;
while(!q.empty()){
int x=q.front().X;
int y=q.front().Y;
q.pop();
if(x==n&&y==m)return ;
for(int i=;i<;i++){
int nx=x+xx[i];
int ny=y+yy[i];
if(nx>=&&nx<=n&&ny>=&&ny<=m&&f[nx][ny]==&&s[nx][ny]>=S){
f[nx][ny]=;q.push(mk(nx,ny));
}
}
}
return ;
}
int main(){
freopen("run.in","r",stdin);
freopen("run.out","w",stdout);
n=init();m=init();
memset(s,/,sizeof(s));
for(int i=;i<=n;i++)
for(int j=;j<=m;j++){
g[i][j]=init();
if(g[i][j]){
q.push(mk(i,j));
s[i][j]=;f[i][j]=;
}
}
if(g[][]==||g[n][m]==){
printf("0\n");return ;
}
while(!q.empty()){
int x=q.front().X;
int y=q.front().Y;
q.pop();
for(int i=;i<;i++){
int nx=x+xx[i];
int ny=y+yy[i];
if(nx>=&&nx<=n&&ny>=&&ny<=m&&f[nx][ny]==){
s[nx][ny]=min(s[nx][ny],s[x][y]+);
f[nx][ny]=;q.push(mk(nx,ny));
}
}
}
int l=,r=n*m;
while(l<=r){
int mid=l+r>>;
if(Judge(mid)){
l=mid+;ans=mid;
}
else r=mid-;
}
printf("%d\n",ans);
return ;
}
仙人掌(cactus)
Time Limit:1000ms Memory Limit:64MB
题目描述
LYK 在冲刺清华集训( THUSC)!于是它开始研究仙人掌,它想来和你一起分享它最近
研究的结果。
如果在一个无向连通图中任意一条边至多属于一个简单环(简单环的定义为每个点至多
经过一次),且不存在自环,我们称这个图为仙人掌。
LYK 觉得仙人掌还是太简单了,于是它定义了属于自己的仙人掌。
定义一张图为美妙的仙人掌,当且仅当这张图是一个仙人掌且对于任意两个不同的点 i,j,
存在一条从 i 出发到 j 的路径,且经过的点的个数为|j-i|+1 个。
给定一张 n 个点 m 条边且没有自环的图, LYK 想知道美妙的仙人掌最多有多少条边。
数据保证整张图至少存在一个美妙的仙人掌。
输入格式(cactus.in)
第一行两个数 n,m 表示这张图的点数和边数。
接下来 m 行,每行两个数 u,v 表示存在一条连接 u,v 的无向边。
输出格式(cactus.out)
一个数表示答案
输入样例
4 6
1 2
1 3
1 4
2 3
2 4
3 4
输出样例
4
样例解释
选择边 1-2,1-3,2-3,3-4,能组成美妙的仙人掌,且不存在其它美妙仙人掌有超过 4 条
边。
数据范围
对于 20%的数据 n<=3。
对于 40%的数据 n<=5。
对于 60%的数据 n<=8。
对于 80%的数据 n<=1000。
对于 100%的数据 n<=100000 且 m<=min(200000,n*(n-1)/2)。
考试的时候骗了40 2333
正解比较裸
/*
飘渺的题意....
美妙的仙人掌包含了1-n所有的点
题目中要求任意ij满足条件 那么每个i和i+1一定先连边
这里的ij是整张图的ij 不是仅仅包括仙人掌的哪一坨
那1-n就构成了一条链 考虑剩下的边 每连两条 u1u2 v1v2
看做两端区间 如果重叠的话 就不是仙人掌了
也就是说 先保证满足条件 (连成一条链)然后选尽量多的边
就成了线段覆盖
*/
#include<cstdio>
#include<algorithm>
#define maxn 100010
using namespace std;
int n,m,cnt;
struct node{
int u,v;
bool operator < (const node &x)const{
return v<x.v;
}
}e[maxn*];
int init(){
int x=,f=;char s=getchar();
while(s<''||s>''){if(s=='-')f=-;s=getchar();}
while(s>=''&&s<=''){x=x*+s-'';s=getchar();}
return x*f;
}
int main()
{
freopen("cactus.in","r",stdin);
freopen("cactus.out","w",stdout);
n=init();m=init();
int u,v;
for(int i=;i<=m;i++){
u=init();v=init();
if(u>v)swap(u,v);
if(u!=v-){
e[++cnt].u=u;e[cnt].v=v;
}
}
sort(e+,e++cnt);
int r=,sum=;
for(int i=;i<=cnt;i++)
if(e[i].u>=r){
sum++;r=e[i].v;
}
printf("%d\n",sum+n-);
return ;
}
10.31 afternoon的更多相关文章
- 背水一战 Windows 10 (31) - 控件(按钮类): ButtonBase, Button, HyperlinkButton, RepeatButton, ToggleButton, AppBarButton, AppBarToggleButton
[源码下载] 背水一战 Windows 10 (31) - 控件(按钮类): ButtonBase, Button, HyperlinkButton, RepeatButton, ToggleButt ...
- Contest - 2014 SWJTU ACM 手速测试赛(2014.10.31)
题目列表: 2146 Problem A [手速]阔绰的Dim 2147 Problem B [手速]颓废的Dim 2148 Problem C [手速]我的滑板鞋 2149 Problem D [手 ...
- 17.10.31&11.01
10.31模拟考试 Prob.1(AC)裸的矩阵幂 Prob.2(WA)(类似括号匹配求合法方案数) 卡特兰数的一个模型运用.可以推出一个式子(推导方法一个erge讲的,一个骚猪讲的) Prob.3( ...
- 10.31 正睿停课训练 Day13
目录 2018.10.31 正睿停课训练 Day13 A Poker(期望) B Label(高斯消元) C Coin(二分图染色 博弈) 考试代码 A(打表) B 2018.10.31 正睿停课训练 ...
- XSY3244 10.31 D
XSY3244 10.31 D 题意: 数轴上有\(N\)只老鼠\(M\)个洞,每个洞有一个容量,求所有老鼠进洞的最小代价.(\(N,M\leq1000000\),时限\(2s\)) 题解: ...
- [软件工程基础]2017.10.31 第四次 Scrum 会议
具体事项 项目交接燃尽图 每人工作内容 成员 已完成的工作 计划完成的工作 工作中遇到的困难 游心 #7 掌握 PHP:#6 阅读分析 PhyLab 数据处理相关代码 #10 搭建可用的开发测试环境: ...
- Cheatsheet: 2016 10.01 ~ 10.31
Docker Introduction to Docker Monitoring Database MongoDB: The Good, The Bad, and The Ugly Web 4 Key ...
- Cheatsheet: 2015 10.01 ~ 10.31
.NET Publishing your ASP.NET App to Linux in 5 minutes with Docker Integrating AngularJS with ASP.NE ...
- Sixth scrum meeting - 2015/10/31
概述 今天是周末,我们小组由于之前拖延的比较久,所以今天仍然在努力的开发…… 目前开发已经到了中期阶段,今天遇到了一个问题就是,由于小组的某些同学对git的使用不太熟悉,导致在git push的时候遇 ...
随机推荐
- 浅谈JS DDoS攻击原理与防御
分布式拒绝服务攻击(DDoS)攻击是一种针对网站发起的最古老最普遍的攻击.Nick Sullivan是网站加速和安全服务提供商CloudFlare的一名系统工程师.近日,他撰文介绍了攻击者如何利用恶意 ...
- Technology Trader
zoj2071:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2071 题意:题意一些零件,每一个零件会有一个花费,然后用这 ...
- Distinct Substrings
spoj694:http://www.spoj.com/problems/DISUBSTR/ 题意:给以一个串,求这个串的所有不同子串的个数. 题解:第一次接触后缀数组,这里可以转化成,求所有子串后缀 ...
- Qt中连接到同一signal的多个slots的执行顺序问题(4.6以后按连接顺序执行)
起源 前些天忘记在哪儿讨论过这个问题,今天在csdn又看到有网友问这个问题,而其他网友却无一例外的给出了“无序”这个答案. Manual Qt的问题,当manual中有明确文字说明时,我们应该以Qt的 ...
- Qt中事件处理的方法(图文并茂,仔细看看)
http://blog.csdn.net/qing666888/article/details/14111271 http://blog.csdn.net/qing666888/article/det ...
- Azure SQL 数据库的灵活缩放预览版简介
Eron Kelly SQL Server 产品管理部门产品市场营销总经理 几天前,我们宣布了发布 Azure SQL 数据库的灵活缩放公共预览版.新增的灵活缩放功能通过简化开发和管理,简化了扩展和缩 ...
- MapReduce扩展:应用程序如何运行于Hadoop Yarn之上
1. 背景 “应用程序运行于Hadoop Yarn之上”的需求来源于微博运维数据平台中的调度系统,即调度系统中的任务需要运行于Hadoop Yarn之上.这里的应用程序可以简单理解为一个普通的进程 ...
- delphi调用webservice 转
如今 Web Service 已越来越火了,在DotNet已开发的Web Service中,Delphi 7如何方便的调用DotNet写的Web Service呢?方法有两种,一种是在Delphi ...
- unity3d shader之Roberts,Sobel,Canny 三种边缘检测方法
方法其实都差不多,就是用两个过滤器,分别处理两个分量 Sobel算子 先说Sobel算子 GX为水平过滤器,GY为垂直过滤器,垂直过滤器就是水平过滤器旋转90度.过滤器为3x3的矩阵,将与图像作平面卷 ...
- Hibernate(一)JDBC简介
在了解Hibernate之前,我们先回顾一下传统JDBC访问数据库的相关内容.重点在于分析JDBC访问存在哪些 缺陷,这些缺陷在Hibernate中是如何思考和解决的? JDBC主要对象 DriveM ...