(叹气.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应用所需权限(uses-permission)

    http://www.tuicool.com/articles/zq2meq MainActivity如下: package cc.testusespermission; import android ...

  2. python的数字图像处理学习(2)

    图像的重定义大小,图像的缩扩,图像的旋转: from skimage import transform,data import matplotlib.pyplot as plt img = data. ...

  3. trunc()用法和add_months()

    TRUNC函数用于对值进行截断. 用法有两种:TRUNC(NUMBER)表示截断数字,TRUNC(date)表示截断日期. (1)截断数字: 格式:TRUNC(n1,n2),n1表示被截断的数字,n2 ...

  4. 2019.01.02 bzoj2467: [中山市选2010]生成树(矩阵树定理)

    传送门 矩阵树定理模板题. 题意简述:自己看题面吧太简单懒得写了 直接构建出这4n4n4n个点然后按照题面连边之后跑矩阵树即可. 代码: #include<bits/stdc++.h> # ...

  5. 2018.11.09 洛谷P1110 [ZJOI2007]报表统计(multiset)

    传送门 sb题. 直接用两个multisetmultisetmultiset维护相邻两个数的差值和所有数的前驱后继. 插入一个数的时候更新一下就行了. 代码: #include<bits/std ...

  6. Java日期时间使用总结[转载]

    Java日期时间使用总结   一.Java中的日期概述   日期在Java中是一块非常复杂的内容,对于一个日期在不同的语言国别环境中,日期的国际化,日期和时间之间的转换,日期的加减运算,日期的展示格式 ...

  7. SQL2008 2机镜像

    清除设置 //删除端点 declare @sql varchar() declare @mirrName varchar() select @mirrName=name from sys.databa ...

  8. 音频管理器(AudioManager)

    MainActivity.java package com.wwj.serviceandboardcast;   import android.app.Activity; import android ...

  9. Arria10收发器校正

    收发器的模拟和数字部分都需要校正来补偿过程,电压和温度(PTV)带来的变化. Arria10使用PreSICE来执行校正过程.   校正主要包括上电校正和用户校正两方面: 上电校正在器件上电时自动执行 ...

  10. silverlight 定时器 System.Windows.Threading.DispatcherTimer

    声明 System.Windows.Threading.DispatcherTimer _MessageControler; //刷新 _MessageControler = new System.W ...