2017ACM乌鲁木齐网预
来源:互联网 发布:中国经济泡沫知乎 编辑:程序博客网 时间:2024/04/28 17:22
2017ACM乌鲁木齐网预
A
#include<iostream>#include<cstdio>#include<ctime>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#define N#define Musing namespace std;typedef long long LL;int T, n, m;bool map[55][55], map1[55][55], map2[55][55];int main(){//freopen("input.txt","r",stdin); //freopen("input.txt","w",stdout); scanf("%d", &T); while(T--) { memset(map, 0, sizeof(map)); memset(map1, 0, sizeof(map1)); memset(map2, 0, sizeof(map2)); scanf("%d%d", &n, &m); for(int i=1, x, y;i<=n;i++) { scanf("%d%d", &x, &y); map[x][y]=1; } for(int i=1, x, y;i<=m;i++) { scanf("%d%d", &x, &y); map1[x][y]=1; } for(int i=1;i<=50;i++) for(int j=1;j<=50;j++) for(int k=1;k<=50;k++) if(map[i][j]&&map1[j][k])map2[i][k]=1; for(int i=1;i<=50;i++) for(int j=1;j<=50;j++) if(map2[i][j])printf("%d %d\n", i, j); printf("\n"); } return 0;}
C
#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#define M(a,b) memset(a,b,sizeof(a))using namespace std;const int MAXN=1007;int kk[MAXN];int main(){ int T;scanf("%d", &T); while(T--) { int n, b;scanf("%d%d", &n, &b); for(int i=1;i<=n;i++) { scanf("%d", &kk[i]); } int now=0;int fl=0; for(int i=1;i<n;i++) { now+=kk[i]; int tmp;scanf("%d", &tmp); if(tmp*b>now||fl) { fl=1; } else { now-=(tmp*b); } } if(fl) printf("No\n"); else printf("Yes\n"); } return 0;}
E
#include<iostream>#include<cstdio>#include<ctime>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#include<queue>#define lson l,mid,rt<<1#define rson mid+1,r,rt<<1|1#define M(a,b) memset(a,b,sizeof(a))using namespace std;typedef long long LL;const int MAXN=100000007;struct FU{ LL r; LL k; FU() {} FU(LL _a, LL _b) { k=_a, r=_b; }};FU f[100];int nn=1;void init(){ f[0].k=1;f[1].k=2;f[2].k=7, f[3].k=12, f[4].k=41; for(int i=5;i<=20;i++) f[i].k=f[i-2].k*6-f[i-4].k; for(int i=0;i<=20;i++) { f[i].r=f[i].k*f[i].k; if(i%2) f[i].r*=2; }}int main(){ init(); int T;scanf("%d", &T);int cas=0; while(T--) { LL tmp;scanf("%lld", &tmp); int i=0; for(i=0;i<=20;i++) { if(f[i].r>=tmp) break; } printf("Case #%d: %lld\n", ++cas, f[i].r); } //system("pause"); return 0;}
F
#include<stdio.h>#include<vector>#include<algorithm>#include<stack>#include<string.h>using namespace std;#define MS(x) memset(x,0,sizeof(x))stack<int> S;vector<int> G[13000];vector<int> C[13000];bool used[15000];int dfn[15000];int low[15000];int time_T=0;int nv, ne;int cmp[15000];int ncmp;bool instack[25000];int in[15000];int out[15000];void init(){ while(!S.empty()) S.pop(); MS(used); MS(low); for(int i=0;i<15000;i++) dfn[i]=-1; time_T=0; ncmp=0; MS(cmp); MS(G); MS(C); MS(instack); MS(in); MS(out);}void tarjan(int n){ dfn[n]=low[n]=time_T++; S.push(n); instack[n]=1; for(int i=0;i<G[n].size();i++) { int v=G[n][i]; if(dfn[v]==-1) { tarjan(v); low[n]=min(low[n], low[v]); } else if(instack[v]) { low[n]=min(low[n], dfn[v]); } } if(dfn[n]==low[n]) { int v; do { v=S.top(); S.pop(); instack[v]=false; cmp[v]=ncmp; } while(v!=n); ncmp++; }}int main(){ int cas; scanf("%d", &cas); for(int T=1;T<=cas;T++) { init(); scanf("%d%d", &nv, &ne); for(int i=0;i<ne;i++) { int f, t; scanf("%d%d", &f, &t); f--; t--; G[f].push_back(t); } for(int i=0;i<nv;i++) if(dfn[i]==-1) tarjan(i); if(ncmp==1) { puts("0"); continue; } for(int i=0;i<nv;i++) { for(int j=0;j<G[i].size();j++) { int v=G[i][j]; int cn=cmp[i]; int cv=cmp[v]; if(cn!=cv) C[cn].push_back(cv); } } int ans=0; for(int i=0;i<ncmp;i++) { out[i]=C[i].size(); for(int j=0;j<C[i].size();j++) { int v=C[i][j]; in[v]++; } } int in0=0; int out0=0; for(int i=0;i<ncmp;i++) { if(in[i]==0) in0++; if(out[i]==0) out0++; } printf("%d\n", max(in0, out0)); } return 0;}
G
#include<iostream>#include<cstdio>#include<ctime>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#include<queue>#define lson l,mid,rt<<1#define rson mid+1,r,rt<<1|1#define M(a,b) memset(a,b,sizeof(a))using namespace std;typedef long long LL;const int MAXN=100007;char s[MAXN], t[20];//int stree[MAXN<<2];int la[MAXN];int bit[MAXN];int lowbit(int i){ return i&(-i);}void change(int pos, int v){ while(pos<MAXN) bit[pos]+=v, pos+=lowbit(pos);}int query(int pos){ int ans=0; while(pos>0) ans+=bit[pos], pos-=lowbit(pos); return ans;}void baoli(int n, int m){ int i, j; for(i=m;i<=n;i++) { bool flag=0; for(j=1;j<=m;j++) { if(s[i-j+1]!=t[m-j+1]) { flag=1; break; } } if(flag)continue; la[i]=1;change(i, 1); }}void xiugai(int n, int m, int L, int R, int p, char c){ s[p]=c; int i, j; for(int i=L; i<=R;i++) { if(la[i]) change(i, -1), la[i]=0; //change(i, 0, 1, n, 1); } for(i=L;i<=R;i++) { //if(la[i]) { la[i]=0;continue; } bool flag=0; for(j=1;j<=m;j++) { if(s[i-j+1]!=t[m-j+1]) { flag=1; break; } } if(flag) { la[i]=0;continue; } //change(i, 1, 1, n, 1); change(i, 1); la[i]=1; }}int main(){ int T;scanf("%d", &T); while(T--) { M(la, 0); M(bit, 0); int q;scanf("%d", &q); scanf("%s", s+1);int n=strlen(s+1); scanf("%s", t+1);int m=strlen(t+1); baoli(n, m); //build(1, n, 1); for(int i=1;i<=q;i++) { char ss[3]; scanf("%s", ss); if(ss[0]=='Q') { int t1, t2;scanf("%d%d", &t1, &t2); if(t1+m-1>t2) printf("0\n"); else //printf("%d\n", query(t1+m-1, t2, 1, n, 1)); printf("%d\n", query(t2)-query(t1+m-2)); } else { int p;char cc[3]; scanf("%d%s", &p, cc); if(s[p]==cc[0]) continue; s[p]=cc[0]; int st=max(p, m); int fi=min(p+m-1, n); if(st<=fi) xiugai(n, m, st, fi, p, cc[0]); } } printf("\n"); } //system("pause"); return 0;}
H
#include<iostream>#include<cstdio>#include<ctime>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#include<queue>using namespace std;typedef long long LL;struct Edge { int next, to, v; }a[100005];int T, n, m, ans, cnt, h[10005], dis[10005];bool vis[10005], rd[10005];void Addedge(int x, int y, int v){ a[++cnt].to=y;a[cnt].next=h[x];a[cnt].v=v;h[x]=cnt;}queue<int> que;int main(){ scanf("%d", &T); while(T--) { while(!que.empty()) que.pop(); scanf("%d%d", &n, &m); memset(vis, 0, sizeof(vis)); memset(dis, 0, sizeof(dis)); memset(rd, 0, sizeof(rd)); memset(h, 0, sizeof(h)); ans=0, cnt=0; for(int i=1, x, y, v;i<=m;i++) { scanf("%d%d%d", &x, &y, &v); Addedge(x, y, v); rd[y]=1; } for(int i=1;i<=n;i++) if(!rd[i])que.push(i); else vis[i]=1; while(!que.empty()) { int x=que.front();que.pop(); for(int i=h[x];i;i=a[i].next) { int y=a[i].to; if(dis[y]<dis[x]+a[i].v) { dis[y]=dis[x]+a[i].v; if(ans<dis[y])ans=dis[y]; if(vis[y]) { que.push(y);vis[y]=0; } } } vis[x]=1; } printf("%d\n", ans); } return 0;}
阅读全文
0 0
- 2017ACM乌鲁木齐网预
- ACM/ICPC乌鲁木齐2017解题报告
- 2017ACM乌鲁木齐赛区A题banana
- 2017ACM-ICPC乌鲁木齐之旅
- 2017acm/icpc乌鲁木齐站赛后总结
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区) A. Banana
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区) C. Coconut
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛
- 2017 ACM-ICPC 亚洲区乌鲁木齐赛网络赛 E
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区) F Islands
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛-A. Banana
- 轻院1064加密字符
- JVM--1、GC
- jenkins后台执行shell命令
- TMS320F28377D_LED实验
- 两种会场安排问题求解
- 2017ACM乌鲁木齐网预
- 加载大图片到内存
- 笔试经典题之链表倒序
- Python3 关键字 in 和 is 的区别
- 2017年ACM-ICPC乌鲁木齐站网络赛C题--Coconut
- ACM比赛_注意
- 二维数组元素表示方法
- 获取div在浏览器以下的网页高度
- 百度编程题总结