博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codeforces gym-101078
阅读量:5092 次
发布时间:2019-06-13

本文共 5192 字,大约阅读时间需要 17 分钟。

题目链接:

http://codeforces.com/gym/101078

 

A:

 

#include 
#include
#include
#include
#include
#include
#include
#include
using namespace std; #define For(i,j,n) for(int i=j;i<=n;i++)#define mst(ss,b) memset(ss,b,sizeof(ss));#define ll long long;typedef long long LL; template
void read(T&num) { char CH; bool F=false; for(CH=getchar();CH<'0'||CH>'9';F= CH=='-',CH=getchar()); for(num=0;CH>='0'&&CH<='9';num=num*10+CH-'0',CH=getchar()); F && (num=-num);}int stk[70], tp;template
inline void print(T p) { if(!p) { puts("0"); return; } while(p) stk[++ tp] = p%10, p/=10; while(tp) putchar(stk[tp--] + '0'); putchar('\n');} const LL mod=1e9+7;const double PI=acos(-1.0);const LL inf=1e18;const int N=1e6+2000;const int maxn=1e5+5;const double eps=1e-8;int a[maxn],p[maxn];int main(){ int t; read(t); while(t--) { int n; read(n); For(i,1,n) { read(a[i]); p[a[i]]=i; } int st=0,mmax=0,x; For(i,1,n) { read(x); mmax=max(mmax,p[x]); if(i==mmax) { printf("%d-%d ",st+1,i); st=i; } } printf("\n"); } return 0;}/*题意:给两个[1,n]的排列,现在要给分成几部分,每一部分里面都是数字相同,现在要怎么分;思路:水题啦啦;*/

  

B:

 

C:

 

D:

 

#include 
#include
#include
#include
#include
#include
#include
#include
using namespace std; #define For(i,j,n) for(int i=j;i<=n;i++)#define mst(ss,b) memset(ss,b,sizeof(ss));#define ll long long;typedef long long LL; template
void read(T&num) { char CH; bool F=false; for(CH=getchar();CH<'0'||CH>'9';F= CH=='-',CH=getchar()); for(num=0;CH>='0'&&CH<='9';num=num*10+CH-'0',CH=getchar()); F && (num=-num);}int stk[70], tp;template
inline void print(T p) { if(!p) { puts("0"); return; } while(p) stk[++ tp] = p%10, p/=10; while(tp) putchar(stk[tp--] + '0'); putchar('\n');} const LL mod=1e9+7;const double PI=acos(-1.0);const LL inf=1e18;const int N=1e6+2000;const int maxn=5e3+10;const double eps=1e-8;int main(){ int t; read(t); while(t--) { LL n; read(n); if(n==0){cout<<"0\n";continue;} LL ans=n-n/2; for(int i=1;i<=3;i++) { if((n+i-1)%3==0) { LL t=(n+i-1)/3; if(t%2==0)t++; ans=ans+(n-t)/2+1; break; } } print(ans); } return 0;}/*题意:每个数m和2*m之间都有一根绳,每个奇数m和3*m+1之间有一根绳,现在要把[1,n]拿走,需要剪断多少根绳;思路:这个就是个水题,把2*m>n的减去,把3*m+1>n的剪去就是答案了;*/

  

E:

 

F:

 

G:

 

H:

 

I:

 

