Summer training #3
A:给一个包含字母 加号 括号的序列 要求你删除多余的括号然后输出 (待改)
#include <bits/stdc++.h>
#include <cstring>
#include <iostream>
#include <algorithm>
#define foror(i,a,b) for(i=a;i<b;i++)
#define foror2(i,a,b) for(i=a;i>b;i--)
#define EPS 1.0e-8
#define PI acos(-1.0)
#define INF 3000000000
#define MOD 1000000009
#define mem(a,b) memset((a),b,sizeof(a))
#define TS printf("!!!\n")
#define lson o<<1, l, m
#define rson o<<1|1, m+1, r
//using ll = long long;
//using ull= unsigned long long;
//std::ios::sync_with_stdio(false);
using namespace std;
//priority_queue<int,vector<int>,greater<int>> que;
typedef long long ll;
char s[];
int final[],visit[];
stack<int> stack1,stack2;
bool check()
{
int pop=;
if(stack1.top()==)
pop=;
if(stack2.top()==)
pop=;
if(s[stack1.top()-]=='+'||s[stack1.top()-]=='(')
pop=;
return pop;
}
bool same()
{
return s[stack1.top()-]=='(';
}
int main()
{
freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
while(scanf("%s",s)==)
{
//cout << s<<endl;
int cnt=;
mem(final,);
mem(visit,);
int len=strlen(s);
for(int i=;i<len;i++)
{
if(s[i]=='(')
{
stack1.push(i);
stack2.push();
}
else if(s[i]=='+')
{
if(!stack2.empty())
{
stack2.pop();
stack2.push();
}
}
else if(s[i]==')')
{
//cnt++;
//cout << cnt<<" "<<stack1.size()<<endl;
if((!check())&&i<=len-||s[i+]==')'||s[i+]=='+')
{
final[i]=;
final[stack1.top()]=;
//cout << stack1.top()<<endl;
if(stack1.top()==&&i+<len&&same&&s[i+]==')')
{
int t1=stack1.top();
stack1.pop();
int t2=stack1.top();
stack1.pop();
t2=t1;
stack1.push(t2);
stack1.push(t1);
}
}
stack1.pop();
//cout << cnt<<" "<<stack1.size()<<endl;
}
}
/*for(int i=len-1;i>=0;i--)
{
if(s[i]=='(')
{
final[i]=0;
break;
}
}*/
for(int i=;i<len;i++)
{
if(final[i])
printf("%c",s[i]);
}
cout<<endl;
}
return ;
}
B:
C:给你一个l r要求在这之间找出两个数使之按位或后的值最大
因为是或 所以最大的那个数肯定是r 另外一个在l,r之间找 1<<i-(1<<i-now)<=r-1-l
#include <bits/stdc++.h>
#include <cstring>
#include <iostream>
#include <algorithm>
#define foror(i,a,b) for(i=a;i<b;i++)
#define foror2(i,a,b) for(i=a;i>b;i--)
#define EPS 1.0e-8
#define PI acos(-1.0)
#define INF 3000000000
#define MOD 1000000009
#define mem(a,b) memset((a),b,sizeof(a))
#define TS printf("!!!\n")
#define lson o<<1, l, m
#define rson o<<1|1, m+1, r
//using ll = long long;
//using ull= unsigned long long;
//std::ios::sync_with_stdio(false);
using namespace std;
//priority_queue<int,vector<int>,greater<int>> que;
typedef long long ll;
int er[];
ll l,r;
int pop=;
ll anser1=;
void init(ll t)
{
while(t>)
{
er[pop++]=t%;
t=t/;
}
}
void doit()
{
for(int i=;i<pop;i++)
{
if(er[i]==)
anser1+=1LL<<i;
}
}
int main()
{
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
int t;
cin>>t;
while(t--)
{
cin >> l >> r;
anser1=,pop=;
init(r);
for(int i=;i<pop;i++)
{
if(er[i]==)
anser1+=1LL<<i;
else
{
if(r->=l+anser1)
er[i]=;
}
}
anser1=;
doit();
cout << anser1<<endl;
}
return ;
}
D:
I:素因子分解+容斥原理
假设卡片上标号分别是a1, a2, ..., an, M,跳蚤跳对应号的次数分别为x1, x2, ..., xn,跳M个单位长度的次数是xn+1,那么要满足已知条件只需满足方程:
a1x1+a2x2+...+anxn+Mxn+1 = 1 有解,即:
gcd (a1, a2, ..., an, M) = 1,接下来对M进行素因子分解,然后排除公因子非1的情况即可。
如代码所示:
设g为公因子非1的情况数,f(i)表示有i个公因子的情况数,由容斥原理得:g = f(1) - f(2) + f(3) -... f(k)
#include <iostream>
using namespace std;
#define LL __int64 int fac[], k, a[], n, m, x;
LL tp; LL my_pow (LL a, int b) //计算a^b
{
LL res = ;
while (b--) res *= a;
return res;
} void dfs (int pos, int cnt, int num) //dfs得到卡片中n+1个数有num个公因子时的方法数
{
if (cnt == num)
{
x = m;
for (int i = ; i < cnt; i++)
x /= a[i]; //x/p表示[1,x]中有多少个数是p的倍数
tp += my_pow (x, n); //要选n个数,每个数有x种选择
return ;
}
for (int i = pos; i < k; i++)
{
a[cnt] = fac[i];
dfs (i+, cnt+, num);
}
} void divide (int p) //分解素因子,fac存放p的所有素因子
{
for (int i = ; i * i <= p; i++)
{
if (p % i == )
{
fac[k++] = i;
p /= i;
while (p % i == )
p /= i;
}
}
if (p > ) fac[k++] = p;
} int main()
{
LL ans, g;
int i;
while (cin >> n >> m)
{
g = ;
divide (m);
for (i = ; i <= k; i++) //g = f(1)-f(2)+f(3)-f(4)+...f(k)
{
tp = ;
dfs (, , i);
if (i & ) g += tp;
else g -= tp;
}
ans = my_pow (m, n) - g; //ans = m^n - g
cout << ans << endl;
}
return ;
}
K:博弈论 2*3 3*2 2*2 是N 1*n n*1 是P
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int dp[][];
int getsg(int w,int h){
if(dp[w][h]!=-)return dp[w][h];
bool vis[];
memset(vis,,sizeof(vis));
for(int i=;i<=w-i;i++){
dp[i][h]=getsg(i,h);
dp[w-i][h]=getsg(w-i,h);
vis[dp[i][h]^dp[w-i][h]]=true;
}
for(int i=;i<=h-i;i++){
dp[w][i]=getsg(w,i);
dp[w][h-i]=getsg(w,h-i);
vis[dp[w][i]^dp[w][h-i]]=true;
}
for(int i=;;i++)
if(!vis[i])
return dp[w][h]=i;
}
int main()
{
int w,h;
memset(dp,-,sizeof(dp));
while(scanf("%d%d",&w,&h)!=EOF){
if(getsg(w,h))printf("WIN\n");
else printf("LOSE\n");
}
return ;
}
Summer training #3的更多相关文章
- hdu 4946 2014 Multi-University Training Contest 8
Area of Mushroom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- 2016 Multi-University Training Contests
2016 Multi-University Training Contest 1 2016 Multi-University Training Contest 2 2016 Multi-Univers ...
- 2016 Multi-University Training Contest 2 D. Differencia
Differencia Time Limit: 10000/10000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
- 2016 Multi-University Training Contest 1 G. Rigid Frameworks
Rigid Frameworks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- ACM: Gym 101047K Training with Phuket's larvae - 思维题
Gym 101047K Training with Phuket's larvae Time Limit:2000MS Memory Limit:65536KB 64bit IO F ...
- The Solution of UESTC 2016 Summer Training #1 Div.2 Problem C
Link http://acm.hust.edu.cn/vjudge/contest/121539#problem/C Description standard input/output After ...
- 2012 Multi-University Training Contest 9 / hdu4389
2012 Multi-University Training Contest 9 / hdu4389 打巨表,实为数位dp 还不太懂 先这样放着.. 对于打表,当然我们不能直接打,这里有技巧.我们可以 ...
- 2014 Multi-University Training Contest 9#11
2014 Multi-University Training Contest 9#11 Killing MonstersTime Limit: 2000/1000 MS (Java/Others) ...
- 2014 Multi-University Training Contest 9#6
2014 Multi-University Training Contest 9#6 Fast Matrix CalculationTime Limit: 2000/1000 MS (Java/Oth ...
- 2016 Multi-University Training Contest 1
8/11 2016 Multi-University Training Contest 1 官方题解 老年选手历险记 最小生成树+线性期望 A Abandoned country(BH) 题意: 1. ...
随机推荐
- 【AMAD】django-cities -- 为Django项目提供国家,城市数据
动机 简介 个人评分 动机 有时候看一些数据库设计,国家数据会存在一个单独的表里面.这种方式读取数据库无疑又要加上一层join,很不划算. 简介 [django-cities]1可用为你提供国家和城市 ...
- 【JAVA开发】eclipse最新版本Eclipse Neon
这个版本的IDE支持Java.JavaScript.C/C++.PHP和Fortran等多种编程语言: 这个版本首次鼓励用户使用Eclipse Installer来做安装,这是一种由Eclipse O ...
- poj1905 Expanding Rods(二分)
题目链接:https://vjudge.net/problem/POJ-1905 题意:有一根长len的木棍,加热了n度,长度会膨胀为len*(1+n*c),c为膨胀系数.现在把这根木棍夹在两堵墙之间 ...
- 【Python】【demo实验6】【练习实例】【奖金发放计算(阶梯)】
题目: 企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%:利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%:20万到40万 ...
- tp5项目报错no input file specified解决
关于这个问题众多解决方案 1.php版本问题>5.6,把php版本改成5.5版本 2.入口文件同级目录下的.htaccess文件 RewriteRule ^(.*)$ index.php/$1 ...
- MyBatis 体系结构、根配置文件、Mapper映射文件
一.MyBatis的体系结构 1.SqlSessionFactory对象 SqlSessionFactory对象是MyBatis的管理核心,它是单个数据库映射关系经过编译后的内存镜像,是创建SqlSe ...
- Spring实战(八)bean装配的运行时值注入——属性占位符和SpEL
前面涉及到依赖注入,我们一般哦都是将一个bean引用注入到另一个bean 的属性or构造器参数or Setter参数,即将为一个对象与另一个对象进行关联. bean装配的另一个方面是指将一个值注入到b ...
- c#获取桌面路径和bin文件的路径
string path = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory): 生成的运行bin文件下的路径: ...
- A Pythonic Card Deck: __len__ & __getitem__ & for 循环的嵌套
1. 列表生成式的嵌套 for 循环: 示例如下: li1 = range(1,6) li2 = list("ABC") # list("ABC") 的结果为 ...
- opencv3.3.1 + win64 + contrib + cuda 编译
一 . opencv3.3.1 + win64 + contrib + cuda 编译 1.下载各种依赖 下载安装cuda https://developer.nvidia.com/cuda- ...