UVALive 4853 Emoogle Balance
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<functional>
#include<iostream>
#include<cmath>
#include<cctype>
#include<ctime>
#include<iomanip>
#include<vector>
#include<string>
#include<queue>
#include<stack>
#include<map>
#include<sstream>
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define ForkD(i,k,n) for(int i=n;i>=k;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=Pre[x];p;p=Next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=Next[p])
#define Lson (o<<1)
#define Rson ((o<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,127,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define INF (2139062143)
#define F (1000000007)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define vi vector<int>
#define pi pair<int,int>
#define SI(a) ((a).size())
#define Pr(kcase,ans) printf("Case #%d: %I64d\n",kcase,ans);
#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;
#define PRi2D(a,n,m) For(i,n) { \
For(j,m-1) cout<<a[i][j]<<' ';\
cout<<a[i][m]<<endl; \
}
#pragma comment(linker, "/STACK:102400000,102400000")
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return ((a-b)%F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
int read()
{
int x=0,f=1; char ch=getchar();
while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}
return x*f;
}
int main()
{
// freopen("A.in","r",stdin);
// freopen(".out","w",stdout);
int kc=1,n;
while(cin>>n&&n) {
int p=0;
For(i,n) if (read()>0) ++p; else --p;
printf("Case %d: %d\n",kc++,p);
}
return 0;
}
UVALive 4854 A Digital Satire of Digital Age
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<functional>
#include<iostream>
#include<cmath>
#include<cctype>
#include<ctime>
#include<iomanip>
#include<vector>
#include<string>
#include<queue>
#include<stack>
#include<map>
#include<sstream>
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define ForkD(i,k,n) for(int i=n;i>=k;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=Pre[x];p;p=Next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=Next[p])
#define Lson (o<<1)
#define Rson ((o<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,127,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define INF (2139062143)
#define F (1000000007)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define vi vector<int>
#define pi pair<int,int>
#define SI(a) ((a).size())
#define Pr(kcase,ans) printf("Case #%d: %I64d\n",kcase,ans);
#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;
#define PRi2D(a,n,m) For(i,n) { \
For(j,m-1) cout<<a[i][j]<<' ';\
cout<<a[i][m]<<endl; \
}
#pragma comment(linker, "/STACK:102400000,102400000")
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return ((a-b)%F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
int read()
{
int x=0,f=1; char ch=getchar();
while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}
return x*f;
}
char s[8][20];
const int l=8,r=9,n=7,m=18;
void shift() {
copy_n(s[0],8,s[7]);
Rep(i,n) copy_n(s[i+1],8,s[i]);
copy_n(s[n],8,s[n-1]);
}
void shift2() {
int x=10;
copy_n(s[0]+x,8,s[7]+x);
Rep(i,n) copy_n(s[i+1]+x,8,s[i]+x);
copy_n(s[n]+x,8,s[n-1]+x);
}
void dshift() {
Rep(i,6) shift();
}
void dshift2() {
Rep(i,6) shift2();
}
int calc(int c) {
int p=0;
while(c) {
if (c%2) p+=2;
else p++;
c/=2;
}
return p;
}
int main()
{
// freopen("B.in","r",stdin);
// freopen(".out","w",stdout);
int T=read();
For(kcase,T) {
Rep(i,8) scanf("%s",s[i]);
int s1=0,s2=0,l1=-1,l2=-1;
Rep(i,n) {
Rep(j,m) {
if (s[i][j]=='/' && l1==-1 && j<l) l1=i;
else if (s[i][j]=='/' && l2==-1 && j>l) l2=i;
else if (isupper(s[i][j]) ) s1+=(j<l)?(calc(s[i][j])):(-calc(s[i][j]));
}
}
printf("Case %d:\n",kcase);
if (s1==0 && l1==l2 || s1<0 && l1<l2 || s1>0 && l1>l2) {
puts("The figure is correct.");
} else {
if (s1<0&&l1==l2) {
shift(); dshift2();
}
else if (s1<0&&l1>l2) {
shift(); dshift2();
shift(); dshift2();
}
else if (s1==s2&&l1<l2) {
dshift(); shift2();
} else if (s1==s2&&l1>l2) {
shift(); dshift2();
} else if (s1>0&&l1==l2) {
dshift(); shift2();
}
else if (s1>0&&l1<l2) {
dshift(); shift2();
dshift(); shift2();
}
Rep(i,n) printf("%s\n",s[i]);
}
}
return 0;
}
UVALive 4855 Hyper Box
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<functional>
#include<iostream>
#include<cmath>
#include<cctype>
#include<ctime>
#include<iomanip>
#include<vector>
#include<string>
#include<queue>
#include<stack>
#include<map>
#include<sstream>
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define ForkD(i,k,n) for(int i=n;i>=k;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=Pre[x];p;p=Next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=Next[p])
#define Lson (o<<1)
#define Rson ((o<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,127,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define INF (2139062143)
#define F (1000000007)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define vi vector<int>
#define pi pair<int,int>
#define SI(a) ((a).size())
#define Pr(kcase,ans) printf("Case #%d: %I64d\n",kcase,ans);
#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;
#define PRi2D(a,n,m) For(i,n) { \
For(j,m-1) cout<<a[i][j]<<' ';\
cout<<a[i][m]<<endl; \
}
#pragma comment(linker, "/STACK:102400000,102400000")
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return ((a-b)%F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
int read()
{
int x=0,f=1; char ch=getchar();
while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}
return x*f;
}
#define MAXN (10000)
ll f[MAXN];
int m;
ll calc(ll x){
ll t=0;
ForD(i,m) {
while (x>=f[i]) x-=f[i],t++;
}
return t;
}
int main()
{
// freopen("C.in","r",stdin);
// freopen(".out","w",stdout);
int T=read();
f[0]=f[1]=1;
m=0;
for(int i=2;i<=10000;i++) {
f[i]=f[i-1]+f[i-2];
if (f[i]>2000000000) {
m=i-1;break;
}
}
For(kc,T) {
ll ans=0;
int n=read();
ll p=1;
while(n--) {
ll x;
cin>>x;
p*=calc(x);
}
printf("Case %d: %lld\n",kc,p);
}
return 0;
}
UVALive 4856 OmniGravity
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<functional>
#include<iostream>
#include<cmath>
#include<cctype>
#include<ctime>
#include<iomanip>
#include<vector>
#include<string>
#include<queue>
#include<stack>
#include<map>
#include<sstream>
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define ForkD(i,k,n) for(int i=n;i>=k;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=Pre[x];p;p=Next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=Next[p])
#define Lson (o<<1)
#define Rson ((o<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,127,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define INF (2139062143)
#define F (9999997)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define vi vector<int>
#define pi pair<int,int>
#define SI(a) ((a).size())
#define Pr(kcase,ans) printf("Case %d: %I64d\n",kcase,ans);
#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;
#define PRi2D(a,n,m) For(i,n) { \
For(j,m-1) cout<<a[i][j]<<' ';\
cout<<a[i][m]<<endl; \
}
#pragma comment(linker, "/STACK:102400000,102400000")
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return ((a-b)%F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
int read()
{
int x=0,f=1; char ch=getchar();
while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}
return x*f;
}
const int n=8;
#define MAXN (10)
char s[MAXN][MAXN];
int dir[4][2]={{0,-1},{0,1},{1,0},{-1,0}};
bool inside(int x,int y) {return 0<=x&&x<n&&0<=y&&y<n;}
bool insideB(int x,int y) {
if (0<=x&&x<n-1&&0<=y&&y<n-1) {
if (s[x][y]!='#'&&s[x+1][y]!='#'&&s[x][y+1]!='#'&&s[x+1][y+1]!='#') return 1;
}
return 0;
}
struct State{
pi a[4];
void get() {
bool b[4]={0};
Rep(i,n) Rep(j,n) if (isupper(s[i][j]) ) {
if (!b[s[i][j]-'A']) {
b[s[i][j]-'A']=1;
a[s[i][j]-'A']=mp(i,j);
}
}
}
ll id() {
ll c=0;
Rep(i,4) {
c=(c*8+a[i].fi);
c=(c*8+a[i].se);
}
return c;
}
vector<State> child() {
vector<State> v;
Rep(di,4) {
State now=*this;
for(bool fl=1;fl;) {
fl=0;
Rep(i,4) {
int x=now.a[i].fi,y=now.a[i].se;
x+=dir[di][0],y+=dir[di][1];
bool b=0;
Rep(j,4) if (i^j) {
if (now.a[j].fi<=x&&x<=now.a[j].fi+1 &&now.a[j].se<=y&&y<=now.a[j].se+1 ) { b=1; break;
}if (now.a[j].fi<=x+1&&x<=now.a[j].fi+1 &&now.a[j].se<=y&&y<=now.a[j].se+1 ) { b=1; break;
}if (now.a[j].fi<=x&&x<=now.a[j].fi+1 &&now.a[j].se<=y+1&&y+1<=now.a[j].se+1 ) { b=1; break;
}if (now.a[j].fi<=x+1&&x<=now.a[j].fi+1 &&now.a[j].se<=y+1&&y+1<=now.a[j].se+1 ) { b=1; break;
}
}
if (insideB(x,y)&&!b) {
now.a[i]=mp(x,y); fl=1;
}
}
}
v.pb(now);
}
return v;
}
};
int h[9999997]={0};
ll a[9999997]={0};
int kcase;
bool get_id(State now) {
int p=now.id();
int c=p%F;
while (h[c]==kcase&& a[c]!=p) c=(c+1)%F;
if (h[c]==kcase && a[c]==p) return 0;
h[c]=kcase; a[c]=p;
return 1;
}
void bfs() {
queue<State> q;
State st; st.get();
q.push(st);
ll ans=0;
while(!q.empty()) {
State now=q.front(); q.pop();
vector<State> childs = now.child();
Rep(i,SI(childs)) {
State v=childs[i];
if (!get_id(v)) continue;
q.push(v); ++ans;
}
}
printf("Case %d: %lld\n",kcase,ans);
}
int main()
{
// freopen("D.in","r",stdin);
// freopen("D.out","w",stdout);
int T=read();
for(kcase=1;kcase<=T;++kcase) {
Rep(i,n) cin>>s[i];
bfs();
}
return 0;
}
UVALive 4858 Digital Matrix
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<functional>
#include<iostream>
#include<cmath>
#include<cctype>
#include<ctime>
#include<iomanip>
#include<vector>
#include<string>
#include<queue>
#include<stack>
#include<map>
#include<sstream>
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define ForkD(i,k,n) for(int i=n;i>=k;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=Pre[x];p;p=Next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=Next[p])
#define Lson (o<<1)
#define Rson ((o<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,127,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define INF (2139062143)
#define F (1000000007)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define vi vector<int>
#define pi pair<int,int>
#define SI(a) ((a).size())
#define Pr(kcase,ans) printf("Case %d: %d\n",kcase,ans);
#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;
#define PRi2D(a,n,m) For(i,n) { \
For(j,m-1) cout<<a[i][j]<<' ';\
cout<<a[i][m]<<endl; \
}
#pragma comment(linker, "/STACK:102400000,102400000")
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return ((a-b)%F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
int read()
{
int x=0,f=1; char ch=getchar();
while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}
return x*f;
}
int a[100][100];
int b[100][100];
int n,k;
int is_s() {
For(i,n) For(j,n) if (b[i][j]!=b[j][i]) return 0;
return 1;
}
bool is_ss() {
For(i,n) For(j,n) if (i!=j && a[i][j]!=b[j][i]) return 0;
int p=0;
For(i,n) Fork(j,i+1,n) if (a[i][j]!=b[i][j]) ++p;
return p<=1;
}
int main()
{
// freopen("F.in","r",stdin);
// freopen(".out","w",stdout);
int T=read();
For(kcase,T) {
n=read(),k=read();
For(i,n) For(j,n) a[i][j]=read();
For(i,n) For(j,n) b[i][j]=read();
int c=0;
For(i,n) For(j,n) c+=a[i][j]!=b[i][j];
int ans=0;
if (!c) ans=0;
else if (is_s()) ans=-1;
else if (is_ss()) {
if (k==2&&n==2) ans=-1;
else if (k==2) ans=c+2;
else ans=c+1;
} else ans=c;
Pr(kcase,ans)
}
return 0;
}
UVALive 4859 Knockout Tournaments
题目有误输出要加回车
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<functional>
#include<iostream>
#include<cmath>
#include<cctype>
#include<ctime>
#include<iomanip>
#include<vector>
#include<string>
#include<queue>
#include<stack>
#include<map>
#include<sstream>
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define ForkD(i,k,n) for(int i=n;i>=k;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=Pre[x];p;p=Next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=Next[p])
#define Lson (o<<1)
#define Rson ((o<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,127,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define INF (2139062143)
#define F (1000000007)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define vi vector<int>
#define pi pair<int,int>
#define SI(a) ((a).size())
#define Pr(kcase,ans) printf("Case #%d: %I64d\n",kcase,ans);
#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;
#define PRi2D(a,n,m) For(i,n) { \
For(j,m-1) cout<<a[i][j]<<' ';\
cout<<a[i][m]<<endl; \
}
#pragma comment(linker, "/STACK:102400000,102400000")
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return ((a-b)%F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
int read()
{
int x=0,f=1; char ch=getchar();
while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}
return x*f;
}
ld y=0.57721566490153286061;
int main()
{
// freopen("G.in","r",stdin);
// freopen("G_data.out","r",stdin);
// freopen("G.out","w",stdout);
cout<<setiosflags(ios::fixed)<<setprecision(2);
int kcase=1;
ll w,l;
while(cin>>w>>l) {
if (w==0 &&l==0 ) return 0;
printf("Case %d:\n",kcase++);
if (l==0) {
if (w%8) printf("Situation Impossible.\n");
else printf("On Average Bob Reaches Round 8.00\n");
continue;
}
ld ans=0;
int c=0;
ll L= max(0LL,(w-l*7+7)/8);
ll R=w/8;
if (R-L+1>=1000) {
ans=(ld)(w+l)/(ld)(R-L+1);
L+=l; R+=l;
if(L==1) ans*=log(R)+y;
else ans*=log(R)-log(L-1);
} else {
for(ll i=L;i<=R;i++) {
ans+=10/(ld)(l+i);
}
ans*=(ld)(w+l);
ans/=(R-L+1)*10;
}
printf("On Average Bob Reaches Round ");
cout<<ans<<endl;
}
return 0;
}