好恶心的题

#include <cstdio>
#include <string.h>
#include <algorithm>
#include <cmath>
#include <set>
using namespace std;
typedef __int64 ll;
struct point{
ll word,priori;
}P[];
char T[][]={ {"Add"},{"Close"},{"Chat"},{"Rotate"},{"Prior"},{"Choose"},{"Top"},{"Untop"}};
int sz,op,always=-;
void per(int x){
point ttt = P[x];
for(int i=x; i>; --i)
P[i]=P[i-];
P[]=ttt;
}
void last(int x){
point ttt= P[x];
for(int i=x; i<sz-; ++i)
P[i]=P[i+];
P[sz-]=ttt;
}
void solve0(){
ll id;
scanf("%I64d",&id);
int loc=-;
for(int i=; i<sz; ++i)
if( P[i].priori == id ){
loc=i; break;
}
if( loc == - ){
P[sz].word=;
P[sz].priori=id;
sz++;
printf("Operation #%d: success.\n",op++);
}else{
printf("Operation #%d: same priority.\n",op++);
}
}
void solve1(){
ll id;
scanf("%I64d",&id);
int loc=-;
for(int i=; i<sz; ++i)
if(P[i].priori==id){
loc=i; break;
}
if(loc==-){
printf("Operation #%d: invalid priority.\n",op++);
}else {
printf("Operation #%d: close %I64d with %I64d.\n",op++,P[loc].priori,P[loc].word);
if(P[loc].priori==always) always=-;
for(int i=loc+; i<sz; ++i)
P[i-]=P[i];
sz--;
}
}
void solve2(){
ll id;
scanf("%I64d",&id);
if(sz==){ ///*****************************
printf("Operation #%d: empty.\n",op++);
}else{
if(always!=-){
for(int i=; i<sz; ++i)
if(P[i].priori==always){
P[i].word+=id; break;
}
}else P[].word+= id;
printf("Operation #%d: success.\n",op++);
}
}
void solve3(){
ll id;
scanf("%I64d",&id);
id--;
if( id< || id >= sz){
printf("Operation #%d: out of range.\n",op++);
}else{
point ttt=P[id];
for(int i=id; i>; --i)
P[i]=P[i-];
P[]=ttt;
printf("Operation #%d: success.\n",op++);
}
}
void solve4(){
if(sz==){
printf("Operation #%d: empty.\n",op++);
}else{
int loc=;
ll hi=-;
for(int i=; i<sz; ++i)
if(P[i].priori>hi) hi=P[i].priori,loc=i;
point ttt=P[loc];
for(int i=loc; i>; --i)
P[i]=P[i-];
P[]=ttt;
printf("Operation #%d: success.\n",op++);
}
}
void solve5(){
ll id;
scanf("%I64d",&id);
int loc=-;
for(int i=; i<sz; ++i)
if(P[i].priori==id){
loc=i; break;
}
if(loc==-){
printf("Operation #%d: invalid priority.\n",op++); return;
}
point ttt=P[ loc ];
for(int i=loc; i>; --i)
P[i]=P[i-];
P[]=ttt;
printf("Operation #%d: success.\n",op++);
}
void solve6(){
ll id;
scanf("%I64d",&id);
int loc=-;
for(int i=; i<sz; ++i)
if(P[i].priori==id){
loc=i; break;
}
if(loc==-){
printf("Operation #%d: invalid priority.\n",op++); return;
}
always=id;
printf("Operation #%d: success.\n",op++);
}
void solve7(){
if(always==-){
printf("Operation #%d: no such person.\n",op++); return;
}
always=-;
printf("Operation #%d: success.\n",op++);
}
int main(){ int cas;
scanf("%d",&cas);
char str[];
for(int cc= ; cc<=cas; ++cc){
int n;
scanf("%d",&n);
always=-;
sz=;op=;
for(int i=; i<n; ++i){
scanf("%s",str);
if(strcmp(str,T[])==) solve0();
else if(strcmp(str,T[])==) solve1();
else if(strcmp(str,T[])==) solve2();
else if(strcmp(str,T[])==) solve3();
else if(strcmp(str,T[])==) solve4();
else if(strcmp(str,T[])==) solve5();
else if(strcmp(str,T[])==) solve6();
else if(strcmp(str,T[])==) solve7();
// printf(".\n");
}
if(always!=-){
for(int i=; i<sz; ++i)
if(P[i].priori==always&&P[i].word!=){
printf("Bye %I64d: %I64d\n",P[i].priori,P[i].word); break;
}
}
for(int i=; i<sz; ++i)
if(P[i].priori!=always&&P[i].word!=){
printf("Bye %I64d: %I64d\n",P[i].priori,P[i].word);
} }
return ;
}

