第十届山东省acm省赛补题(2)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4124
L Median
Time Limit: 1 Second Memory Limit: 65536 KB
题意:一个序列有n个数,数值未知,给出m对大小关系,求对于每个数是否可以生成一个序列满足这个这个数为中位数,可以该位置输出1,反之输出0。
思路:考虑二元关系,可以建立有向图,考虑到数据范围很小,可以用floyed传递闭包,对于那些没有确定关系的数,他们的关系可以任意假设,所以只需要保证大(小)于他的元素个数少于n/2即可。感谢题目提供的特判提醒 另外进行特判时,必须在floyed传递闭包之后,因为这个wa了好几发。。。
代码如下:
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
const int maxn=;
int a[maxn][maxn],ma[maxn],mi[maxn];
int main()
{
int T;
cin>>T;
while(T--)
{
memset(a,,sizeof(a));
memset(ma,,sizeof(ma));
memset(mi,,sizeof(mi));
int n,m,flag=;
scanf("%d %d",&n,&m);
for (int i=; i<=m; i++)
{
int u,v;
scanf("%d %d",&u,&v);
if (u==v) flag=;
a[u][v]=;
}
for (int k=; k<=n; k++)
{
for (int i=; i<=n; i++)
{
for (int j=; j<=n; j++)
{
a[i][j]=a[i][j]||(a[i][k]&&a[k][j]);
}
}
}
for (int i=; i<=n; i++)
{
for (int j=; j<=n; j++)
{
if (a[i][j]&&a[j][i])
{
flag=;
break;
}
}
if (flag) break;
}
if (flag)
{
for (int i=; i<=n; i++)
putchar();
putchar();
continue ;
}
for (int i=; i<=n;i++)
{
for (int j=; j<=n; j++)
{
if (a[i][j])
ma[i]++,mi[j]++;
}
}
for (int i=; i<=n; i++)
{
if (ma[i]<=n/ && mi[i]<=n/)
putchar();
else putchar();
}
putchar();
}
return ;
}
5.17 补充 翻看ppt时,发现传递闭包那个题还可以bitset优化 改成 a[i][j]|=(a[i][k]&&a[k][j]);
优化后50ms-》30ms
F Tokens on the Segments
Time Limit: 1 Second Memory Limit: 65536 KB
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4120
题意:给出n个线段(包括长度为0的点线段),这些线段都是平行于x轴的,对于每个x坐标只可以放一个硬币到任意线段上,求最多可以让几个线段放上硬币。
思路:
大致就是贪心+优先队列。
贪心思想就是,对于越短的线段越难放,所以同一个x坐标对应有多条线段时,尽量选短的,然后从x最小的开始放吧。
代买如下:
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
typedef struct node
{
int s,e;
bool friend operator < (node a,node b)
{
if (a.s!=b.s)
return a.s>b.s;
return a.e>b.e;
}
}node;
int main()
{
int T;
cin>>T;
while(T--)
{
priority_queue <node> Q;
int n,ma=-,ans=;
scanf("%d",&n);
for (int i=; i<=n; i++)
{
node a;
scanf("%d%d",&a.s,&a.e);
Q.push(a);
}
while(!Q.empty())
{
node cur=Q.top();
Q.pop();
if (cur.s<=ma && cur.s+<=cur.e)
{
node t=cur;
t.s++;
Q.push(t);
continue ;
}
if (cur.s>ma)
{
ans++;
ma=max(ma,cur.s);
}
}
printf("%d\n",ans);
}
return ;
}
第十届山东省acm省赛补题(2)的更多相关文章
- 第十届山东省acm省赛补题(1)
今天第一场个人训练赛的题目有点恐怖啊,我看了半个小时多硬是一道都不会写.我干脆就直接补题去了.... 先补的都是简单题,难题等我这周末慢慢来吧... A Calandar Time Limit: 1 ...
- 第七届山东省ACM省赛
激动人心的省赛终于结束了…平静下来再回头看真的感觉一波三折…先是赛前毫无预兆的查出突发性耳聋…伴随而来的就是左耳听力下降.轻微耳鸣.极个别情况下的头晕…不过这都还好,毕竟药物可以恢复…热身赛只过了一道 ...
- 2018年第九届山东省ACM省赛总结
去年打完区域赛之后,面对着两个队友都去找实习的情况,我自己对今年省赛还是有点慌的.不只一次的像我的队友说明自己很慌,但是老曹跟会长都说:“没事,慌啥!”前几场训练赛因为老曹跟秋洁有面试有时候只能一个人 ...
- 哈尔滨工程大学ACM预热赛 补题
链接:https://ac.nowcoder.com/acm/contest/554/A来源:牛客网 小虎刚刚上了幼儿园,老师让他做一个家庭作业:首先画3个格子,第二行有2个格子,第三行有1个格子. ...
- 2018山东省ACM省赛G题-Game
Alice and Bob are playing a stone game. There are n piles of stones. In each turn, a player can remo ...
- 第十届蓝桥杯省赛JavaB组个人题解
前言 以下的第十届蓝桥杯Java B组省赛的题目题解只是我个人的题解,提供一些解题思路,仅作参考,如有错误,望大家指出,不甚感激,我会及时更改. 试题 A: 组队 ----- 答案:490 [问题描述 ...
- 2019山东省ACM省赛菜鸡的赛后总结
省赛总结 2019-05-13 21:27:40 虽然第一次就死的这么难看,但是的确发现了很多问题,我想这是未来我和我的队友要解决的,而不是去难过,去感慨自己是有多菜.在大一训练结束马上参加暑假集训的 ...
- 2017河工大校赛补题CGH and 赛后小结
网页设计课上实在无聊,便开始补题,发现比赛时候僵着的东西突然相通了不少 首先,"追妹"这题,两个队友讨论半天,分好多种情况最后放弃(可是我连题目都没看啊),今天看了之后试试是不是直 ...
- “浪潮杯”第九届山东省ACM大学生程序设计竞赛重现赛 C-Cities
题目描述:There are n cities in Byteland, and the ith city has a value ai. The cost of building a bidirec ...
随机推荐
- Ubuntu 安装uwsgi出错
1.分析了下,感觉是gcc除了问题,百度了一下,发现有类似的解决办法,记录一下. Collecting uwsgi Using cached https://files.pythonhosted.or ...
- [SCOI2016]幸运数字(线性基,倍增)
[SCOI2016]幸运数字 题目描述 A 国共有 n 座城市,这些城市由 n-1 条道路相连,使得任意两座城市可以互达,且路径唯一.每座城市都有一个幸运数字,以纪念碑的形式矗立在这座城市的正中心,作 ...
- Mysql中event事件的入门
Mysql中event事件的入门 主要涉及的知识点:mysql的存储过程.mysql的event事件调度. 参考资料: Qiao_Zhi的博客:[周期性执行事件]MySQL事件(Event)& ...
- 2017年全国卷3的21题与2018年全国卷3的21题命题背景是同一个函数$y=\frac{2x}{\ln(x+1)}$(再次瞎谈)
2017年四川高考数学(全国卷3)理科21题第1问 已知函数\(f(x)=x-1-a\ln x\) (1)若\(f(x)\geqslant 0\),求\(a\)的值\(.\) 该不等式等价于$a\ln ...
- wepy框架换行
上图所圈的写法会造成如下图所示 在微信开发工具是没有问题的,在真机 运行下会出现空格问题. 解决如下:
- MySQL——Alias
查询时,当表名很长或者执行一些特殊查询的时候,为了方便操作或者需要多次使用相同的表时,可以为表指定别名,用这个别名代替表原来的名称. 设置别名为表设置别名 <表名> [AS] <别名 ...
- Android使用init.rc触发脚本实现隐藏内置应用
[实现逻辑] 通过在property_service.c中设置标志位,在设置中实现接口改变标志位, 使用init.rc中声明的服务来侦听标志位的变化,显式启动声明的服务,执行对应的脚本,把应用后缀从a ...
- wannafly 练习赛11 B 假的字符串(字典树+建边找环)
链接:https://www.nowcoder.com/acm/contest/59/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit ...
- linux命令之查找find &grep
区别:find找目录下的文件:find+目录路径+条件表达式,grep找文件中的行:grep+匹配正则表达式+文件名 find命令 find命令的一般形式 find命令的常用选项及实例 find与xa ...
- 微信小程序 API 数据缓存
微信小程序 数据缓存 (类似于 cookie) wx.setStorage() 将数据存储在本地缓存中制定的 key 中.会覆盖掉原来该 key 对应的内容,数据存储生命周期跟小程序本身一致,即除用户 ...