Codeforces_794
A.统计两个guard之间的钞票数。
#include<bits/stdc++.h>
#define MOD 1000000009
using namespace std; int a,b,c,n; int main()
{
ios::sync_with_stdio(false);
cin >> a >> b >> c >> n;
int ans = ;
while(n--)
{
int x;
cin >> x;
if(b < x && x < c) ans++;
}
cout << ans << endl;
return ;
}
B.面积x倍,边长sqrt(x)倍。
#include<bits/stdc++.h>
#define MOD 1000000009
using namespace std; int n,h; int main()
{
ios::sync_with_stdio(false);
cin >> n >> h;
for(int i = ;i < n;i++)
{
cout << fixed << setprecision() << h*sqrt(1.0*i/n) << " ";
}
cout << endl;
return ;
}
C.首先可以得知,选取s1中最小的(n+1)/2个,s2中最大的n/2个,整个过程有以下两步骤。
1.当s1中最小的比s2中最小的要小是,显然,s1每次选最小的放在串首,s2每次选最小的放在串首。
2.否则,s1每次选最大的放在串尾,s2每次选最大的放在串尾。
#include<bits/stdc++.h>
using namespace std; string s1,s2; int main()
{
ios::sync_with_stdio(false);
cin >> s1;
sort(s1.begin(),s1.end());
cin >> s2;
sort(s2.begin(),s2.end());
reverse(s2.begin(),s2.end());
int n = (s1.length()+)/,m = s1.length()/;
int now1 = ,now2 = ;
char ans[] = {};
int num = ,l = ,r = s1.length()-;
while(num < s1.length() && s1[now1] < s2[now2])
{
if(num% == ) ans[l++] = s1[now1++];
else ans[l++] = s2[now2++];
num++;
}
now1 = n-,now2 = m-;
while(num < s1.length())
{
if(num% == ) ans[r--] = s1[now1--];
else ans[r--] = s2[now2--];
num++;
}
cout << ans << endl;
return ;
}
D.用hash缩点,之后的图每个点最多只能有两条边,dfs。
#include<bits/stdc++.h>
using namespace std; int n,m;
int hashh[],pre[],ans[] = {},vis[] = {},visc[] = {};
vector <int> v[]; void dfs(int now)
{
vis[now] = true;
if(ans[now] == ) return;
for(int i = ;i < v[now].size();i++)
{
int t = v[now][i];
if(hashh[t] == hashh[now]) ans[t] = ans[now];
}
for(int i = ;i < v[now].size();i++)
{
int t = v[now][i];
if(vis[t]) continue;
if(!ans[t])
{
if(!visc[ans[now]-])
{
visc[ans[now]-] = ;
ans[t] = ans[now]-;
}
else if(!visc[ans[now]+])
{
visc[ans[now]+] = ;
ans[t] = ans[now]+;
}
}
dfs(t);
}
} int main()
{
ios::sync_with_stdio();
cin >> n >> m;
pre[] = ;
for(int i = ;i <= n;i++) pre[i] = pre[i-]*+i;
for(int i = ;i <= n;i++) hashh[i] = pre[i];
for(int i = ;i <= m;i++)
{
int x,y;
cin >> x >> y;
v[x].push_back(y);
v[y].push_back(x);
hashh[x] += pre[y];
hashh[y] += pre[x];
}
ans[] = ;
visc[] = ;
dfs();
for(int i=;i<=n;i++)
{
if(!ans[i])
{
cout << "NO" << endl;
return ;
}
}
cout << "YES" << endl;
for(int i = ;i <= n;i++) cout << ans[i] << " ";
cout << endl;
return ;
}
Codeforces_794的更多相关文章
随机推荐
- C Primer Plus(二)
重读C Primer Plus ,查漏补缺 重读C Primer Plus,记录遗漏的.未掌握的.不清楚的知识点 分支和跳转 1.ctype.h头文件里包含了一些列用于字符判断的函数,包括判断数字.大 ...
- 基于GPS北斗卫星授时系统和NTP网络授时服务器的设计与开发
基于GPS北斗卫星授时系统和NTP网络授时服务器的设计与开发 安徽京准科技提供@请勿转载@@ 更多资料请参考——ahjzsz.com 天文观测设备对于控制系统的时间准确度有严格要求.为此,采用搭建高精 ...
- @Configuration结合@Bean实现对象的配置
@Configuration结合@Bean实现对象的配置 前提:最近项目中需要做支付接口,支付宝以及微信支付,本文并不介绍如何写支付接口,而是通过这个示例讲解配置应该怎么写,项目中使用的是Kotlin ...
- ACM北大暑期课培训第三天
今天讲的内容是深搜和广搜 深搜(DFS) 从起点出发,走过的点要做标记,发现有没走过的点,就随意挑一个往前走,走不 了就回退,此种路径搜索策略就称为“深度优先搜索”,简称“深搜”. bool Dfs( ...
- CMS总结
过程 初始标记 从roots(例如:thread stack引用的对象,static对象),新生代对象,标记直接引用的老年代对象. 并发标记 利用初始标记阶段标记的对象,递归标记整个老年代. 该阶段与 ...
- .NET Core 3 WPF MVVM框架 Prism系列之事件聚合器
本文将介绍如何在.NET Core3环境下使用MVVM框架Prism的使用事件聚合器实现模块间的通信 一.事件聚合器 在上一篇 .NET Core 3 WPF MVVM框架 Prism系列之模块化 ...
- 【Linux】---Linux系统下各种常用命令总结
在Linux系统下,“万物皆文件”,之所以强调在强调这个概念,是因为很多人已经习惯了win系统下找找点点得那种方式和思维,因此总是会觉得linux系统下很多指令既复杂又难记.其实都是一样得东西,只是w ...
- [bzoj2120] [洛谷P1903] 数颜色
Description 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜 ...
- nginx default setting
# You may add here your# server {# ...# }# statements for each of your virtual hosts to this file ...
- 龙芯 3B1500 Fedora28 安装笔记
版权声明:原创文章,未经博主允许不得转载 龙芯 3A4000 已经发布,十年前的 3B1500 早就落伍了.但我还是打算把它作为寒假刷 ACM 题的主力机 并将此当作年后收到 4000 的预习. 龙芯 ...