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的更多相关文章

  1. 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) ...

  2. 2016 Multi-University Training Contests

    2016 Multi-University Training Contest 1 2016 Multi-University Training Contest 2 2016 Multi-Univers ...

  3. 2016 Multi-University Training Contest 2 D. Differencia

    Differencia Time Limit: 10000/10000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tot ...

  4. 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) ...

  5. ACM: Gym 101047K Training with Phuket's larvae - 思维题

     Gym 101047K Training with Phuket's larvae Time Limit:2000MS     Memory Limit:65536KB     64bit IO F ...

  6. 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 ...

  7. 2012 Multi-University Training Contest 9 / hdu4389

    2012 Multi-University Training Contest 9 / hdu4389 打巨表,实为数位dp 还不太懂 先这样放着.. 对于打表,当然我们不能直接打,这里有技巧.我们可以 ...

  8. 2014 Multi-University Training Contest 9#11

    2014 Multi-University Training Contest 9#11 Killing MonstersTime Limit: 2000/1000 MS (Java/Others)   ...

  9. 2014 Multi-University Training Contest 9#6

    2014 Multi-University Training Contest 9#6 Fast Matrix CalculationTime Limit: 2000/1000 MS (Java/Oth ...

  10. 2016 Multi-University Training Contest 1

    8/11 2016 Multi-University Training Contest 1 官方题解 老年选手历险记 最小生成树+线性期望 A Abandoned country(BH) 题意: 1. ...

随机推荐

  1. Shell中test比较

    数字比较 比较 描述 -eq 检查是否相等 -ge 检查是否大于或等于 -gt 检查是否大于 -le 检查是否小于或者等于 -lt 检查是否小于 -ne 检查是否不等于 字符串比较 = 检查字符串1和 ...

  2. 架构模式: 服务前端的后端(BFF模式)

    架构模式: 服务前端的后端(BFF模式) 上下文 让我们假设您正在构建一个使用Microservice体系结构模式的在线商店,并且您正在实现产品详细信息页面.您需要开发产品详细信息用户界面的多个版本: ...

  3. 论文阅读 | Robust Neural Machine Translation with Doubly Adversarial Inputs

    (1)用对抗性的源实例攻击翻译模型; (2)使用对抗性目标输入来保护翻译模型,提高其对对抗性源输入的鲁棒性. 生成对抗输入:基于梯度 (平均损失)  ->  AdvGen 我们的工作处理由白盒N ...

  4. navicat建立本地连接出错解决

    使用navicat建立本地连接时报错: 2.设置用户配置项 (1) 查看用户信息 select host,user,plugin,authentication_string from mysql.us ...

  5. Lua开发环境

    下载并解压Lua源码: wget http://www.lua.org/ftp/lua-5.1.5.tar.gz tar zxvf lua-5.1.5.tar.gz cd lua-5.1.5 打开Ma ...

  6. 手把手教你用vue-clic3搭建vue-element-admin项目

    下载element-admin框架 点击该地址:https://github.com/PanJiaChen/vue-element-admin 用git clone https://github.co ...

  7. IDEA安装Git

    1.下载Git 官方地址为:https://git-scm.com/download/win 2.下载完之后,双击安装 3.选择安装目录 4.选择组件 5.开始菜单目录名设置 6.选择使用命令行环境 ...

  8. 16.Azkaban的安装

    工作流调度器azkaban 2.1 概述 2.1.1为什么需要工作流调度系统 l  一个完整的数据分析系统通常都是由大量任务单元组成: shell脚本程序,java程序,mapreduce程序.hiv ...

  9. /tmp/orbit-oracle/目录inode耗尽

    [root@iZ25zpeock2Z orbit-oracle]# cd /[root@iZ25zpeock2Z /]# du -cks * |sort -nr|head -n 20du: canno ...

  10. mysql查询出数据更新到另一张表

    公司今天有个需求,大体意思就是把一个表的玩家游戏场数统计出来,然后赋值到另一张表的字段上,说白了就是两张表,但是查询出来的玩家账号和次数是多条,尝试很多种写法都没用,最后用了最笨的方式解决. -- - ...