(叹气.jpg)

B.Beautiful Now

题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6351

题意:给一串长度为m的数字,k次任意交换其中两个,问可得到的最小数和最大数。

分析:当k>=m-1时直接可以将这m个数排序,直接得到最大或最小。当k<m-1时,枚举每个数所在位置的全排列,与原数位排列比较求出交换次数,在这个过程中求min和max即可。

此外,这个题可以直接暴搜。

#include<bits/stdc++.h>
using namespace std;
const int maxn=;
char n[maxn];
int k,len,minnum,maxnum;
int c[maxn],p[maxn],q[maxn],p1[maxn];
void init(){
memset(c,,sizeof(c));memset(p,,sizeof(p));memset(p1,,sizeof(p1));
len=strlen(n);
for (int i=;i<len;i++){
int xx=n[i]-'';
c[i]=xx;p[xx]++;p1[xx]++;
}
}
void check(){
if (c[p[]]==) return ;
for (int i=;i<len;i++) q[i]=p[i]; //q数组内保存全排列后的位置
int sum=,k1=;
for (int i=;i<len;i++){
sum=sum*+c[p[i]];
if (q[i]!=i){
for (int j=i+;j<len;j++){
if (q[j]==i){
swap(q[i],q[j]);
k1++;
if (k1>k) return ;
break;
}
}
}
}
if (k1>k) return ;
minnum=min(minnum,sum);
maxnum=max(maxnum,sum);
}
int main(){
ios::sync_with_stdio(false);
cin.tie();cout.tie();
int t;
cin >> t;
while (t--){
cin >> n >> k;
init();
if (k>=len-){
for (int i=;i<=;i++){
if (p[i]!=){
cout << i;
p[i]--;
break;
}
}
for (int i=;i<=;i++){
while (p[i]!=){
cout << i;
p[i]--;
}
}
cout << " ";
for (int i=;i>=;i--){
while (p1[i]!=){
cout << i;
p1[i]--;
}
}
cout << endl;
continue;
}
memset(p,,sizeof(p));
for (int i=;i<len;i++) p[i]=i;
minnum=2e9,maxnum=-;
do{
check();
}while(next_permutation(p,p+len));
cout << minnum << " " << maxnum << endl;
}
return ;
}

hdoj6351

E.Everything Has Changed

题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6354

题意:求大圆被若干个两两不想交圆切割后外周长。

分析:rt。

 #include<bits/stdc++.h>
using namespace std;
const double eps=1e-;
const double pi=acos(-1.0);
double R;
double _pow(double x){
return x*x;
}
double check(double x,double y,double r){
double d=sqrt(_pow(x)+_pow(y));
if (d-(r+R)>=eps) return 0.0; //相离
if (fabs(d+r-R)<=eps) return *pi*r; //内切
if (d+r-R<-eps) return 0.0; //内含
double t1=acos((_pow(r)+_pow(d)-_pow(R))/(2.0*r*d))*; //相交
double t2=acos((_pow(R)+_pow(d)-_pow(r))/(2.0*R*d))*;
double s1=t1*r;
double s2=t2*R;
return s1-s2;
}
int main(){
ios::sync_with_stdio(false);
cin.tie();cout.tie();
int t,m;
double x,y,r;
cin >> t;
while (t--){
cin >> m >> R;
double ans=pi*2.0*R;
while (m--){
cin >> x >> y >> r;
ans=ans+check(x,y,r);
}
printf("%.10f\n",ans);
}
return ;
}

hdoj6354

G.Glad You Came

题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6356

题意:随机数生成,m次操作区间内修改最小值,问最后n个数的异或和。

分析:线段树维护区间最小值即可,区间修改到点,点查询。

 #include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+;
typedef unsigned int ui;
typedef long long ll;
struct point{
int l,r;
int num;
}tree[maxn*];
ui x,y,z;
int n,m,X,Y,Z;
ui RNG61(){
ui w;
x=x^(x<<);
x=x^(x>>);
x=x^(x<<);
x=x^(x>>);
w=x^(y^z);x=y;y=z;z=w;
return z;
}
void Build(int root,int l,int r){
tree[root].num=;
tree[root].l=l;tree[root].r=r;
if (tree[root].l==tree[root].r){
return ;
}
int mid=(tree[root].l+tree[root].r)/;
Build(root<<,l,mid);
Build(root<<|,mid+,r);
}
void Update(int root,int l,int r,int v){
if (tree[root].num>v){
return ;
}
if (tree[root].l==tree[root].r){
tree[root].num=v;
return ;
}
int mid=(tree[root].l+tree[root].r)/;
if (l<=mid) Update(root<<,l,r,v);
if (mid<r) Update(root<<|,l,r,v);
tree[root].num=min(tree[root<<].num,tree[root<<|].num);
}
int Query(int root,int xx){
if (tree[root].l==tree[root].r){
return tree[root].num;
}
int mid=(tree[root].l+tree[root].r)/;
if (xx<=mid) return Query(root<<,xx);
else return Query(root<<|,xx);
}
int main(){
ios::sync_with_stdio(false);
cin.tie();cout.tie();
int t;
cin >> t;
while (t--){
cin >> n >> m >> X >> Y >> Z;
x=X;y=Y;z=Z;
Build(,,n);
for (int i=;i<=m;i++){
int l=RNG61()%n+,r=RNG61()%n+,v=RNG61()%(<<);
if (l>r) swap(l,r);
Update(,l,r,v);
}
ll ans=;
for (int i=;i<=n;i++){
int xx=Query(,i);
//cout << xx << endl;
ans^=1ll*i*xx;
}
cout << ans << endl;
}
return ;
}

