NOIP2013TGsolution
Posted Melacau----论一个蒟蒻的自我修养
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NOIP2013TGsolution相关的知识,希望对你有一定的参考价值。
D1T1:转圈游戏(circle)
题意:看题目。。
解题思路:快速幂求m*10^kmodn即可。
#include<stdio.h> #define ll long long #define For(i,a,b) for(int i=a; i<=b; i++) #define Ford(i,a,b) for(int i=a; i>=b; i--) #define File(fn) freopen(fn".in","r",stdin);freopen(fn".out","w",stdout); int n,m,k,x; inline int in(){ int x=0,f=1; char ch=getchar(); while(ch<‘0‘||ch>‘9‘) f=ch==‘-‘?-1:1,ch=getchar(); while(ch>=‘0‘&&ch<=‘9‘) x=x*10+ch-‘0‘,ch=getchar(); return x*f; } inline void print(int x,char ch){ if (!x){ putchar(‘0‘); putchar(ch); return; } if (x<0){ putchar(‘-‘); x*=-1; } char num[10]; short cnt=0; while(x) num[++cnt]=x%10+‘0‘,x/=10; while(cnt) putchar(num[cnt--]); putchar(ch); } inline ll ksm(int a,int k){ if (!k) return 1; if (!(k^1)) return a; ll t=ksm(a,k>>1)%n; t*=t;t%=n; if (k&1) t*=a; t%=n; return t; } int main(){ n=in(),m=in(),k=in(),x=in(); print((ksm(10,k)*m%n+x)%n,‘\n‘); }
D1T2:火柴排队
题意:将一个数组中元素进行几次交换后使得这个数组的大小顺序与另一个数组相同。
解题思路:离散后排序求逆序对数。
#include<stdio.h> #include<algorithm> #define ll long long #define For(i,a,b) for(int i=a; i<=b; i++) #define Ford(i,a,b) for(int i=a; i>=b; i--) #define File(fn) freopen(fn".in","r",stdin);freopen(fn".out","w",stdout); #define mod 99999997 using namespace std; struct zxy{ int num,no; }a[100001],b[100001]; int n,ans=0,c[100001],BIT[100001]; inline int in(){ int x=0,f=1; char ch=getchar(); while(ch<‘0‘||ch>‘9‘) f=ch==‘-‘?-1:1,ch=getchar(); while(ch>=‘0‘&&ch<=‘9‘) x=x*10+ch-‘0‘,ch=getchar(); return x*f; } inline void print(int x,char ch){ if (!x){ putchar(‘0‘); putchar(ch); return; } if (x<0){ putchar(‘-‘); x*=-1; } char num[10]; short cnt=0; while(x) num[++cnt]=x%10+‘0‘,x/=10; while(cnt) putchar(num[cnt--]); putchar(ch); } bool cmp(zxy a,zxy b){ return a.num<b.num; } void init(){ n=in(); For(i,1,n) a[i].num=in(),a[i].no=i; For(i,1,n) b[i].num=in(),b[i].no=i; sort(a+1,a+n+1,cmp); sort(b+1,b+n+1,cmp); For(i,1,n) c[b[i].no]=a[i].no; } inline int lowbit(int k){ return k&(-k); } inline void update(int x,int ad){ while(x<=n){ BIT[x]+=ad; x+=lowbit(x); } } inline int query(int x){ int sum=0; while(x){ sum+=BIT[x]; x-=lowbit(x); } return sum; } void solve(){ For(i,1,n){ update(c[i],1); ans+=(i-query(c[i])); ans%=mod; } print(ans,‘\n‘); } int main(){ init(); solve(); return 0; }
以上是关于NOIP2013TGsolution的主要内容,如果未能解决你的问题,请参考以下文章