#include 
#include
#include
#include
#include
#include
#include
#include
using namespace std; #define For(i,j,n) for(int i=j;i<=n;i++)#define mst(ss,b) memset(ss,b,sizeof(ss));#define ll long long;typedef long long LL; template
void read(T&num) { char CH; bool F=false; for(CH=getchar();CH<'0'||CH>'9';F= CH=='-',CH=getchar()); for(num=0;CH>='0'&&CH<='9';num=num*10+CH-'0',CH=getchar()); F && (num=-num);}int stk[70], tp;template
inline void print(T p) { if(!p) { puts("0"); return; } while(p) stk[++ tp] = p%10, p/=10; while(tp) putchar(stk[tp--] + '0'); putchar('\n');} const LL mod=1e9+7;const double PI=acos(-1.0);const LL inf=1e18;const int N=1e6+2000;const int maxn=1e6+5;const double eps=1e-8;char s[maxn];int p,sz;struct node{ char ch; int l,r;}po[N];void movele(){ if(p==0)return ; p=po[p].l;}void moveri(){ if(po[p].r==0)return ; p=po[p].r;}void insert(char &t){ sz++; po[sz].ch=t; po[sz].l=p; po[sz].r=po[p].r; po[p].r=sz; if(po[sz].r)po[po[sz].r].l=sz; p=sz;}void dele(){ if(p==0)return ; if(po[p].r) { int nex=po[p].r; int pre=po[p].l; po[nex].l=pre; po[pre].r=nex; p=pre; } else { int pre=po[p].l; po[pre].r=0; p=pre; }}void out(){ p=po[0].r; while(p) { printf("%c",po[p].ch); p=po[p].r; } printf("\n");}int main(){ int t; read(t); while(t--) { gets(s); int len=strlen(s); sz=0;p=sz; po[0].l=0;po[0].r=0; for(int i=0;i
')moveri(); else if(s[i]=='-')dele(); else insert(s[i]); } out(); } return 0;}/*题意:模拟几项操作,最后输出密码,其中
<表示光标左移一位,>
表示右移一位,-表示删除一位,其他的字符就表示插入一个字符,这些操作都是在可以操作的情况下才执行;思路:用一个双向链表模拟一下,我不太会写链表,就用结构体代替啦;*/

  

J:

 

K:

 

L:

#include 
#include
#include
#include
#include
#include
#include
#include
using namespace std; #define For(i,j,n) for(int i=j;i<=n;i++)#define mst(ss,b) memset(ss,b,sizeof(ss));#define ll long long;typedef long long LL; template
void read(T&num) { char CH; bool F=false; for(CH=getchar();CH<'0'||CH>'9';F= CH=='-',CH=getchar()); for(num=0;CH>='0'&&CH<='9';num=num*10+CH-'0',CH=getchar()); F && (num=-num);}int stk[70], tp;template
inline void print(T p) { if(!p) { puts("0"); return; } while(p) stk[++ tp] = p%10, p/=10; while(tp) putchar(stk[tp--] + '0'); putchar('\n');} const LL mod=1e9+7;const double PI=acos(-1.0);const LL inf=1e18;const int N=1e6+2000;const int maxn=5e3+10;const double eps=1e-8;char s[maxn];int main(){ scanf("%s",s); int len=strlen(s); double ans=0; for(int i=len-1;i>=0;i--) { if(s[i]=='0') { for(int j=0;j<=i;j++) { if(s[j]=='1') { swap(s[i],s[j]); ans=ans+sqrt(i-j); break; } } } } printf("%.12lf\n",ans); return 0;}/*题意:给出一个01串,让把0都换到前边来,每次交换位置i和j的花费为sqrt(i-j);问最小的花费是多少;思路:假设现在位置i

  

  

转载于:https://www.cnblogs.com/zhangchengc919/p/5853657.html

你可能感兴趣的文章
用户权限命令(chmod,chown,umask,lsattr/chattr)
查看>>
Maven详解
查看>>
Linux系统中‘dmesg’命令处理故障和收集系统信息的7种用法
查看>>
数据结构 : Hash Table [II]
查看>>
面向对象的小demo
查看>>
获取地址栏参数
查看>>
java之hibernate之helloworld
查看>>
微服务之初了解(一)
查看>>
Iterator invalidation(迭代器失效)
查看>>
GDOI DAY1游记
查看>>
OpenGL(三)MFC中应用OpenGL的两个类
查看>>
小白眼中的git操作
查看>>
小米笔试题--数组移动
查看>>
php gd实现简单图片验证码与图片背景文字水印
查看>>
仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'XXX'中的标识列指定显式值。...
查看>>
winform中的小技巧【自用】
查看>>
winform DataGridView的虚模式填充,CellValueNeeded事件的触发条件
查看>>
java成神之——集合框架之ArrayList,Lists,Sets
查看>>
python编程快速上手
查看>>
实验五:编写、调试具有多个段的程序
查看>>