19-10-24-J-快乐?
向未来的大家发送祝福(不接受的请自动忽略):
祝大家程序员节快乐!
好了。
ZJ一下
额。
考场上差点死了。
码1h后,T1还没过大样例。
我×××。
后来发现是自己××了。
T2T3丢暴力。
比咕的分多一点点。
Finally:
|
29
|
Miemeng | 100
03:09:04
|
25
03:09:04
|
25
03:09:05
|
150
03:09:05
|
Sol:
T1
不多说直接干即可
#include <iostream>
#include <cstring>
#include <cstdio>
#define L 1111111 using namespace std; char st[L],ans[L<<4];
int len,cnt;
bool ndp[L<<4];
inline void addin(const char ch){ans[cnt++]=ch;}
int main(){
// freopen("expression.in" ,"r",stdin);\
freopen("expression.out","w",stdout);
scanf("%s",st);
len=strlen(st);
cnt=0;
for(int i=0;i<len;){
if(st[i]=='-'){
addin(st[i]);
i++;
addin(st[i]);
i++;
if(i>=len||st[i]=='+'||st[i]=='-')continue;
addin('+');
while(i<len&&st[i]!='+'&&st[i]!='-'){
addin(st[i]);
i++;
}
}
else{
addin(st[i]);
i++;
}
}
// cout<<cnt<<endl;
for(int i=0;i<cnt;i++){
if(ans[i]=='-'||ans[i]=='+'){
// cout<<i<<">"<<endl;
int j=i+2;
if(ans[i+1]=='0'){
while(j<cnt&&ans[j]=='0'){//SB
// cout<<j<<endl;
ndp[j]=1;
j++;
}
if(ans[j]!='+'&&ans[j]!='-')ndp[j]=1;
i=j-1;
}
}
}
// printf("%s\n",ans);\
for(int i=0;i<cnt;i++)\
if(ndp[i])\
putchar('+');\
else \
putchar(' ');\
puts("");
for(int i=0;i<cnt;i++){
if(ndp[i]&&ans[i]!='+'&&ans[i]!='-')printf("+");
printf("%c",ans[i]);
}
puts("");
// printf("%s\n",ans);
}
T2
考场上啥都没想出来。
首先如果一条边在一个偶环里就一定无法贡献答案。
第二如果一条边在一个奇环里,可能贡献答案,但是如果在这条边被选后还有另外的奇环,那也无法贡献答案。
于是建一棵搜索树,利用一种类似差分前缀和的思想维护$u \rightarrow fa$这条边所在的奇环偶环数。
(为什么有不快乐联通的图啊)
#include <iostream>
#include <cstring>
#include <cstdio>
#define N 111111
#define M 222222 using namespace std; struct SR{
int f,t,next;
}rs[2*M];
int fl[N],cnt=0;
int pn,edn,ans,
dep[N],
odd[N],
even[N],
odcnt=0;
bool is_v[N],
is_st[N]; void add(int f,int t){
rs[cnt].f=f;
rs[cnt].t=t;
rs[cnt].next=fl[f];
fl[f]=cnt++;
}
void dfs(int k,int pred,int dn){
dep[k]=dn;
for(int i=fl[k];i!=-1;i=rs[i].next){
if(i==(pred^1))continue;
int t=rs[i].t;
if(!dep[t])dfs(t,i,dn+1);
if(dep[k]>dep[t]){
int lps=dep[k]-dep[t]+1;
if(lps&1)odd[k]++ ,odd[t]--,odcnt++;
else even[k]++,even[t]--;
}
}
}
void getsums(int k){
is_v[k]=1;
for(int i=fl[k];i!=-1;i=rs[i].next){
int t=rs[i].t;
if(!is_v[t]&&dep[t]==dep[k]+1){//cout<<k<<"->"<<t<<endl;
getsums(t);
odd[k] +=odd[t];
even[k]+=even[t];
}
}
}
int main(void){
int a,b;
//cin.sync_with_stdio(false);
scanf("%d%d",&pn,&edn);
memset(fl,-1,sizeof fl);
for(int i=1;i<=edn;i++){
scanf("%d%d",&a,&b);
add(a,b);
add(b,a);
}
for(int i=1;i<=pn;i++){
if(!dep[i]){
is_st[i]=1;
dfs(i,-1,1);
}
}
// for(int i=1;i<=pn;i++){\
cout<<i<<" "<<odd[i]<<" "<<even[i]<<endl;\
}
for(int i=1;i<=pn;i++)
if(is_st[i])
getsums(i);
// cout<<odcnt<<endl;
for(int i=1;i<=pn;i++){
if(is_st[i])continue;
// cout<<i<<" "<<odd[i]<<" "<<even[i]<<endl;
if(odd[i]==odcnt&&even[i]==0){
ans++;
}
}
if(odcnt==1)ans++;
printf("%d\n",ans);
}
T3
只gugu不说话
(雾
19-10-24-J-快乐?的更多相关文章
- Ubuntu 19.10 发布 | 云原生生态周报 Vol. 24
作者 | 木苏.进超.冬岛.元毅.心水.衷源 业界要闻 1.云原生编程语言 Pulumi 1.0 pulumi ,一款中立的开源云开发平台,Pulumi 支持多语言.混合云环境.完全可扩展.初期支持 ...
- python中使用Opencv进行车牌号检测——2018.10.24
初学Python.Opencv,想用它做个实例解决车牌号检测. 车牌号检测需要分为四个部分:1.车辆图像获取.2.车牌定位.3.车牌字符分割和4.车牌字符识别 在百度查到了车牌识别部分车牌定位和车牌字 ...
- 10.24 正睿停课训练 Day8 AM
目录 2018.10.24 正睿停课训练 Day8 AM A 棒棒糖(组合) B 彩虹糖(思路 博弈) C 泡泡糖(DP) 考试代码 A B C 2018.10.24 正睿停课训练 Day8 AM 期 ...
- 背水一战 Windows 10 (24) - MVVM: 通过 Binding 或 x:Bind 结合 Command 实现,通过非 ButtonBase 触发命令
[源码下载] 背水一战 Windows 10 (24) - MVVM: 通过 Binding 或 x:Bind 结合 Command 实现,通过非 ButtonBase 触发命令 作者:webabcd ...
- 期刊:DOI :10.3969/j.issn.1001-2400.2012.01.008
DOI:10.3969/j.issn.1001-2400.2012.01.008 “/” 分为前缀和后缀两部分中间用一斜杠分开,前缀中又以小圆点分为两部分. "DOI":一篇期刊论 ...
- table-cell http://www.cnblogs.com/StormSpirit/archive/2012/10/24/2736453.html
http://www.cnblogs.com/StormSpirit/archive/2012/10/24/2736453.html
- 使用mybatis提供的各种标签方法实现动态拼接Sql。使用foreach标签实现遍历查询。比如实现select * from user where id in(1,10,24)这条sql查询语句。
向sql传递数组或List,mybatis使用foreach解析,如下: 需求: 传入多个id查询用户信息,用下边的sql实现: select * from user where id in(1,10 ...
- [Linux] 在 Ubuntu 19.10 上开启 SSH 服务并允许远程登录
在 Ubuntu 19.10 上安装 SSH,并开启服务 0.检查并确认系统当前是否已安装SSH: sudo ps -e | grep ssh 如果只有 ssh-agent 说明 ssh-server ...
- [Linux] 树莓派 4B 安装 Ubuntu 19.10 (Eoan Ermine) IOT 版
硬件:Raspberry Pi 4B系统:Ubuntu 19.10 (Eoan Ermine) for IOT官网:https://ubuntu.com/download/iot/raspberry- ...
- Java习题10.24
Java习题10.24 1. 1,3.connect()与accept():这两个系统调用用于完成一个完整相关的建立,其中connect()用于建立连接.accept()用于使服务器等待来自某客户进程 ...
随机推荐
- Delphi窗体间发送消息或字符串
在Delphi 开发中,常常应用到窗体消息传递,以达成某种操作要求,以下列举一个应用的例子,供大家参考. 自定义过程/函数方法://发送字符串到指字句柄的窗口中 (接收窗体需用发送时的消息常量WM_C ...
- QT中QString与string的转化,解决中文乱码问题
在QT中,使用QString输出到控件进行显示时,经常会出现中文乱码,网上查了一圈,发现大部分都是针对QT4增加4条语句:</span> [cpp] view plain copy QTe ...
- linux学习(五)-----组管理和权限管理
Linux 组基本介绍 在 linux 中的每个用户必须属于一个组,不能独立于组外.在 linux 中每个文件有所有者.所在组.其它组的概念. 1)所有者 2)所在组 3)其它组 4)改变用户所在的组 ...
- SQL Serve 临时表
SQL Server 支持临时表.临时表就是那些名称以井号 (#) 开头的表.如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表.临时表不存储在当前数据库内,而是存储在系统数据 ...
- java空和非空判断
public static boolean isEmpty(String str){ if("".equals(str)||str==null){ return true; }el ...
- LINUX挂接光盘镜像文件
1.从光盘制作光盘镜像文件.将光盘放入光驱,执行下面的命令. #cp /dev/cdrom /home/sunky/mydisk.iso 或 #dd if=/dev/cdrom of=/home/su ...
- Redis单机和集群配置(版本在5.0后)
摘抄并用于自己后查 单机版的配置: 1. 下载redis压缩包,然后解压缩文件(tar xzf): 2. 进入解压后的redis文件目录,编译redis源文件(make,没有c环境要gcc): 3. ...
- vue初学之node.js安装、cnpm安装、vue初体验
1. 如果本机没有安装node运行环境,请下载node 安装包进行安装.地址:https://nodejs.org/en/ 2.装完,使用cmd命令行输入:node -v回车 如果输出版本号则成功. ...
- Python+Selenium基础入门及实践
Python+Selenium基础入门及实践 32018.08.29 11:21:52字数 3220阅读 23422 一.Selenium+Python环境搭建及配置 1.1 selenium 介绍 ...
- windows pip 安装 转载
经常在使用Python的时候需要安装各种模块,而pip是很强大的模块安装工具,但是由于国外官方pypi经常被墙,导致不可用,所以我们最好是将自己使用的pip源更换一下,这样就能解决被墙导致的装不上库的 ...