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. ...
随机推荐
- LeetCode.1160-找到可以由给定字符组成的字符串(Find Words That Can Be Formed by Characters)
这是小川的第411次更新,第443篇原创 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第262题(顺位题号是1160).你会得到一个字符串单词数组和一个字符串chars.如果字符串可 ...
- 安装zabbix4.0 LTS
一.环境准备 1.https://www.zabbix.com/download?zabbix=4.4&os_distribution=centos&os_version=7& ...
- CSP考试策略
准备 带好手表,身份证,准考证,文具,和矿泉水(热水). 考试之前 如果时间比较充足,可以重启测试保护是否解开. 调整显示屏亮度,检查键盘.鼠标. 关掉拓展名隐藏. 写个简单程序测试是否有异常,测试对 ...
- 通过js判断整型,浮点型,布尔型,字符串型
<!DOCTYPE html> <html > <head> <meta charset="UTF-8"> < ...
- 小菜鸟之Phyhon
# print("输入成绩",end="") # src=input() # print("成绩",end=src)#成绩 # print( ...
- Kafka主题体系架构-复制、故障转移和并行处理
本文讨论了Kafka主题的体系架构,讨论了如何将分区用于故障转移和并行处理. Kafka主题,日志和分区 Kafka将主题存储在日志中.主题日志分为多个分区.Kafka将日志的分区分布在多个服务器或磁 ...
- 对Android应用签名
Android使用包名作为唯一标识,当在同一台手机安装两个包名相同的应用,后安装的应用就会覆盖前面的应用(签名相同的情况下). 签名有两个主要作用: 1.确定发布者身份.由于应用开发者可以通过使用相同 ...
- E.Magic Master(The 2019 Asia Nanchang First Round Online Programming Contest)
直接模拟orhttps://blog.csdn.net/liufengwei1/article/details/100643831
- 题解 P3627 【[APIO2009]抢掠计划】
咕了四个小时整整一晚上 P3627 [APIO2009] 抢掠计划(https://www.luogu.org/problemnew/show/P3627) 不难看出答案即为该有向图的最长链长度(允许 ...
- php exec执行不等待返回结果
windows中:pclose(popen("start php.exe test.php","r"));lnuix中: pclose(popen(" ...