【老李的模拟赛】【#4】【2014-08-09】

来源:互联网 发布:linux上telnet 编辑:程序博客网 时间:2024/06/05 03:04

水题一坨~

数据+题目:http://pan.baidu.com/s/1gdCFjN1

T1 求 \sum_i^a i^b %10000 用循环节完事AC

#include<cstdio>#include<iostream>#include<algorithm>using namespace std;typedef long long LL;const LL MOD=10000;LL power(LL x,LL k){LL ans=1;for(;k;k>>=1){if(k&1)ans=(ans*x)%MOD;x=(x*x)%MOD;}return ans%MOD;}int n;LL a,b;LL ans=0;int main(){freopen("sum.in","r",stdin);freopen("sum.out","w",stdout);scanf("%d",&n);while(n--){ans=0;scanf("%I64d%I64d",&a,&b);if(a<=10000){for(LL i=1;i<=a;i++){ans=(ans+power(i,b))%MOD;}cout<<ans<<endl;continue;}if(b==1){cout<<(a*(a+1)/2)%MOD<<endl;continue;}if(b%4==0)ans=(ans+(a/10000)*3000)%MOD;else if(b%4==2)ans=(ans+(a/10000)*5000)%MOD;for(LL i=a/10000*10000;i<=a;i++){ans=(ans+power(i,b))%MOD;}cout<<ans<<endl;}return 0;}


T2 给定a,b的数组求前n小的a[i]+b[j] 堆乱搞AC

#include<cstdio>#include<iostream>#include<algorithm>#include<queue>#include<set>using namespace std;const int maxn=1e5+10;struct data{int val,x,y;bool operator<(const data &a)const{return val>a.val;}};priority_queue<data>q;int n;int a[maxn];int b[maxn];set<pair<int,int> >s;int main(){freopen("sequence.in","r",stdin);freopen("sequence.out","w",stdout);scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]);for(int i=1;i<=n;i++)scanf("%d",&b[i]);q.push((data){a[1]+b[1],1,1});while(n--){data top=q.top();q.pop();printf("%d%c",top.val," \n"[n==0]);if(!s.count(pair<int,int>(top.x+1,top.y)))q.push((data){a[top.x+1]+b[top.y],top.x+1,top.y}),s.insert(pair<int,int>(top.x+1,top.y));if(!s.count(pair<int,int>(top.x,top.y+1)))q.push((data){a[top.x]+b[top.y+1],top.x,top.y+1}),s.insert(pair<int,int>(top.x,top.y+1));;}return 0;}


T3 水题暴力直接过……AC

#include<cstdio>#include<iostream>#include<algorithm>using namespace std;int n;int x[510],y[510];int anss[510];int dis[510];int X[510],Y[510];int main(){freopen("tower.in","r",stdin);freopen("tower.out","w",stdout);scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d%d",&x[i],&y[i]);for(int i=1;i<=n;i++){X[++X[0]]=x[i];Y[++Y[0]]=y[i];}sort(X+1,X+1+n);sort(Y+1,Y+1+n);int sizeX=unique(X+1,X+1+n)-X-1;int sizeY=unique(Y+1,Y+1+n)-Y-1;for(int k=1;k<=n;k++){long long ans=1LL<<61;for(int i=1;i<=sizeX;i++)for(int j=1;j<=sizeY;j++){for(int l=1;l<=n;l++)dis[l]=abs(x[l]-X[i])+abs(y[l]-Y[j]);sort(dis+1,dis+1+n);long long sum=0;for(int l=1;l<=k;l++)sum+=dis[l];ans=min(ans,sum);}cout<<ans<<endl;}return 0;}


T4没想出来~贪心0分


0 0
原创粉丝点击