hdoj6356

2018 Multi-University Training Contest 5的更多相关文章

  1. 2018 Nowcoder Multi-University Training Contest 2

    目录 Contest Info Solutions A. run D. monrey G. transform H. travel I. car J. farm Contest Info Practi ...

  2. 2018 Nowcoder Multi-University Training Contest 1

    Practice Link J. Different Integers 题意: 给出\(n\)个数,每次询问\((l_i, r_i)\),表示\(a_1, \cdots, a_i, a_j, \cdo ...

  3. 2018 Nowcoder Multi-University Training Contest 5

    Practice Link A. gpa 题意: 有\(n\)门课程,每门课程的学分为\(s_i\),绩点为\(c_i\),要求最多删除\(k\)门课程,使得gpa最高. gpa计算方式如下: \[ ...

  4. 2018 Nowcoder Multi-University Training Contest 10

    Practice Link J. Rikka with Nickname 题意: 给出\(n\)个字符串,要求依次合并两个串\(s, t\),满足将\(t\)合并到\(s\)中变成\(r\),使得\( ...

  5. HDU 2018 Multi-University Training Contest 3 Problem A. Ascending Rating 【单调队列优化】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6319 Problem A. Ascending Rating Time Limit: 10000/500 ...

  6. 2018 Multi-University Training Contest 2

    题目链接:2018 Multi-University Training Contest 2 6318 Swaps and Inversions 题意:sum=x*逆序个数+交换次数*y,使sum最小 ...

  7. 2018 Multi-University Training Contest 1

    比赛链接:2018 Multi-University Training Contest 1 6301 Distinct Values 题意:输出一个长度为n的序列,要求满足m个区间的数都不相同,并且字 ...

  8. hdu 6301 Distinct Values (2018 Multi-University Training Contest 1 1004)

    Distinct Values Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  9. 2018 Multi-University Training Contest 4 Problem J. Let Sudoku Rotate 【DFS+剪枝+矩阵旋转】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6341 Problem J. Let Sudoku Rotate Time Limit: 2000/100 ...

  10. 2018 Multi-University Training Contest 4 Problem K. Expression in Memories 【模拟】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6342 Problem K. Expression in Memories Time Limit: 200 ...

随机推荐

  1. Android音频系统之AudioFlinger(三)

    http://blog.csdn.net/xuesen_lin/article/details/8805091 1.1.1 PlaybackThread的循环主体 当一个PlaybackThread进 ...

  2. Apache Prefork、Worker和Event三种MPM分析

    三种MPM介绍 Apache 2.X  支持插入式并行处理模块,称为多路处理模块(MPM).在编译apache时必须选择也只能选择一个MPM,对类UNIX系统,有几个不同的MPM可供选择,它们会影响到 ...

  3. Python之内置函数一

    一:绝对值,abs i = abs(-123) print(i) # 打印结果 123 二:判断真假,all,与any 对于all # 每个元素都为真,才是True # 假,0,None," ...

  4. 783. Minimum Distance Between BST Node

    方法一,非递归方法,中序遍历 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *l ...

  5. 674. Longest Continuous Increasing Subsequence

    static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }(); class Solution { publ ...

  6. vue 开发系列(一) vue 开发环境搭建

    概要 目前前端开发技术越来越像后台开发了,有一站式的解决方案. 1.JS包的依赖管理像MAVEN. 2.JS代码编译打包. 3.组件式的开发. vue 是一个前端的一站式的前端解决方案,从项目的初始化 ...

  7. openstack网络基本概念(转)

    OpenStack的Neutron能够管理OpenStack环境中的虚拟 网络基础设施(VNI).和物理网络基础设施(PNI). OpenStack的Neutron同意租户创建虚拟网络拓扑结构.包括的 ...

  8. jQuery length 和 size()区别

    jQuery length和size()区别总结如下: 1.length是属性,size()是方法. 2.如果你只是想获取元素的个数,两者效果一样既 $("img").length ...

  9. AngularJS封装UEditor

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  10. JavaBase

    第一章: Java之父:詹姆斯.高斯林:1995年5月推出Java: java分为  java se : 基础版本(标准版) Java  EE  : 企业级开发   ME:嵌入式开发(已被安卓替代) ...