The 2016 ACM-ICPC Asia Dalian Regional Contest
一共a了6题
A:找二分图,判断有没有冲突或者孤立的店
题解:直接dfs即可
#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<cassert>
#include<iomanip>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define C 0.5772156649
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; const double g=10.0,eps=1e-;
const int N=+,maxn=+,inf=0x3f3f3f; int color[N],n;
vector<int>v[N];
bool dfs(int u,int c)
{
color[u]=c;
for(int i=;i<v[u].size();i++)
{
int x=v[u][i];
if(color[x]==c||(color[x]==&&!dfs(x,-c)))
return ;
}
return ;
}
void solve()
{
for(int i=; i<=n; i++)
{
if(color[i]==&&!dfs(i,))
{
cout<<"NO"<<endl;
return ;
}
else if(color[i]==&&!dfs(i,))
{
cout<<"NO"<<endl;
return ;
}
}
for(int i=; i<=n; i++)
{
if(color[i]==&&!dfs(i,))
{
cout<<"NO"<<endl;
return ;
}
}
for(int i=;i<=n;i++)
if(color[i]==-)
{
cout<<"NO"<<endl;
return ;
}
cout<<"YES"<<endl;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie();
int m,x,y;
while(cin>>n>>m>>x>>y)
{
for(int i=;i<=n;i++)v[i].clear();
memset(color,-,sizeof color);
while(m--)
{
int a,b;
cin>>a>>b;
color[a]=color[b]=;
v[a].push_back(b);
v[b].push_back(a);
}
for(int i=;i<=x;i++)
{
int a;
cin>>a;
color[a]=;
}
for(int i=;i<=y;i++)
{
int a;
cin>>a;
color[a]=;
}
solve();
}
return ;
}
/*********************
5 4 1 2
1 3
1 4
3 5
4 5
2
1 3
*********************/
A
D:给你a,b,看能不能找到x,y使x+y==a,最小公约数(x,y)==b
题解:y=a-x,然后gcd(x,y)==gcd(a,b),看二元一次方程有没有解
#include<bits/stdc++.h>
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define pii pair<int,int>
#define C 0.5772156649
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1 using namespace std; const double g=10.0,eps=1e-;
const int N=+,maxn=+,inf=0x3f3f3f3f; map<ll,ll>m;
int main()
{
for(ll i=;i<=;i++)m[i*i]=i;
ll a,b;
while(~scanf("%lld%lld",&a,&b))
{
ll y=-a,z=__gcd(a,b)*b;
if(y*y<*z)puts("No Solution");
else
{
if(!m[y*y-*z]&&y*y-*z!=)puts("No Solution");
else
{
ll p1=-y+m[y*y-*z],p2=-y-m[y*y-*z];
if(p1%==&&p1/>&&p2%==&&p2/>)printf("%lld %lld\n",min(p1/,p2/),max(p1/,p2/));
else puts("No Solution");
}
}
}
return ;
}
F:给一个数a,找一堆不相同的数相加为a,使他们相乘最大
题解:直觉。。。2+3+。。+一直加到和大于a为止,然后把最后一位变成2+3+4+5+6+10这种形式,然后把10平摊到前面 的数2+4+5+6+7+8,然后前缀和二分,答案用前缀积+逆元求
#include<bits/stdc++.h>
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define pii pair<int,int>
#define C 0.5772156649
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1 using namespace std; const double g=10.0,eps=1e-;
const int N=+,maxn=+,inf=; ll f[N],ans[N];
ll quick(ll a,ll b)
{
ll ans=;
while(b)
{
if(b&)ans=(ans*a)%mod;
a=(a*a)%mod;
b/=;
}
return ans;
}
int main()
{
ans[]=;
for(ll i=;i<=;i++)
{
f[i]=i*(i+)/-;
ans[i]=ans[i-]*i%mod;
}
int t;
scanf("%d",&t);
while(t--)
{
ll x;
scanf("%lld",&x);
if(x<=)printf("%lld\n",x);
else
{
ll p=lower_bound(f,f+,x)-f;
if(f[p]==x)printf("%lld\n",ans[p]);
else
{
if(p-x+f[p-]!=)printf("%lld\n",ans[p]*quick(p-x+f[p-],mod-)%mod);
else printf("%lld\n",ans[p+]*quick(p,mod-)%mod*quick(,mod-)%mod);
}
}
}
return ;
}
F
H:一个袋子里有n个红球,1个黑球,二个人轮流拿(拿到不放回),拿到黑球算赢,问先拿的人能不能赢
题解:找规律,emmm当n为奇数,可以看出概率为1/2,n为偶数时,把取的整个过程看成全排列那么就是(n+1)!,分成黑球在奇数位和在偶数位,在奇数位就是先手取的情况,
那么概率就是n+2/(2*(n+1)),保证大于0.5
#include<bits/stdc++.h>
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define pii pair<int,int>
#define C 0.5772156649
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1 using namespace std; const double g=10.0,eps=1e-;
const int N=+,maxn=+,inf=; int main()
{
int k;
while(~scanf("%d",&k))
{
if(k&)puts("");
else puts("");
}
return ;
}
H
I水题
#include<bits/stdc++.h>
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define pii pair<int,int>
#define C 0.5772156649
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1 using namespace std; const double g=10.0,eps=1e-;
const int N=+,maxn=+,inf=; int main()
{
int n,d;
while(~scanf("%d%d",&n,&d))
{
double ans=;
for(int i=;i<n;i++)
{
double ang;
scanf("%lf",&ang);
ans+=sin(ang/*pi)/*d*d;
}
printf("%.3f\n",ans);
}
return ;
}
I
J主要是题意难懂= =,给一堆数,把他化成32位的二进制,然后每8个算一个数(字符),求a的个数,模拟即可
#include<bits/stdc++.h>
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define pii pair<int,int>
#define C 0.5772156649
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1 using namespace std; const double g=10.0,eps=1e-;
const int N=+,maxn=+,inf=; int main()
{
int n,d;
while(~scanf("%d",&n))
{
string a="";
for(int i=;i<n;i++)
{
ll x;
scanf("%lld",&x);
string p="";
for(int j=;j<=;j++)
{
if(x&)p+='';
else p+='';
x/=;
}
reverse(p.begin(),p.end());
a+=p;
}
ll ans=;
for(int i=;i<a.size();i+=)
{
ll p=;
for(int j=;j>=;j--)p+=(<<(-j))*(int)(a[j+i]-'');
if((char)p=='a')ans++;
}
printf("%d\n",ans);
}
return ;
}
J
The 2016 ACM-ICPC Asia Dalian Regional Contest的更多相关文章
- 2016 ACM/ICPC Asia Regional Dalian Online 1002/HDU 5869
Different GCD Subarray Query Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K ( ...
- 2016 ACM/ICPC Asia Regional Dalian Online 1006 /HDU 5873
Football Games Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- HDU 5874 Friends and Enemies 【构造】 (2016 ACM/ICPC Asia Regional Dalian Online)
Friends and Enemies Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- HDU 5875 Function 【倍增】 (2016 ACM/ICPC Asia Regional Dalian Online)
Function Time Limit: 7000/3500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- HDU 5873 Football Games 【模拟】 (2016 ACM/ICPC Asia Regional Dalian Online)
Football Games Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- HDU 5876 Sparse Graph 【补图最短路 BFS】(2016 ACM/ICPC Asia Regional Dalian Online)
Sparse Graph Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)To ...
- hdu 5868 2016 ACM/ICPC Asia Regional Dalian Online 1001 (burnside引理 polya定理)
Different Circle Permutation Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 262144/262144 K ...
- 2016 ACM/ICPC Asia Regional Shenyang Online 1003/HDU 5894 数学/组合数/逆元
hannnnah_j’s Biological Test Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K ...
- 2016 ACM/ICPC Asia Regional Qingdao Online 1001/HDU5878 打表二分
I Count Two Three Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- 2016 ACM/ICPC Asia Regional Shenyang Online 1009/HDU 5900 区间dp
QSC and Master Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
随机推荐
- 【jenkins】jenkins实时显示python脚本输出
jenkins在构建shell脚本时可以实时输出结果,但是在构建python脚本时,是等到python执行完成以后,才显示结果,这个对于我们判断脚本执行状态非常不利 这里介绍一种方法,能够实时显示py ...
- 【WEB HTTP】集成点:网关、隧道及中继
网关:网关可以作为某种翻译器使用,它抽象出了一种能够到达资源的方法.网关是资源与应用程序之间的粘合剂. 在不同http版本之间进行转换的Web代理和网关一样,他们会执行复杂的逻辑,以便在各个端点之间进 ...
- 剑指offer 面试47题
面试47题:题:礼物的最大价值 题目:在一个mxn的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于0),你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格,直到到达棋盘的 ...
- JavaScript Promise异步实现章节的下载显示
Links: JavaScript Promise:简介 1.一章一章顺序地下载显示下载显示 使用Array.reduce()和Promise.resolve()将各章的下载及显示作为整体串联起来. ...
- Easyui 遮罩实现方式
项目中在提交Ajax请求时,后台处理数据时间有点长,需要一个遮罩,就随便找了一个实现一下:包含两种方式,个人比较喜欢第二种 第一种: $("#saveMaterial").clic ...
- C# 学习黑马.Net视频教程,大文件拷贝
设计器代码: namespace 大文件拷贝 { partial class Form1 { /// <summary> /// 必需的设计器变量. /// </summary> ...
- $《第一行代码:Android》读书笔记——第3章 UI基础
(一)Android常用控件及简单用法 1.如下图: 2.补充: (1)margin:外边距:padding:内边距. (2)gravity:子元素的位置:layout_gravity:子元素在父元素 ...
- $MySQL常用操作命令备忘
1.登录数据库:mysql -uroot -p12345 (12345为密码)2.创建数据库:create database senguocc; (senguocc为数据库名)3.查看有哪些数据库: ...
- Python编程-函数进阶
一.函数对象 函数是第一类对象,即函数可以当作数据传递 1 可以被引用 2 可以当作参数传递 3 返回值可以是函数 4 可以当作容器类型的元素 def foo(): print('from foo') ...
- 谈Swift中的访问控制
访问控制(Access Control) 访问控制可以限定其他源文件或模块中的代码对你的代码的访问级别.这个特性可以让我们隐藏代码的一些实现细节,并且可以指定一些代码和访问和使用的优先接口. 你可以明 ...