(叹气.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. Java第15章笔记

    字符串的概述 1.什么是字符串:零个或多个字符组成的有限序列 2.如何使用字符串:(使用字符串分为两步)          1)定义并初始化字符串          2)使用字符,对字符串进行一些处理 ...

  2. MySQL基准测试--innodb_buffer_pool_instances

    http://blog.chinaunix.net/uid-26896862-id-3345441.html 目的 根据现有硬件环境下,测试MySQL单实例下,在数据量小于innodb_buffer_ ...

  3. 使用unidac 在linux 上无驱动直接访问MS SQL SERVER

    随着delphi 10.2 开始了对Linux 的重新支持.devart 也迅速的发布了unidac 7.0, 最大的特性就是支持linux和MongoDB. 并有了其他更新: In this rel ...

  4. pycharm显示Unresolved reference

    状态:已解决 原因:不知道怎么表达 解决方法:重装django,,,,,,,,,,,,,,,,,,,

  5. 2018.10.26 洛谷P4551 最长异或路径(01trie)

    传送门 直接把每个点到根节点的异或距离插入01trie. 然后枚举每个点在01trie上匹配来更新答案就行了. 代码: #include<iostream> #include<cst ...

  6. Spring boot 集成Dubbo简单版,准备工作,

    一.GitHub上找寻Dubbo资源 阿里巴巴在其GitHub上已经写好一个Github案例所以我们只要进入其Git上就可以看到和clone这个项目 二.阿里巴巴GitHub使用 https://gi ...

  7. IntelliJ IDEA 2017版 编译器使用学习笔记(六) (图文详尽版);IDE快捷键使用

    一.alter + enter使用 应用于很对场景不知道如何操作代码时使用          1.场景一:自动创建函数         调用一个没有的函数的时候,alter+enter,弹出自动创建函 ...

  8. java学习2打架代码编写

    在同一个包中的Player类 package work; public class Player { private String name; private int hp; private int ...

  9. Java实现FTP批量大文件上传下载篇1

    本文介绍了在Java中,如何使用Java现有的可用的库来编写FTP客户端代码,并开发成Applet控件,做成基于Web的批量.大文件的上传下载控件.文章在比较了一系列FTP客户库的基础上,就其中一个比 ...

  10. MFC模块状态(一)

    先看一个例子: 1.创建一个动态链接到MFC DLL的规则DLL,其内部包含一个对话框资源.指定该对话框ID如下:              #define IDD_DLL_DIALOG  2000 ...