2013 多校第四场
来源:互联网 发布:点阵取模软件 编辑:程序博客网 时间:2024/05/22 15:42
今天多校大家都发挥了自己的水平,但是还是有进步的空间哦。
我说下自己写的三道题吧。
1002
其实就是一道裸的波利亚计数定理。
置换方法 定点循环节 面点循环节 棱的循环节 总计 个数
不动 8 54 12 74 1
面心-面心(+-90度) 2 15 3 20 6
面心-面心(180度) 4 28 6 38 3
棱心-棱心(180度) 4 27 7 38 6
对角线 (120度) 4 18 4 26 8
最后的ans = (1*k^74 + 6*k^20 + 3*k^38 + 6*k^38 + 8*k^26) /24
CODE:
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;#define FOR(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)#define DOR(i,a,b) for(int (i)=(a);(i)>=(b);(i)--)#define oo (1<<30)#define eps 1e-6#define nMax 100010#define MOD 10007#define LL long longLL EXP(LL a,int n){ if(n==0) return 1LL; LL k=EXP(a,n/2); k =k*k%MOD; if(n&1) k = k*a%MOD; return k;}int c[]={74,20,38,38,26};LL b[]={1,6,3,6,8};LL k;int main(){#ifndef ONLINE_JUDGE //freopen("input.txt","r",stdin);#endif int t,cas=1; scanf("%d",&t); while(t--){ scanf("%I64d",&k); LL ans=0; for(int i= 0;i<5;i++) ans = (ans+EXP(k,c[i])*b[i])%MOD; ans = (ans*417)%MOD; printf("Case %d: %I64d\n",cas,ans); cas++; } return 0;}
1007
典型的树状数组的应用。
把询问保存按l排序。
维护的树状数组是可以直接求出ans的。
具体的方法请看代码。
CODE:
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;#define FOR(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)#define DOR(i,a,b) for(int (i)=(a);(i)>=(b);(i)--)#define oo (1<<30)#define eps 1e-6#define nMax 100010int a[nMax],f[nMax],tp[nMax];int n,m;int c[nMax],vis[nMax];int lowbit(int x) { return x&(-x);}int sum(int x){ int sum=0; while(x>0){ sum += c[x]; x -= lowbit(x); } return sum;}int add(int x,int ad) { f[x]+=ad; while(x<=n) { c[x] += ad; x += lowbit(x); } return 0;}void ins(int p,int k){ if(k==0) { if(tp[a[p]+1]<p && vis[a[p]+1]==0){ add(p,-f[p]); }else { add(p,1-f[p]); } }else { if(tp[a[p]-1]<p && vis[a[p]-1]==0){ add(p,-f[p]); }else { add(p,1-f[p]); } } //vis[a[p]]=0;}struct qu{ int l,r,id; void read(){ scanf("%d%d",&l,&r); } friend bool operator < (const qu& u,const qu& v) { if(u.l==v.l) return u.r<v.r; return u.l<v.l; }};qu q[nMax];int ans[nMax];int main(){#ifndef ONLINE_JUDGE freopen("input.txt","r",stdin);#endif int t; scanf("%d",&t); while(t--){ scanf("%d%d",&n,&m); FOR(i,1,n) scanf("%d",&a[i]); FOR(i,1,n) tp[a[i]]=i;tp[0]=tp[n+1]=n+1; memset(c,0,sizeof(c)); memset(f,0,sizeof(f)); FOR(i,1,n) vis[i]=0;vis[0]=vis[n+1]=0; for(int i=1;i<=n;i++) { if(vis[a[i]+1]&&vis[a[i]-1]) add(i,-1); if(!vis[a[i]+1]&&!vis[a[i]-1]) add(i,1); vis[a[i]]=1; } FOR(i,1,n) vis[i]=0; FOR(i,1,m) q[i].read(),q[i].id=i; sort(q+1,q+m+1); int top=1; //FOR(j,1,n) printf("--%d ",f[j]);printf("\n"); FOR(i,1,m) { while(q[i].l>top) { vis[a[top]]=1; int b=a[top]+1; if(b<=n && vis[b]==0) ins(tp[b],0); b=a[top]-1; if(b>=1 && vis[b]==0) ins(tp[b],1); add(top,-f[top]);top++; //FOR(j,1,n) printf("%d ",f[j]);printf("\n"); } ans[q[i].id]=sum(q[i].r); } FOR(i,1,m) printf("%d\n",ans[i]); } return 0;}
1008
这种签到题就木有必要说什么了。
CODE:
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<map>using namespace std;#define FOR(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)#define DOR(i,a,b) for(int (i)=(a);(i)>=(b);(i)--)#define oo (1<<30)#define eps 1e-6#define nMax 100010#define MOD 10007#define LL long longchar s[nMax];int n;LL f[nMax];void init(){ f[1]=1;f[2]=2; for(int i=3;i<=10086;i++) f[i]=(f[i-1]+f[i-2])%MOD;}LL EXP(LL a,LL n){ if(n==0) return 1LL; LL k=EXP(a,n/2); k=k*k%MOD; if(n&1) k=k*a%MOD; return k;}map<int,int> h;//#define bug puts("hehe");int main(){#ifndef ONLINE_JUDGE freopen("input.txt","r",stdin);#endif init(); int t,cas=1; scanf("%d",&t); while(t--){ scanf("%s",s); n = strlen(s); h.clear(); for(int i=0;i<n;){ int j=i; if(s[j]=='h' && j+1<n && s[j+1]=='e'){ int sum=0; while(j<n){ if(s[j]=='h' && j+1<n && s[j+1]=='e') sum+=1,j+=2; else break; } if(sum>=2) h[sum]++; }else j++; i=j; } LL ans=1LL; map<int,int>::iterator iter; for(iter=h.begin();iter!=h.end();iter++){ LL add = EXP(f[(*iter).first],(*iter).second); ans = (ans*add)%MOD; } printf("Case %d: %I64d\n",cas,ans); cas++; } return 0;}
- 2013 多校第四场
- 多校第四场
- 多校第四场
- 2013多校联合训练第四场
- 多校联赛第四场
- 2013 多校第四场 hdu 4638 Group
- HDUOJ 4632 2013多校第四场第1题
- 2013 多校第四场 hdu 4635 Strongly connected
- 2012多校第四场总结
- hdu 4639 Hehe 多校第四场
- hdu 4638 Group 多校第四场
- HDOJ多校联合第四场
- 2015 多校第四场 Walk Out
- 多校第四场一二题
- 2015多校第四场总结
- 2016多校联合第四场 HDU5768
- HDU 5774 多校联赛第四场
- 2016多校第四场 HDU5769
- ubuntu远程桌面
- DataGridView绘制序号!
- 软件测试实验学习笔记系列6--图形界面测试(GUI)
- windows窗口关闭的消息响应机制
- uva 532 - Dungeon Master
- 2013 多校第四场
- 关于闭包的文章
- 自卑就是在自虐
- 堆栈学习笔记
- java json 转换之 Jackson 框架
- 你必须非常努力,才能看起来毫不费力
- 选择适合自己的学习风格
- PHP设计模式-状态模式
- 流媒体