hdu 5017的更多相关文章

  1. hdu 5017 模拟退火算法

    hdu 5017 http://blog.csdn.net/mypsq/article/details/39340601 #include <cstdio> #include <cs ...

  2. hdu 5017 模拟退火/三分求椭圆上离圆心最近的点的距离

    http://acm.hdu.edu.cn/showproblem.php?pid=5017 求椭圆上离圆心最近的点的距离. 模拟退火和三分套三分都能解决 #include <cstdio> ...

  3. hdu 5017 模拟退火

    题意:给出椭球面的立体解析式,要求椭球面上距离原点最近的点的距离 sol:这题要想推公式就

  4. HDU 5017 Ellipsoid 模拟退火第一题

    为了补这题,特意学了下模拟退火算法,感觉算法本身不是很难,就是可能降温系数,步长等参数不好设置. 具体学习可以参见: http://www.cnblogs.com/heaad/archive/2010 ...

  5. 2014 ACM/ICPC Asia Regional Xi'an Online(HDU 5007 ~ HDU 5017)

    题目链接 A题:(字符串查找,水题) 题意 :输入字符串,如果字符串中包含“ Apple”, “iPhone”, “iPod”, “iPad” 就输出 “MAI MAI MAI!”,如果出现 “Son ...

  6. hdu 5017 Ellipsoid(西安网络赛 1011)

    Ellipsoid Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total ...

  7. HDU - 5017 Ellipsoid(模拟退火法)

    Problem Description Given a 3-dimension ellipsoid(椭球面) your task is to find the minimal distance bet ...

  8. HDU - 5017 Ellipsoid(模拟退火)

    题意 给一个三维椭球面,求球面上距离原点最近的点.输出这个距离. 题解 模拟退火. 把\(z = f(x, y)\)函数写出来,这样通过随机抖动\(x\)和\(y\)坐标就能求出\(z\). 代码 / ...

  9. NOIp2018停课刷题记录

    Preface 老叶说了高中停课但是初中不停的消息后我就为争取民主献出一份力量 其实就是和老师申请了下让我们HW的三个人听课结果真停了 那么还是珍惜这次机会好好提升下自己吧不然就\(AFO\)了 Li ...

随机推荐

  1. Map的key不变,value相加

    判断map中是否含有某个key,如包含则结果value相加,如不包含则新增. 直接上demo吧: package javademo; import java.util.HashMap; import ...

  2. linux下jdk,tomcat的安装

    一.安装jdk 1.jdk下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.ht ...

  3. php数据访问之查询关键字

    本文根据数据库中的car表做一个汽车查询页面,巩固php查询关键字操作,感兴趣的小伙伴们可以参考一下   本文实例为大家分享了php查询操作的实现代码,供大家参考,具体内容如下 一.一个关键字查询 主 ...

  4. LeetCode——Missing Number

    Description: Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one t ...

  5. LeetCode——Valid Anagram

    Description: Given two strings s and t, write a function to determine if t is an anagram of s. For e ...

  6. mysql 之 group by 性能优化 查询与统计分离

    背景介绍 记录共128W条!   SELECT cpe_id, COUNT(*) restarts FROM business_log WHERE operate_time>='2012-12- ...

  7. loadrunner多场景的串行执行以及定时执行

    方法一: 既然是脚本串行执行,那在场景设计中必然是要用多个脚本,要注意的是需要将Scenario Schedule中的Schedule by设置为Group的模式.然后按实际需要依次设置每个脚本的Sc ...

  8. 删除 Linux /tmp 目录下的临时文件

    使用 tmpreaper How to install and use tmpreaper How to Remove Files Older than N days using tmpreaper ...

  9. linux 分卷压缩和合并

      压缩: 可以用任何方式压缩,如tar -czf 分卷: split [OPTION]... [INPUT [PREFIX]]    -b 代表分卷大小, 后面可以加单位,如G,M,K.   如果不 ...

  10. 禁止输入emoji表情

    三个文本框textField UITextView都要禁止苹果自带emoji 后来发现是原来写的方法不能覆盖所有的表情,新增的表情过滤不掉,只好再加了一个方法 http://www.jianshu.c ...