@994495jj
2017-05-31T11:47:17.000000Z
字数 8199
阅读 1142
(ACM)数学----博弈论 (ACM)贪心 (ACM)构造
#include<cstdio>#include<queue>#include<cstring>using namespace std;#define mp make_pairconst int N=7005;queue<pair<int,int> > q;int k[2],a[2][N],f[2][N],deg[2][N];void print(int x) {if(x==1) printf("Win ");else if(x==0) printf("Lose ");else printf("Loop ");}int main() {int n;while(~scanf("%d",&n)) {///initmemset(f,-1,sizeof(f));int tt=q.size();while(tt--) q.pop();///readscanf("%d",&k[0]);for(int i=1;i<=k[0];++i) scanf("%d",&a[0][i]);scanf("%d",&k[1]);for(int i=1;i<=k[1];++i) scanf("%d",&a[1][i]);///get degfor(int i=0;i<n;++i) deg[0][i]=k[0];for(int i=0;i<n;++i) deg[1][i]=k[1];///bfsf[0][n-1]=f[1][n-1]=0;q.push(mp(0,n-1));q.push(mp(1,n-1));while(!q.empty()) {int now=q.front().first;int pos=q.front().second;q.pop();int prn=1-now;for(int i=1;i<=k[prn];++i) {int prp=(pos-a[prn][i]+n)%n;if(f[prn][prp]!=-1) continue;if(f[now][pos]) {--deg[prn][prp];if(deg[prn][prp]==0) {f[prn][prp]=0;q.push(mp(prn,prp));}} else {f[prn][prp]=1;q.push(mp(prn,prp));}}}for(int i=0;i<=1;++i) {for(int j=0;j<n-1;++j) {print(f[i][j]);}puts("");}}return 0;}
#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>using namespace std;const int N=300005;char s1[N],s2[N],s[N];int main() {int n,h;while(~scanf("%s%s",s1,s2)) {int n=strlen(s1);sort(s1,s1+n);sort(s2,s2+n);///zengint n2=n/2,n1=n-n2;s1[n1]='\0';///jianfor(int i=0;i<n2;++i) s2[i]=s2[n-i-1];s2[n2]='\0';int p=0,p1=0,p2=0;for(;p<n;++p) {if(s1[p1]>=s2[p2]) break;if(p&1) {s[p]=s2[p2++];} else {s[p]=s1[p1++];}}int q=n-1,q1=n1-1,q2=n2-1;for(;p<n;++p) {if(p&1) {s[q--]=s2[q2--];} else {s[q--]=s1[q1--];}}s[n]='\0';printf("%s\n",s);}return 0;}
#include<cstdio>#include<cstring>#include<vector>#include<map>#include<iostream>#include<cstring>#include<queue>using namespace std;#define mp make_pair#define fi first#define se secondint main() {string s;while(cin>>s) {int len=s.length();int cnt=0;for(int i=0;;++i) {int j=len-1-i;if(i>=j) break;if(s[i]!=s[j]) ++cnt;}if(cnt==1||(cnt==0&&(len&1))) puts("YES");else puts("NO");}return 0;}
#include<cstdio>#include<algorithm>#include<string>#include<iostream>using namespace std;const int N=55;string s[N],tmp[N][N];int n,len;void gettmp(int t) {tmp[t][0]=s[t];for(int i=1;i<len;++i) {tmp[t][i]="";for(int j=i;j<len;++j) tmp[t][i]=tmp[t][i]+s[t][j];for(int j=0;j<i;++j) tmp[t][i]=tmp[t][i]+s[t][j];}}int solve() {int ans=n*len;for(int i=0;i<len;++i) {int res=0;for(int j=1;j<=n;++j) {int k;for(k=0;k<len;++k) {if(tmp[j][k]==tmp[1][i]) break;}if(k==len) return -1;res=res+k;}ans=min(ans,res);}return ans;}int main() {while(~scanf("%d",&n)) {///readfor(int i=1;i<=n;++i) cin>>s[i];///get lenlen=s[1].length();///get tmpfor(int i=1;i<=n;++i) gettmp(i);printf("%d\n",solve());}return 0;}
#include<cstdio>const int N=100005;int a[N];int gcd(int a,int b) {if(b==0) return a;return gcd(b,a%b);}int main() {int n;while(~scanf("%d",&n)) {///readfor(int i=1;i<=n;++i) scanf("%d",a+i);///get dint d=a[1];for(int i=2;i<=n;++i) {d=gcd(d,a[i]);}///if(d>1) {puts("YES\n0");continue;}///solveint ans=0,now=0;for(int i=1;i<=n+1;++i) {if( a[i]%2 && a[i-1]%2 ) {++now;} else if( a[i]%2 && a[i-1]%2==0 ) {now=1;} else if( a[i]%2==0 && a[i-1]%2 ) {ans=ans+now/2;if(now&1) ans+=2;}}printf("YES\n%d\n",ans);}return 0;}
#include<cstdio>#include<algorithm>using namespace std;struct Node {int a,b,i;bool operator < (const Node &tmp) const {if(a==tmp.a) return i<tmp.i;return a>tmp.a;}}a[100005];int main() {///int n;scanf("%d",&n);///initfor(int i=1;i<=n;++i) a[i].i=i;///readfor(int i=1;i<=n;++i) scanf("%d",&a[i].a);for(int i=1;i<=n;++i) scanf("%d",&a[i].b);///solvesort(a+1,a+1+n);printf("%d\n%d",n/2+1,a[1].i);if(n%2==0) printf(" %d",a[n].i);for(int i=2;i+1<=n;i+=2) {printf(" %d",(a[i].b>a[i+1].b)?a[i].i:a[i+1].i);}puts("");return 0;}
#include <algorithm>#include <iostream>#include <cstring>#include <vector>#include <cstdio>#include <string>#include <cmath>#include <queue>#include <set>#include <map>using namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair<int,int> pii;typedef pair<ll,ll> pll;#define mp make_pair#define pb push_back#define fi first#define se second#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define de(x) cout << #x << "=" << x << endlint main() {int n;string s;scanf("%d",&n);for(int i=0;i<=n;++i) cin>>s;if(n&1) puts("contest");else puts("home");return 0;}
#include <algorithm>#include <iostream>#include <cstring>#include <vector>#include <cstdio>#include <string>#include <cmath>#include <queue>#include <set>#include <map>using namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair<int,int> pii;typedef pair<ll,ll> pll;#define mp make_pair#define pb push_back#define fi first#define se second#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define de(x) cout << #x << "=" << x << endlconst int N=505;char s[N];int main() {scanf("%s",s);int n=strlen(s);int now='a';//现在要找的是nowbool ans=1;for(int i=0;i<n;++i) {if(s[i]>now) {ans=0;break;}if(s[i]==now) ++now;}if(ans) puts("YES");else puts("NO");return 0;}
#include <algorithm>#include <iostream>#include <cstring>#include <vector>#include <cstdio>#include <string>#include <cmath>#include <queue>#include <set>#include <map>using namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair<int,int> pii;typedef pair<ll,ll> pll;#define mp make_pair#define pb push_back#define fi first#define se second#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define de(x) cout << #x << "=" << x << endlint main() {int k,a,b;cin>>k>>a>>b;int ansa=a/k,ansb=b/k;if(a%k&&!ansb||b%k&&!ansa) {puts("-1");return 0;} else {printf("%d\n",ansa+ansb);}return 0;}
#include<cstdio>#include<cmath>int main() {int n,h;while(~scanf("%d%d",&n,&h)) {for(int i=1;i<n;++i) {printf("%.12lf%c",sqrt(i*1.0/n)*h,(i==n-1)?'\n':' ');}}return 0;}