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. 3分钟Markdown快速入门与使用

    Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. 注意:图片为效果图 1 标题 #开头代表标题,几个#号代表几级,最高支持六级标题 ...

  2. 可视化,matplotlib,seaborn,plotly,pyecharts等等

    画频率直方图 import pandas as pd import matplotlib.pyplot as plt Series.value_counts().plot.bar() plt.show ...

  3. Spark Streaming的实时词频和累加词频统计

    (注:运行环境是Ubuntu16, pycharm) 1. 按时段统计:获取scoket端口传输的数据(英文数据即可,方便分词),统计各个时间段内每个单词出现的次数(每个时间段都分别统计,需要使用的关 ...

  4. prometheus 监控elasticsearch

    1.安装: 如果有elk单独用户,切换到该用户下, wget下载,进入到es安装目录,执行 ./elasticsearch-plugin install file://$(pwd)/../../ela ...

  5. 安装部署FastDFS

    安装部署FastDFS 此篇博文是在安装好虚拟机和CentOS7的前提和转自以下几篇博客得来: 1.开启CentOS的网络连接:   1.1.网址:http://blog.csdn.net/white ...

  6. HDU 1688 Sightseeing 【输出最短路+次短路条数】

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1688 题目大意:给n个点,m条有向边.再给出起点s, 终点t.求出s到t的最短路条数+次短路条数. 思 ...

  7. 查找担保圈-step5-比较各组之间的成员,对组的包含性进行查询,具体见程序的注释-版本2

    USE [test] GO /****** Object: StoredProcedure [dbo].[p03_get_groupno_e2] Script Date: 2019/7/8 15:01 ...

  8. nginx 报错:[crit] 12456#0: *5 SSL_do_handshake() failed (SSL: error:1408A0A0:SSL routines:SSL3_GET_CLIENT_HELLO

    解决方法: 将配置 listen ssl; 更换为: listen ; ssl on; 从版本1.15.0开始,ssl on; 指令被废弃,使用 listen 443 ssl; 代替. 具体查看官网: ...

  9. Synchronized的实现原理(汇总)

      一.Java中synchronized关键字的作用 总所周知,在并发环境中多个线程对同一个资源进行访问很可能出现脏读等一系列线程安全问题.这时我们可以用加锁的方式对访问共享资源的代码块进行加锁,以 ...

  10. python------模块基础【第二部分-time】------

    一.time UTC/GMT:世界时间 本地时间:本地时区时间 python中时间日期格式化符号: %y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01- ...